Verwenden von JBoss AS 6.1.0 Final mit dem Bereitstellungsprofil "default".JMS-Produzent in Session-Bean auf JBoss AS 6 löst Ausnahme aus
Ich möchte eine JMS-Nachricht von einer Session Bean senden. Ich habe die folgenden:
/server/default/deploy/my-HornetQ-jms:
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
<queue name="queue/DummyMDBean">
<entry name="jms/DummyMDBean"/>
</queue>
</configuration>
In der Bohne ich habe:
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class Demo implements DemoRemote, DemoLocal {
...
@Resource(mappedName = "java:/ConnectionFactory")
private static QueueConnectionFactory queueConnectionFactory;
@Resource(mappedName = "/jms/DummyMDBean")
private static Queue queue;
public void example() {
QueueConnection queueConnection = null;
try {
queueConnection = queueConnectionFactory.createQueueConnection();
} catch (JMSException e) {
System.out.println("Exception occurred: " + e.toString());
e.printStackTrace();
}
try {
QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(queue);
// Send a text message:
TextMessage textMessage = queueSession.createTextMessage();
textMessage.setText("Hello World");
queueSender.send(textMessage);
} catch (JMSException e) {
System.out.println("Exception occurred: " + e.toString());
e.printStackTrace();
} finally {
closeConnection(queueConnection);
}
}
ich die folgende Fehlermeldung erhalten:
15:46:05,011 INFO [STDOUT] Exception occurred: javax.jms.JMSException: Failed to create session factory
15:46:05,661 ERROR [STDERR] javax.jms.JMSException: Failed to create session factory
15:46:05,666 ERROR [STDERR] at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:605)
15:46:05,667 ERROR [STDERR] at org.hornetq.jms.client.HornetQConnectionFactory.createQueueConnection(HornetQConnectionFactory.java:131)
15:46:05,668 ERROR [STDERR] at org.hornetq.jms.client.HornetQConnectionFactory.createQueueConnection(HornetQConnectionFactory.java:126)
15:46:05,669 ERROR [STDERR] at com.demo.Demo.example(Demo.java:109)
...
15:46:05,782 ERROR [STDERR] at java.lang.Thread.run(Thread.java:722)
15:46:05,783 ERROR [STDERR] Caused by: java.lang.NullPointerException
15:46:05,784 ERROR [STDERR] at org.hornetq.core.client.impl.ServerLocatorImpl.removeFromConnecting(ServerLocatorImpl.java:682)
15:46:05,784 ERROR [STDERR] at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:751)
15:46:05,785 ERROR [STDERR] at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:601)
15:46:05,785 ERROR [STDERR] ... 180 more
Zeile 109 ist die "queueConnection = queueConnectionFactory.createQueueConnection();".
Ich habe nichts von der Standardeinstellung außer der Xml oben geändert. Irgendwelche Ideen über das Problem und wie man es repariert?
Ohne Bezug auf die Frage, aber Ihr erster Versuch/Fang scheint nicht viel Sinn zu machen. Wenn es dich wirft, fahre einfach fort (mit einer ungültigen Verbindung). Der zweite try catch führt genau die gleiche Protokollierung durch. Sie können den ersten Fang und den zweiten Versuch entfernen. –
@Arjan ich weiß, aber das ist nur ein Test, um herauszufinden, warum es scheitern. – roterl