2014-11-06 101 views
0

我試圖在JBoss 7.1.1的Jax-RS(RestEasy)服務中使用CDI(焊接)。 注射工作正常,如果我在例如一個簡單的servlet,但只要我在Jax-RS服務中做同樣的事情,它仍然是null。沒有錯誤,只是沒有注射。當閱讀the JBoss RestEasy CDI Integration page這一切看起來很容易。如果與RestEasy結合使用,焊接CDI不會注入

有些事情我想:

  1. 使用RestEasy的3.0.9.Final與編譯依賴
  2. 使用RestEasy的2.3.2.Final與提供的依賴
  3. 添加RestEasy的3.0.9.Final作爲JBoss的模塊和使用的是,代替原來的2.3.2.Final
  4. 添加依賴於RestEasy的-cdi.jar(在編譯和提供變體)
  5. 添加清單依賴性所解釋here
  6. 空web.xml和一個充滿simular到this one
  7. 添加@RequestScoped@Named到REST服務,所以它會被焊接拾起

非上述(和其他一些野生的嘗試)的引線任何事情。 有什麼建議嗎?

+0

您是否嘗試過設置這樣你的休息應用程序? http://stackoverflow.com/questions/26654634/java-ee7-javax-ws-rs-injection-of-ejb-in-rest-resource/26660018 – mendieta 2014-11-06 17:23:07

回答

2

我自己找到了這個問題的解決方案。知道了解決方案,結果我沒有在我的問題中展示完整的圖片。

在我XxxApplication(延伸javax.ws.rs.core.Application)我添加了一個新的XxxService實例(!)的單列表。

而在我的XxxService中,我做了new B(),其中B類有@Inject C這是剩餘的null

原來,實例化XxxService和類B導致了這個問題。

當添加XxxService.class在XxxApplication(而不是增加new XxxService()到單列表)和XxxService使用@Inject B,所有注射的正常工作,其中包括B的@Inject C類別列表

相關問題