我想通過Geronimo的JNDI查找QueueConnectionFactory
和Queue
。 Queue
返回正常,但QueueConnectionFactory
查找始終返回空值。它不會拋出NamingException
,這是我所期望的,如果JNDI名稱不正確。爲什麼我的JNDI查找QueueConnectionFactory返回null?
任何人都可以看到我做錯了什麼?測試代碼下面的輸出:
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);
}
}
在情況下,它有差別:我已添加OpenEJB的客戶端 - 3.0.1.jar,Geronimo的ejb_3.0_spec-1.0.1.jar和ActiveMQ的-core-4.1.2-G20090207.jar到類路徑中,我的jndi.properties文件具有屬性:
java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory java.naming.provider.url = ejbd://127.0.0.1:4201
哇。感謝您的深思熟慮的答案。 – 2009-11-17 20:05:48