Wie behebe ich javax.jms.JMSException: Verbindung konnte nicht hergestellt werden?Java

Java-Forum
Anonymous
 Wie behebe ich javax.jms.JMSException: Verbindung konnte nicht hergestellt werden?

Post by Anonymous »

Wir stellen (mehrere JAVA-Anwendungen) eine Verbindung zu IBM MQ unter Verwendung des JMS/JNDI-Ansatzes in einer WebSphere Application Server-Umgebung her.
Jede Anfrage folgt dem folgenden allgemeinen Ablauf:
  • Erstellen Sie einen JNDI InitialContext mit

    Code: Select all

    com.ibm.websphere.naming.WsnInitialContextFactory
  • Suchen Sie die JMS ConnectionFactory über JNDI

    (zum Beispiel: jms/ABCD)
  • Suchen Sie die Anfragewarteschlange und Antwortwarteschlange über JNDI
  • Erstellen Sie eine JMS-Verbindung aus der ConnectionFactory
  • Erstellen Sie eine nicht-transaktionierte JMS-Sitzung mit AUTO_ACKNOWLEDGE
  • Starten Sie die Verbindung
  • Erstellen Sie eine MessageProducer
  • Erstellen und senden Sie die MQ-Anforderungsnachricht (CIH-Format)
  • Schließen Sie alle JMS- und JNDI-Ressourcen im final-Block
    Ebenso haben wir die Sitzungsverbindung für den Verbraucher erstellt.
Das JNDI Die Logik zur Erstellung der JMS-Verbindung lautet wie folgt:

Code: Select all

context = new InitialContext(environment);

ConnectionFactory connectionFactory =
(ConnectionFactory) context.lookup("jms/ABCD");

Destination requestQueue =
(Destination) context.lookup(requestQueueName);

Destination replyQueue =
(Destination) context.lookup(replyToQueueName);

connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
connection.start();

producer = session.createProducer(requestQueue);
producer.send(message);
Gelegentlich, wenn mehrere Anwendungen diesen JMS-Dienst gleichzeitig aufrufen, löst der Anwendungsserver während der Verbindungserstellung die folgende Ausnahme aus:

Code: Select all

javax.jms.JMSException: Failed to create connection
at com.ibm.ejs.jms.JMSCMUtils.mapToJMSException(JMSCMUtils.java:140)
at com.ibm.ejs.jms.JMSConnectionFactoryHandle.createConnection(JMSConnectionFactoryHandle.java:277)
at com.hdb.jms.JMSServiceSender.doCicsRequestReplySend(JMSServiceSender.java:84)
at com.hdb.jms.JMSService.CicsRequestReply(JMSService.java:30)
Wenn dieses Problem auftritt:
  • laden
Alle JMS- und JNDI-Ressourcen werden explizit im final-Block geschlossen, um Ressourcenlecks zu vermeiden:

Code: Select all

finally {
if (producer != null) {
producer.close();
}
if (session != null) {
session.close();
}
if (context != null) {
context.close();
}
if (connection != null) {
connection.close();
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post