【问题标题】:Inject JMS ConnectionFactory and Queue into a WebSocket?将 JMS ConnectionFactory 和队列注入 WebSocket?
【发布时间】:2014-09-17 10:45:08
【问题描述】:

我有一个在 JavaEE 7 中实现的简单 WebSocket,我想充当 JMS 生产者。但是,当我尝试将 ConnectionFactoryQueue 作为 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;

  ...

}

我不能注入这些Resources 有什么原因吗?这在 JavaEE WebSockets 中不支持吗?我在 Wildfly 8.1 上进行部署,我的应用程序是一个简单的 WAR,其中只有 WebSocket 实现类。

【问题讨论】:

标签: jakarta-ee jboss websocket jms wildfly


【解决方案1】:

使用某些 CDI bean 的 JMS 注入似乎存在一些问题。通过使用@javax.inject.Singleton@javax.ejb.Stateless,我能够使注入工作。在这两种情况下,我都删除了 @Named 注释。我没有测试Queue的注入,只是ConnectionFactory

我使用仅包含 WebSocket 类的简单 Web 项目使用最新的 Glassfish 4 升级版本进行了测试:

@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);
    }
}

【讨论】:

  • 谢谢!我一定会在 Wildfly/JBoss 中尝试一下,看看它是否适合我。
猜你喜欢
  • 2015-03-21
  • 2012-02-12
  • 2014-04-23
  • 2015-07-19
  • 2020-01-04
  • 2017-03-31
  • 2011-10-10
  • 2015-07-01
  • 2020-10-20
相关资源
最近更新 更多