【发布时间】:2019-05-15 20:46:24
【问题描述】:
我在从旧的 JBoss 迁移到 Wildfly 14(或其他一些最新版本)时遇到了麻烦。
目前我坚持使用 JMS 配置。
这是配置:
- 在
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">我添加了两个队列定义,代码如下<jms-queue name="MyQueue" entries="java:/jms/queue/MyQueue"/> <jms-queue name="OtherQueue" entries="java:/jms/queue/OtherQueue"/> - 在上述子系统定义中,我添加了以下连接工厂定义
<connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm" /> - 在我的应用程序初始化代码中,我有实例化这些 jms 队列的代码。
在我的课堂上,我有以下字段
private static final String JMS_CONNECTION_FACTORY_JNDI_NAME = "java:/ConnectionFactory";
@Resource(mappedName=JMS_CONNECTION_FACTORY_JNDI_NAME)
ConnectionFactory factory;
在这个类中我有以下方法:
public void openJmsSession() {
try {
connection = factory.createConnection();
Context jndiContext = getInitialContext();
queue =(Queue) jndiContext.lookup(JMS_MAIL_QUEUE_NAME);
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
} catch (NamingException e) {
logger.error("Naming exception during opening JMS session", e);
} catch (JMSException e) {
logger.error("JMS exception during opening JMS session", e);
}
}
connection = factory.createConnection(); 行抛出 NPE,因为工厂为空。
【问题讨论】:
-
您实际上是要定义自定义连接工厂还是只定义目的地?
-
@WillT ,我想让我的代码在新服务器而不是旧服务器上工作。对于 JBoss,使用了
项,但我不知道该为 wildfly 使用什么... -
@WillT,在之前的配置中,只定义了两个队列,没有自定义连接工厂。有没有默认的连接工厂?如果答案是“是”,- 那怎么用呢?
标签: java jboss jms ejb wildfly