当我尝试在我的服务器中执行一项服务时遇到以下异常,该服务器部署为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
答案 0 :(得分:2)
有可能,PmsService中的一个(非瞬态)字段本身并不实现Serializable。
Serializability是一个递归属性;一个类不是,并且不能序列化,除非它的所有字段都可以序列化。检查字段中是否存在无法序列化的类,并使该类可序列化(如果它是您自己的类),切换到可序列化的替代方法,或声明字段瞬态(如果它不是,则仅执行后一种情况对象状态的一部分;例如,您的任务当前正在运行的线程。)
答案 1 :(得分:0)
您的某个服务字段是否属于在您引用的库JAR之一中声明的类型?
使用开放目录部署时,您的类路径可能存在问题。通过EAR或JAR进行部署具有很大的优势,即类路径搜索顺序是预先确定的,因为它始终分别在 EAR或JAR中启动。这样,始终首先找到引用的JAR的特定版本。
现在,当使用“开放部署”时,您的某个库JAR可能与您的应用程序服务器使用的版本冲突,并且(A)首先找到这些版本而(B)不可序列化。