Jakarta ee 将JMS连接工厂和队列注入WebSocket?

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

我有一个用JavaEE7实现的简单WebSocket,我想充当JMS生产者。但是,当我尝试将
连接工厂
队列
作为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中尝试一下,看看它是否适合我。