2009-12-02 76 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)不可序列化。