【问题标题】:How do I inject a JMS resource in a JAX-RS REST Web Service?如何在 JAX-RS REST Web 服务中注入 JMS 资源?
【发布时间】:2013-04-24 01:40:33
【问题描述】:

使用 GlassFish 3.1.2.1,我配置了一个 JMS 连接工厂和一个队列,可以使用 @Resource 注释将其注入 JavaServer Faces 托管 bean。

但是,当我尝试在同一项目的 JAX-RS REST Web 服务中使用这些 JMS 资源时,似乎缺少 connectionFactory 注入,并且在执行该行时出现 NullPointerException:

connection = exampleQueueFactory.createConnection();

注入代码是

@Resource(mappedName = "ExampleQueue")
private Queue exampleQueue;
@Resource(mappedName = "ExampleQueueFactory")
private ConnectionFactory exampleQueueFactory;

当我在 JSF 托管 bean 中成功使用相同的注入时,我猜 GlassFish 服务器在查找注入点时会跳过 JAX-RS 类。是否缺少其他配置?

【问题讨论】:

标签: java glassfish jms jax-rs java-ee-6


【解决方案1】:

基于对NullPointer in Glassfish when inject JMS @Resource 的回答,我添加了一个@javax.ejb.Stateless 注释并且它有效。

后续问题:这是在 JAX-RS 资源类中启用 JMS 资源注入的推荐方法吗?

【讨论】:

  • 为了正确分离你的代码,我不推荐它。为了激活任何注入 - CDI 或 EJB,您需要 JAX-RS 端点是 CDI 或 EJB 组件。你也可以给它 CDI 的 @RequestScoped 来启用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 2011-03-02
  • 2016-08-09
相关资源
最近更新 更多