2009-12-02 82 views
0

當我試圖在作爲EJB2.0無狀態會話bean部署的服務器中執行一項服務時,出現以下異常。錯誤編組返回;

Error executing services::error marshalling return; nested exception is: 
java.io.NotSerializableException: xxx.xxx.xxx.PmsService 

這裏xxx.xxx.xxx.PmsService是我的類,它已經實現java.io.Serializable接口

可以請你幫我得到這個解決。

MUR

回答

2

機會是,在PmsService您(非瞬態)的領域之一本身並沒有實現Serializable接口。

可串行化是一種遞歸屬性;一個類不是,也不能被序列化,除非它的所有字段都可以被序列化。檢查你的字段中的不能被序列化的類,並且讓這個類可序列化(如果它是你自己的類),切換到可序列化的替代方法,或者聲明場瞬態(只有在後面的情況下才會這樣做,如果它不是真的部分對象狀態;例如你的任務當前正在運行的線程)。

+0

嗨,感謝您的快速回復,但我忘了一件事情是它在正常的控制檯部署中很好,但我試圖打開目錄部署,即將所有的jar/wars/lib打開爲文件夾結構..然後在此我遇到異常情況.. – mur 2009-12-02 11:56:29

0

難道它的一個服務的字段是一種在您引用的庫JAR中聲明的類型?

使用開放目錄部署時,您的類路徑可能存在問題。通過EAR或JAR進行部署有一個很大的好處,即類路徑搜索順序是預先確定的,因爲它始終分別在內啓動EAR或JAR。這樣,引用的JAR的特定版本總是首先被找到。

現在,當使用「開放部署」時,您的某個庫JAR可能與您的應用程序服務器使用的版本衝突,並且(A)首先發現這些版本,(B)不可序列化。