Tôi gặp khó khăn trong việc hiểu phần JNDI của ví dụ JMS sau.Tìm kiếm JNDI hoạt động như thế nào trong ví dụ JMS này?
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();
}
}
Cuốn sách mà tôi nhận được ví dụ này không đề cập đến thiết lập để thực hiện tra cứu JNDI này có thể. Ví dụ, trong
ConnectionFactory connectionFactory = (ConnectionFactory)
jndiContext.lookup("jms/javaee7/ConnectionFactory");
không nên có một số loại máy chủ đang chạy để các jndiContext
có thể nhận được một tổ chức của một đối tượng ConnectionFactory
? Nói chung, cần thiết lập loại thiết lập nào để tra cứu JNDI ở trên hoạt động?
Cảm ơn bạn rất nhiều.
Nó sẽ không hoạt động mà không cần thiết lập nhiều hơn, trừ khi nó có nghĩa là một phần của webapp thay vì chương trình độc lập. Bạn sẽ cần phải xác định. Nhà máy ngữ cảnh ban đầu và URL ngữ cảnh để bắt đầu. Xem Hướng dẫn Oracle JBDI để biết ví dụ. – EJP
@EJP tải 'ConnectionFactory'' jndi.properties' như thế nào? Mặc dù có [ví dụ về ldap] (https://docs.oracle.com/javase/jndi/tutorial/ldap/misc/url.html#MULTI) Tôi không thấy giải pháp nào trong hướng dẫn JNDI trả lời câu hỏi này. – Thufir