1
我在使用對話作用域bean的JBoss AS 7.1.1上運行基於CDI的應用程序。 我需要從RESTeasy服務調用其中的一個bean。不幸的是,當我調用範圍的bean在REST服務中使用對話作用域Bean
@Inject
private ConversationBean service;
@GET
@Produces("text/html")
@Path("/book")
public void bookTicket(Long l) {
service.book(l);
. . . .
}
對話將返回以下錯誤:
產生的原因:org.jboss.weld.context.ContextNotActiveException:WELD-001303的範圍類型的javax沒有有效的上下文。 enterprise.context.ConversationScoped
是否有解決此問題的方法?
謝謝!
你能解釋爲什麼'javax.enterprise.context.SessionScoped'確實在RESTeasy中有效嗎?或者這是由於我將RESTeasy與從同一JBoss(7.1.1-Final)服務的AngularJS網頁結合使用的事實? – gkephorus
我敢打賭,如果你看了一些東西,它會在每次訪問時創建一個新的會話範圍的bean代理,或者實際上你看到狀態在請求之間被正確保留了嗎? – LightGuard
是的,一個cookie發送給客戶端,當這個cookie被髮回時,這個會話被保存在服務器中。 (注意:我們確實使用完整的瀏覽器作爲REST客戶端,我可以想象當您使用無狀態客戶端時,Cookie將不會被髮回,因此您將丟失會話) – gkephorus