【发布时间】:2012-04-15 09:52:52
【问题描述】:
使用带有“默认”部署配置文件的 JBoss AS 6.1.0 Final。
我喜欢从会话 Bean 发送 JMS 消息。 我设置了以下内容:
/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>
在我拥有的 bean 中:
@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);
}
}
我收到以下错误:
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
第 109 行是“queueConnection = queueConnectionFactory.createQueueConnection();”。
除了上面的 xml 之外,我没有对默认值进行任何更改。 关于这个问题的任何想法,以及如何解决它?
【问题讨论】:
-
与问题无关,但您的第一次尝试/捕获似乎没有多大意义。如果它抛出你只需继续(使用无效连接)。第二个 try catch 执行完全相同的日志记录。您可以删除第一次捕获和第二次尝试。
-
@Arjan 我知道,但这只是一个尝试找出失败原因的测试。