我很難理解以下JMS示例的JNDI部分。JNDI查找如何在此JMS示例中工作?
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
@EJP'ConnectionFactory'如何加載'jndi.properties'?雖然有[ldap示例](https://docs.oracle.com/javase/jndi/tutorial/ldap/misc/url.html#MULTI),但我在JNDI教程中沒有看到解決方案,它可以回答這個問題。 – Thufir