2013-03-18 76 views
1

如果沒有http會話可用(例如,使用RESTful-WS?),是否可以使用CDI- @ Sessionscoped?如果沒有,是否有替代@SessionScoped?我在問,因爲我需要一個應用程序狀態,但我也被迫使用JAX-RS。如何在沒有http會話的情況下使用CDI- @ SessionScoped

出於某種原因,我可以在RESTful-Service中注入@SessionScoped bean,但我知道這至少按照慣例是不允許的。同樣使用@SessionScoped需要在每個客戶端請求的頭部中發送JSessionID-Cookie,並且由於該服務在非瀏覽器環境中使用,所以我不能確定Cookie是否可用...

回答

2

對於REST環境,在瀏覽器客戶端(如果REST服務器支持會話)情況下,@SessionScoped將作爲例外工作,但在非瀏覽器客戶端(如果客戶端忽略協議)的情況下,將在每次調用時創建新的bean。

也許@ApplicationScoped對你有好處?

+0

謝謝你的回答。 ApplicationScoped不起作用,因爲我想要SessionScoped的行爲。但我希望獨立於HTTP會話的行爲。你知道我怎麼能做到這一點? – user1727072 2013-03-19 08:12:34

+0

你是什麼意思?你想使用一些不同類型的會話,而不是http? – 2013-03-19 08:17:14

+0

。我想要一個獨立於HTTP會話的SessionScope。我想要我自己的會話定義。 – user1727072 2013-03-19 08:54:37

2

您可以隨時創建自己的上下文和範圍。

相關問題