NotSerializableException:com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate

时间:2013-01-03 11:58:48

标签: jsf glassfish ejb hazelcast

我正在使用Hazelcast HttpSession Clustering和两个Glassfish 3.1.2.2实例。我使用@EJB或@Inject批注在托管bean中注入EJB。在@ViewScoped@SessionScoped托管bean中,我正在

com.hazelcast.nio.HazelcastSerializationException:
 java.io.NotSerializableException: 
  com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate Exception. 

当我使用transient关键字标记@EJB字段时,我没有得到SerializationException。但是,在反序列化后,我的ejbs没有重新注入,然后,我得到NullPointerException

我该如何处理这个问题? (注:Hazel vers:2.4)

2 个答案:

答案 0 :(得分:1)

您是否尝试过让EJB类实现Serializable?

答案 1 :(得分:0)

除了EJB类之外,还要确保嵌套的所有对象也是Serializable。

有一个VM选项可以向异常添加详细信息。它将显示根序列和嵌套类无法序列化并帮助您弄清楚您缺少的内容:

-Dsun.io.serialization.extendedDebugInfo=true

您可能还想检查是否为每个Serializable类定义了 serialVersionUID ,包括超类(如果它们是可序列化的)

注意:您的代码有时可以在没有serialVersionUID的情况下运行,但read the last paragraph in Serializable's javadoc可以了解为什么它会成为问题,具体取决于环境。