Jakarta ee 将JMS连接工厂和队列注入WebSocket?
我有一个用JavaEE7实现的简单WebSocket,我想充当JMS生产者。但是,当我尝试将Jakarta ee 将JMS连接工厂和队列注入WebSocket?,jakarta-ee,jboss,websocket,jms,wildfly,Jakarta Ee,Jboss,Websocket,Jms,Wildfly,我有一个用JavaEE7实现的简单WebSocket,我想充当JMS生产者。但是,当我尝试将连接工厂和队列作为JavaEE@Resource注入它时,我总是看到它是空的。我的代码如下所示: @Named @ServerEndpoint("/hello") public class WebSocketA implements Serializable { @Resource(mappedName = "java:/JmsXA") private ConnectionFactory
连接工厂
和队列
作为JavaEE@Resource
注入它时,我总是看到它是空的。我的代码如下所示:
@Named
@ServerEndpoint("/hello")
public class WebSocketA implements Serializable {
@Resource(mappedName = "java:/JmsXA")
private ConnectionFactory connectionFactory = null;
@Resource(mappedName = "java:jboss/exported/jms/queue/test")
private Queue testQueue = null;
...
}
我不能注入这些
资源
s有什么原因吗?JavaEE WebSockets中不支持这一点吗?我在Wildfly 8.1上部署,我的应用程序是一个简单的WAR,其中只有WebSocket实现类。使用某些CDI bean的JMS注入似乎存在一些问题。我能够通过使用@javax.inject.Singleton
或@javax.ejb.Stateless
使注入工作。在这两种情况下,我都删除了名为的注释。我没有测试队列
的注入,只是测试连接工厂
我使用最新的Glassfish 4升级版测试了一个简单的web项目,该项目只包含WebSocket类:
@Stateless
@ServerEndpoint("/hello")
public class WsTest implements Serializable {
private static final Logger LOG = Logger.getLogger(WsTest.class.getName());
@Resource(mappedName = "java:comp/DefaultJMSConnectionFactory")
private ConnectionFactory connectionFactory = null;
@OnOpen
public void onOpen(Session session) throws IOException {
LOG.log(Level.INFO, "onOpen {0}", connectionFactory);
session.getBasicRemote().sendText("onOpen");
}
@OnMessage
public String echo(String message) {
LOG.log(Level.INFO, "onMessage({0}) {1}", new Object[]{message, connectionFactory});
return message + " (from your server)";
}
@OnError
public void onError(Throwable t) {
LOG.log(Level.INFO, "onError {0}", connectionFactory);
}
@OnClose
public void onClose(Session session) {
LOG.log(Level.INFO, "onClose {0}", connectionFactory);
}
}
CDI和WebSockets()存在已知问题,但它们不会影响
@Resource
注入。您是否尝试过其他服务器,比如GlassFish4,以确保它不是Wildfly问题?我没有。我们的部署环境是JBoss/Wildfly,因此我们需要确保它能够在该平台上工作。不幸的是,如果它在Glassfish上工作,它对我们没有帮助。您确定配置的JNDI名称正确吗?您可以手动查找要测试的JNDI名称,请参阅,例如,谢谢!我一定会在Wildfly/JBoss中尝试一下,看看它是否适合我。