我想在我的Java EE 7 WebSocket端點中注入一個@RequestScoped
CDI bean。WebSocket端點和CDI注入:沒有活動上下文範圍RequestScoped
但是我收到錯誤WELD-001303: No active contexts for scope type javax.enterprise.context.RequestScoped
。
我在做什麼錯,爲什麼它是不可能的?
@Named
@RequestScoped
public class Storage {
}
其中我@Inject
在端點這樣的:
@ServerEndpoint("/serverpush")
public class ContratoEndpoint {
@Inject
private Storage storage;
}
而且我得到以下堆棧跟蹤:
org.jboss.weld.context.ContextNotActiveException: WELD-001303: No active contexts for scope type javax.enterprise.context.RequestScoped
at org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:689)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.getIfExists(ContextualInstanceStrategy.java:90)
at org.jboss.weld.bean.ContextualInstanceStrategy$CachingContextualInstanceStrategy.getIfExists(ContextualInstanceStrategy.java:165)
at org.jboss.weld.bean.ContextualInstance.getIfExists(ContextualInstance.java:63)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:83)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.getInstance(ProxyMethodHandler.java:125)
@BonanzaOne @Rouliboy雖然這是一個很好的方法,但我會首先嚐試一個已經存在於Weld **中的**。如果你設置了對Weld API的依賴關係,那麼你可以使用預定義的攔截器綁定「@ ActivateRequestContext」來註釋你的方法/類,而這正是你所尋找的。您可以在[Weld Doc](http://docs.jboss.org/weld/reference/latest/en-US/html_single/#_request_context)中閱讀更多內容。雖然這最初是爲SE環境設計的,但它應該在EE中工作。 – Siliarus
@Siliarus:我不知道這一點,謝謝你的信息! – Rouliboy