2014-02-19 48 views
7

我有一個簡單的問題,但我找不到Java EE 6的答案!應該有狀態會話bean實現可序列化

一個有狀態會話bean是否應該實現Serializable?

我測試過並沒有實現java.io.Serializable,沒有不同的錯誤。

我的感覺告訴我,有狀態會話bean必須實現Serializable,因爲它可以在一個長期的會話持續...

回答

4

不,它不需要爲規範並不要求。

您可以下載並檢查從EJB規範:https://jcp.org/en/jsr/detail?id=318

+1

好的,但爲什麼?它不會被持續? – Gatschet

+1

我想你在這裏誤解了「有狀態」的含義。它只是意味着bean維護客戶端調用之間的狀態。這並不意味着bean本身將被串行化爲磁盤,如'java.io.Serializable'。 –

+0

規範中有一段:「容器在實例 及其攔截器上調用PrePassivate方法後,執行實例狀態(及其攔截器狀態)的Java編程語言序列化(或其等價物)。 「,正如你所看到的,是序列化的狀態+攔截器。 – Sergio

1

這取決於你將如何使用它:

@Remote:表示一個遠程業務接口。方法參數按值傳遞, 需要作爲RMI協議的一部分進行序列化。

@ Local:表示本地業務接口。方法參數通過引用從客戶端的 傳遞給bean。