2016-02-18 3 views
1

Когда я запускаю приложение, у меня есть ошибка в соединении JNDI. Точно, ошибка происходит на lookup. Вот код:Ошибка при попытке отправить сообщение JMS

public static final String PROPERTIES_FILE = "jms-server"; //$NON-NLS-1$ 

    private static Logger logger = Logger.getLogger(JmsMessageProducer.class); 

    private static final ResourceBundle res = ResourceBundle.getBundle(PROPERTIES_FILE); 

    private static final String JBOSS_JNDI_PROVIDER_URL = res.getString("JBOSS_JNDI_PROVIDER_URL"); 

    private static final String JBOSS_JNDI_INITIAL_CONTEXT_FACTORY = res 
     .getString("JBOSS_JNDI_INITIAL_CONTEXT_FACTORY"); 

    private static final String JBOSS_JMS_CONNECTION_FACTORY = res 
     .getString("JBOSS_JMS_CONNECTION_FACTORY"); 

    private static final String JNDI_INPUT_JMS_QUEUE = res.getString("JNDI_INPUT_JMS_QUEUE"); 


    /** 
    * Send JMS Text Message 
    * 
    * @param myString 
    */ 
    @SuppressWarnings({"unchecked", "rawtypes"}) 
    public void sendJmsTextMessage(String myString) { 

     Context jndiContext = null; 
     ConnectionFactory connectionFactory = null; 
     Connection connection = null; 
     Session session = null; 
     Queue queue = null; 
     MessageProducer messageProducer = null; 

     try { 
     // [1] Create a JNDI API InitialContext object. 
     Hashtable properties = new Hashtable(2); 
     properties.put(Context.INITIAL_CONTEXT_FACTORY, JBOSS_JNDI_INITIAL_CONTEXT_FACTORY); 
     properties.put(Context.PROVIDER_URL, JBOSS_JNDI_PROVIDER_URL); 
     logger.debug("Create Jndi Context with :" + Context.INITIAL_CONTEXT_FACTORY + "=" 
       + JBOSS_JNDI_INITIAL_CONTEXT_FACTORY + " " + Context.PROVIDER_URL + "=" 
       + JBOSS_JNDI_PROVIDER_URL); 
     jndiContext = new InitialContext(properties); 

     // [2] Look up connection factory and queue. 
     logger.debug("Create connexion factory :" + JBOSS_JMS_CONNECTION_FACTORY); 
     connectionFactory = (ConnectionFactory) jndiContext.lookup(JBOSS_JMS_CONNECTION_FACTORY); 
     logger.debug("Create queue :" + JNDI_INPUT_JMS_QUEUE); 
     queue = (Queue) jndiContext.lookup(JNDI_INPUT_JMS_QUEUE); 

Так, он смотрит в jms-server.properties файлы:

JBOSS_JNDI_PROVIDER_URL = jnp://localhost:1199 
JBOSS_JNDI_INITIAL_CONTEXT_FACTORY = org.jnp.interfaces.NamingContextFactory 
JBOSS_JMS_CONNECTION_FACTORY = ConnectionFactory 

JNDI_INPUT_JMS_QUEUE = queue/Incoming1JobsQueue 

Вся ошибка, я получаю:

12: 36: 35198 ERROR JmsMessageProducer: 90 - Ошибка при попытке отправить JMS Сообщение javax.naming.NameNotFoundException: Incoming1JobsQueue не связанный на org.jnp.server.NamingServer.getBinding (Nami ngServer.java:771) at org.jnp.server.NamingServer.getBinding (NamingServer.java:779) at org.jnp.server.NamingServer.getObject (NamingServer.java:785) на сайте org.jnp.server. NamingServer.lookup (NamingServer.java:443) в org.jnp.server.NamingServer.lookup (NamingServer.java:399) на sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) в> sun.reflect.NativeMethodAccessorImpl. вызывать (NativeMethodAccessorImpl. Java: 57) в> sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAcces sorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:606) на sun.rmi.server. UnicastServerRef.dispatch (UnicastServerRef.java:322) at sun.rmi.transport.Transport $ 2.run (Transport.java:202) at sun.rmi.transport.Transport $ 2.run (Transport.java:199) at java.security.AccessController.doPrivileged (собственный метод) at sun.rmi.transport.Transport.serviceCall (Transport.java:198) at> sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:5 67) at> sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.r un0 (TCPTranspor t.java:828) в> sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.access $ 400 (TCPTr ansport.java:619) в> sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler $ 1.run (TCPTranspo rt.java:684) в> sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler $ 1.run (TCPTranspo rt.java:681) на java.security.AccessController.doPrivileged (Native Method) at> sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (TCPTransport .java: 681) at> java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. Java: 1145) в> java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor .java: 615) в java.lang.Thread.run (Thread.java:745) в> sun.rmi. transport.StreamRemoteCall.exceptionReceivedFromServer (поток RemoteCall.java:275) в> sun.rmi.transport.StreamRemoteCall.executeCall (StreamRemoteCall.java: 252) на sun.rmi.server.UnicastRef.invoke (UnicastRef.java: 161) at org.jnp.server.NamingServer_Stub.lookup (Неизвестный источник) at org.jnp.interfaces.NamingContext.lookup (NamingContext.java:728) at org.jnp.interfaces.NamingContext.lookup (NamingContext.java : 688) at ja vax.naming.InitialContext.lookup (InitialContext.java:411) at> fr.inra.grignon.persyst.web.jms.JmsMessageProducer.sendJmsTextMessage (JmsMessageProducer.Java: 74) в> fr.inra.grignon.persyst.web.servlet.DoResultats.doPost (DoResultats.ja ва: 407) в javax.servlet.http.HttpServlet.service (HttpServlet.java:650) на javax.servlet.http.HttpServlet.service (HttpServlet.java:731) в> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (Appl icationFilterChain.java:303) в> org.apache.catalina.core .ApplicationFilterChain.doFilter (ApplicationF ilterChain.java:208) в> org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52 ) в> org.apache.catalina.core.ApplicationFilterChain. internalDoFilter (Appl icationFilterChain.java:241) в> org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationF ilterChain.java:208) в> org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperV alve.java:220) в> орг .apache.catalina.core.StandardContextValve.invoke (StandardContextV alve.java:122) на org.apache.tomee.catalina.OpenEJBValve.invoke (OpenEJBValve.java:44) в> org.apache.catalina.authenticator. AuthenticatorBase.invoke (Authentica torBase.java:505) в> org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.j AVA: 170) в> org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.j AVA: 103) в> org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java: 957) в> org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineVal ve.java:116) в> org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.jav а: 423) в> org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp 11Processor.java:1079) в> орг .apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process ( AbstractProtocol.java:620) в org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoin t.java:316) в> java.util , concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. Java: 1145) в> java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor .java: 615) в> org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskTh чтения. Java: 61) в java.lang.Thread.run (Thread.java:745)

Я использую JBoss и Tomcat (оба) по некоторым причинам. И в JMX консоли JBoss, у меня есть: (вставить его как изображение для отступа)

enter image description here

Я не знаю, где проблема возникает и почему соединение не связано. Заранее спасибо за вашу помощь !

ответ

0

Если вы работаете в среде JEE, контейнер ожидает JNDI-имя, потому что вы хотите, чтобы контейнер управлял ресурсом, но не делал его изначально, поэтому создайте ресурс JMS для интересующей вас очереди затем используйте соответствующее имя JNDI для доступа к нему,

Смежные вопросы