2013-04-30 40 views
0

使用GlassFish 3.1.2.1,我配置了一個JMS連接工廠和一個隊列,可以使用@Resource註釋將其注入到JavaServer Faces managed beans中。如何在JAX-RS REST Web服務中注入JMS資源?

然而,當我嘗試在同一項目中的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類。是否缺少其他配置?

+0

相關:http://stackoverflow.com/questions/8152062/nullpointer-in-glassfish-when-inject-jms-resource – mjn 2013-04-30 07:54:24

+0

你目前的解決方案是一個柺杖,但*應該*工作,直到JAX-RS 2.0完成並且定義了JAX-RS和CDI之間的適當集成。 – Perception 2013-05-03 05:26:37

回答

0

根據對NullPointer in Glassfish when inject JMS @Resource的回答,我添加了一個@javax.ejb.Stateless註釋,它的工作原理。

後續問題:這是在JAX-RS資源類中啓用注入JMS資源的推薦方法嗎?

+0

爲了正確分離你的代碼,我不會推薦它。爲了激活任何注入 - CDI或EJB,您需要您的JAX-RS端點成爲CDI或EJB組件。你也可以給CDI的@RequestScoped啓用。 – 2013-05-01 00:30:06