2013-04-16 52 views
0

conversation.end被調用時conversation.id是否未重置?JavaEE6 Conversation.end不會將conversation.id重置爲1

場景:我有一個在CRUD中使用對話範圍的應用程序,所以當我訪問列表頁面時,它開始對話。轉到詳細信息,然後點擊返回將結束通話並再次開始通話。但是當我處於調試模式時,我發現當conversation.end()被稱爲對話被設置爲null時。然後,當我重新調用conversation.begin()時,conversation.id不會重置爲1,而是最後一個值+1。以這種方式行事是否正確?

更重要的是不解的是註銷後,再次登錄時,conversation.id拿起最後一個值+ 1

我的環境:Jboss的7.1.3使用JavaEE的API。

protected void beginConversation() { 
    if (conversation.isTransient()) { 
     conversation.begin(); 
    } 
} 

protected void endConversation() { 
    if (!conversation.isTransient()) { 
     conversation.end(); 
    } 
} 

所以基本上我有一個基實體(其中上面的代碼所定義。)通過所有所述背襯豆延長。當列表頁面呈現時,它將調用beginConversation。單擊詳細頁面中的後退按鈕將調用endConversation。

+0

你能告訴我們代碼嗎? –

+0

嗨@PetrMensik,我在上面添加了一些代碼。 – czetsuya

回答

1

爲什麼應該重置對話ID?

解決這些問題的最好辦法是直接具有的specification一看(你的情況CDI 1.0),其中規定,容器必須生成會話的ID,而不是如何。

檢查出this問題,其中說明它是如何在WELD中完成的。

+0

謝謝,我認爲它會重置,當我開始另一次談話。它工作正常我只是好奇,爲什麼這個id甚至在新開始的對話上增加。我想這就是它指定的方式。 – czetsuya