2014-04-13 25 views
6

Aşağıdaki JMS örneğinin JNDI bölümünü anlamakta zorlanıyorum.JNDI araması bu JMS örneğinde nasıl çalışır?

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(); 
    } 
} 

Bu Jndi arama mümkün kılmak için kurulum söz etmedi bu örneği var kitap. Örneğin,

ConnectionFactory connectionFactory = (ConnectionFactory) 
     jndiContext.lookup("jms/javaee7/ConnectionFactory"); 

yılında jndiContext bir ConnectionFactory nesnenin bir tutmak, böylece çalışan sunucunun bir tür olmalıdır? Genel olarak, yukarıda JNDI araması için ne tür bir kurulum gereklidir?

Çok teşekkür ederim.

+0

Tek bir programdan ziyade bir webapp'un parçası olması istenmedikçe, daha fazla kurulum olmadan çalışmayacaktır. Tanımlaman gerekecek. Bir başlangıç ​​içerik fabrikası ve bir başlangıç ​​için bir içerik URL'si. Örnekler için Oracle JBDI Eğitimi'ne bakın. – EJP

+0

@EJP 'ConnectionFactory'' jndi.properties' öğesini nasıl yükler? [Ldap örneği] varken (https://docs.oracle.com/javase/jndi/tutorial/ldap/misc/url.html#MULTI) JNDI eğitiminde bu soruyu cevaplayan bir çözüm görmedim. – Thufir

cevap

8

Genel olarak, JNDI, uygulama tarafından kullanılacak bir nesne kümesi sağlayan bir hizmettir. Bu servis genellikle uygulama sunucusu veya web sunucusu veya özel bir LDAP sunucusu tarafından sağlanır. İzlemeye çalıştığınız öğretici, web uygulaması bağlamında JMS öğreticisini açıklıyorsa, büyük olasılıkla uygulama sunucusunda (ör. Glassfish, JBoss) veya web sunucusunda (ör. Tomcat) yapılacak bazı kurulumlar vardır. JNDI'ye erişim yolu da sağlayıcıya bağlıdır. Genellikle, bu bir yapılandırma dosyasını (özellikler dosyası veya XML dosyası) içerir. JMS'yi kullanmanın bir başka alternatifi, ActiveMQ gibi özel bir JMS sağlayıcısını kullanmaktır. Bu şekilde, herhangi bir uygulama sunucusuna ihtiyacınız yoktur. Uygulamanız sadece bağımsız bir java uygulaması olabilir (yani bir web uygulaması değil). ActiveMQ tarafından JNDI aracılığıyla sağlanan nesnelere erişim burada açıklanmaktadır: https://activemq.apache.org/jndi-support.html. Genel JNDI eğitimi: http://docs.oracle.com/javase/tutorial/jndi/