簡體   English   中英

我如何@Inject CDI @ApplicationScoped bean到@RequestScoped JAX-RS bean?

[英]How do I @Inject a CDI @ApplicationScoped bean into a @RequestScoped JAX-RS bean?

我已將@ApplicationScoped CDI注釋添加到一個簡單的bean:

@ApplicationScoped
public class History {

然后嘗試將@Inject轉換為JAX-RS(resteasy)bean:

@RequestScoped
@Path("/history")
public class HistoryAPI {

@Inject
private History history;

但歷史仍然無效。 我在WEB-INF中有一個beans.xml文件。 我已經嘗試了很多關於這個主題的變化,但是雖然app服務器(Wildfly)承認它是從CDI開始我無法讓注入工作。 我缺少什么想法?謝謝。

ETA:我嘗試​​過一個空的beans.xml和幾個變種,最新的是:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:weld="http://jboss.org/schema/weld/beans"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
                           http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
</beans>

嘗試從HistoryAPI中刪除@RequestScoped。

wildfly-quickstart項目中有一個很好的JAX-RS示例

我在WF8 beta1上試過它,一切都很好地注入了。

奇怪......我覺得你的代碼應該有用......

我在GitHub上創建了這個問題的一個例子(使用Wildly 8.2.0.Final和Glassfish 4.1測試): https//github.com/StefanHeimberg/stackoverflow-20150993

我沒有web.xml和沒有beans.xml完成​​所有這些

測試用:

瀏覽器中3次F5到網址http:// localhost:8080 / mavenproject1-1.0-SNAPSHOT / webresources / history

輸出:

20:32:12,955 SEVERE [com.mycompany.mavenproject1.HistoryAPI] (default task-2) HistoryAPI.init() called
20:32:12,956 SEVERE [com.mycompany.mavenproject1.HistoryAPI] (default task-2) HistoryAPI.doSomething() called
20:32:12,956 SEVERE [com.mycompany.mavenproject1.History] (default task-2)  ===> History.init() called
20:32:12,956 SEVERE [com.mycompany.mavenproject1.History] (default task-2)  ===> History.doSomething() called 
20:36:09,830 SEVERE [com.mycompany.mavenproject1.HistoryAPI] (default task-3) HistoryAPI.init() called
20:36:09,831 SEVERE [com.mycompany.mavenproject1.HistoryAPI] (default task-3) HistoryAPI.doSomething() called
20:36:09,831 SEVERE [com.mycompany.mavenproject1.History] (default task-3)  ===> History.doSomething() called 
20:36:10,549 SEVERE [com.mycompany.mavenproject1.HistoryAPI] (default task-4) HistoryAPI.init() called
20:36:10,549 SEVERE [com.mycompany.mavenproject1.HistoryAPI] (default task-4) HistoryAPI.doSomething() called
20:36:10,549 SEVERE [com.mycompany.mavenproject1.History] (default task-4)  ===> History.doSomething() called 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM