0

我使用带有两个 Glassfish 3.1.2.2 实例的 Hazelcast HttpSession Clustering。我使用@EJB或 @Inject 注释在托管 bean 中注入 EJB。在@ViewScoped@SessionScoped托管豆中,我得到

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

当我@EJB用瞬态关键字标记该字段时,因此,我没有得到SerializationException. 但是,在反序列化之后,我的 ejb 没有重新注入,然后,我得到了一个NullPointerException.

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

4

2 回答 2

1

你试过让你的 EJB 类实现 Serializable 吗?

于 2013-01-04T09:30:18.803 回答
0

除了您的 EJB 类之外,请确保嵌套在其中的所有对象也是可序列化的。

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

-Dsun.io.serialization.extendedDebugInfo=true

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

注意:您的代码有时可能会在没有 serialVersionUID 的情况下运行,但请阅读 Serializable 的 javadoc 中的最后一段以了解为什么它会成为问题,具体取决于环境。

于 2014-08-19T03:37:38.053 回答