【发布时间】:2014-04-13 09:28:50
【问题描述】:
我很难理解以下 JMS 示例的 JNDI 部分。
public static void main(String[] args) {
try {
// Gets the JNDI context
Context jndiContext = new InitialContext();
// Looks up the administered objects
ConnectionFactory connectionFactory = (ConnectionFactory)
jndiContext.lookup("jms/javaee7/ConnectionFactory");
Destination queue = (Destination) jndiContext.lookup("jms/javaee7/Queue");
// Sends a text message to the queue
try (JMSContext context = connectionFactory.createContext()) {
context.createProducer().send(queue, "Text message sent at " + new Date());
}
} catch (NamingException e) {
e.printStackTrace();
}
}
我得到这个例子的那本书没有提到使这个 JNDI 查找成为可能的设置。例如,在
ConnectionFactory connectionFactory = (ConnectionFactory)
jndiContext.lookup("jms/javaee7/ConnectionFactory");
是否应该运行某种服务器以便jndiContext 可以获取ConnectionFactory 对象?一般来说,上面的 JNDI 查找需要什么样的设置才能工作?
非常感谢。
【问题讨论】:
-
如果没有更多设置,它根本无法工作,除非它是 webapp 的一部分而不是独立程序的一部分。你需要定义。一个初始上下文工厂和一个用于开始的上下文 URL。有关示例,请参阅 Oracle JBDI 教程。
-
@EJP
ConnectionFactory如何加载jndi.properties?虽然有 ldap example 我没有在 JNDI 教程中看到回答这个问题的解决方案。