Tôi đang cố tra cứu một số QueueConnectionFactory
và Queue
qua JNDI của Geronimo. Các Queue
được trả lại tốt, nhưng tra cứu QueueConnectionFactory
luôn trả về giá trị rỗng. Nó không ném một NamingException
, đó là những gì tôi mong đợi nếu tên JNDI là không chính xác.Tại sao tra cứu JNDI của tôi cho một QueueConnectionFactory trả về null?
Có ai có thể xem tôi đang làm gì sai không? Các mã kiểm tra dưới đây kết quả đầu ra:
true false
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JndiTest
{
private final static String QUEUE_NAME = "jca:/org.apache.geronimo.configs/activemq-ra/JCAAdminObject/SendReceiveQueue";
private final static String FACTORY_NAME = "jca:/org.apache.geronimo.configs/activemq-ra/JCAManagedConnectionFactory/DefaultActiveMQConnectionFactory";
public static void main(String[] args) throws NamingException
{
InitialContext ctx = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup(FACTORY_NAME);
Queue queue = (Queue)ctx.lookup(QUEUE_NAME);
System.out.println(factory == null);
System.out.println(queue == null);
}
}
Trong trường hợp nó làm cho một sự khác biệt: Tôi đã thêm OpenEJB-client-3.0.1.jar, geronimo-ejb_3.0_spec-1.0.1.jar và ActiveMQ -core-4.1.2-G20090207.jar đến đường dẫn lớp của tôi, và tập tin jndi.properties tôi có các thuộc tính:
java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory java.naming.provider.url = ejbd://127.0.0.1:4201
Rất tiếc. Cảm ơn câu trả lời chu đáo, chu đáo. –