2012-11-06 22 views
5

पर जेएमएस कनेक्शन नहीं बना सकता है मैंने कॉन्फ़िगरेशन प्रोफाइल के रूप में standalone-full.xml का उपयोग करके जेबॉस एएस 7.1.1.FINAL पर चल रहे एक जेएमएस कतार को कॉन्फ़िगर किया है।स्टैंडअलोन जावा एप्लिकेशन से जेएसएसएस एएस 7 संदेश कतार

मैंने फिर स्टैंडअलोन जावा प्रोग्राम कतार से कनेक्ट करने और जेबॉस नमूना कोड के आधार पर एक संदेश भेजने के लिए लिखा था।

public class RemoteProducer { 

    private static final Logger log = Logger.getLogger(RemoteProducer.class.getName()); 

    // Set up all the default values 
    private static final String DEFAULT_CONNECTION_FACTORY = "jms/RemoteConnectionFactory"; 
    private static final String DEFAULT_DESTINATION = "jms/queue/test"; 
    private static final String DEFAULT_USERNAME = "jmstest"; 
    private static final String DEFAULT_PASSWORD = "fluppy"; 
    private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory"; 
    private static final String PROVIDER_URL = "remote://localhost:4447"; 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     ConnectionFactory connectionFactory = null; 
     Connection connection = null; 
     Session session = null; 
     MessageProducer producer = null; 
     Destination destination = null; 
     Context context = null; 

     try { 
      // Set up the context for the JNDI lookup 
      final Properties env = new Properties(); 
      env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY); 
      env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL, PROVIDER_URL)); 
      env.put(Context.SECURITY_PRINCIPAL, System.getProperty("username", DEFAULT_USERNAME)); 
      env.put(Context.SECURITY_CREDENTIALS, System.getProperty("password", DEFAULT_PASSWORD)); 
      context = new InitialContext(env); 

      // Perform the JNDI lookups 
      String connectionFactoryString = System.getProperty("connection.factory", DEFAULT_CONNECTION_FACTORY); 
      log.info("Attempting to acquire connection factory \"" + connectionFactoryString + "\""); 
      connectionFactory = (ConnectionFactory) context.lookup(connectionFactoryString); 
      log.info("Found connection factory \"" + connectionFactoryString + "\" in JNDI"); 

      String destinationString = System.getProperty("destination", DEFAULT_DESTINATION); 
      log.info("Attempting to acquire destination \"" + destinationString + "\""); 
      destination = (Destination) context.lookup(destinationString); 
      log.info("Found destination \"" + destinationString + "\" in JNDI"); 

      // Create the JMS connection, session, producer, and consumer 
      connection = connectionFactory.createConnection(System.getProperty("username", DEFAULT_USERNAME), System.getProperty("password", DEFAULT_PASSWORD)); 
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
      producer = session.createProducer(destination); 
      connection.start(); 

      // TODO send messages 

     } catch (NamingException e) { 
      e.printStackTrace(); 
     } catch (JMSException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

दुर्भाग्य से, connectionFactory.createConnection करने के लिए कॉल एक JMS अपवाद (HornetQException[errorCode=3 message=Timed out waiting to receive cluster topology. Group:null) के साथ विफल रहता है:

प्रवेश करें:

Nov 06, 2012 3:37:42 PM de.test.jms.RemoteProducer main 
INFO: Attempting to acquire connection factory "jms/RemoteConnectionFactory" 
Nov 06, 2012 3:37:42 PM de.test.jms.RemoteProducer main 
INFO: Found connection factory "jms/RemoteConnectionFactory" in JNDI 
Nov 06, 2012 3:37:42 PM de.test.jms.RemoteProducer main 
INFO: Attempting to acquire destination "jms/queue/test" 
Nov 06, 2012 3:37:42 PM de.test.jms.RemoteProducer main 
INFO: Found destination "jms/queue/test" in JNDI 
javax.jms.JMSException: Failed to create session factory 
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:605) 
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:119) 
    at de.test.jms.RemoteProducer.main(RemoteProducer.java:60) 
Caused by: HornetQException[errorCode=3 message=Timed out waiting to receive cluster topology. Group:null] 
    at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:804) 
    at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:601) 
    ... 2 more 

प्रश्न: कोई क्लस्टर शामिल नहीं है, दोनों कार्यक्रमों पर चलने एक ही मशीन, मैंने किसी भी आईपी पते को कॉन्फ़िगर नहीं किया है। क्या किसी को पता है कि जेबॉस कॉन्फ़िगरेशन में मुझे क्या याद आ रही है?

किसी भी संकेत का स्वागत करते हैं :-)

उत्तर

6

मैं जाँच और अपने प्रोजेक्ट की Maven निर्भरता को बदलने के साथ समस्या को हल किया।

इस Maven के साथ

निर्भरता कार्यक्रम की उम्मीद के रूप में काम:

<dependency> 
    <groupId>org.jboss.as</groupId> 
    <artifactId>jboss-as-jms-client-bom</artifactId> 
    <version>7.1.1.Final</version> 
    <type>pom</type> 
</dependency> 
+0

@skowski .... बहुत बढ़िया मेरे पूरे दिन man.Saved। – SRy

0

मैं एक ही समस्या थी, लेकिन विभिन्न उत्पाद संस्करणों के साथ। विशेष रूप से, मैं हॉर्नसेट सर्वर संस्करण 2.3.25.SP13 (जेबॉस ईएपी 6.4.10 सर्वर पर एम्बेडेड) को एक संदेश भेजने के लिए स्प्रिंग बूट (संस्करण 1.4.1) एप्लिकेशन प्राप्त करने का प्रयास कर रहा था। समाधान मेरी स्प्रिंग बूट आवेदन के लिए निम्न निर्भरता को जोड़ने के लिए किया गया था:

<dependency> 
     <groupId>org.hornetq</groupId> 
     <artifactId>hornetq-jms-client</artifactId> 
     <version>2.3.22.Final</version> 
    </dependency> 
संबंधित मुद्दे