我有一个 JSF-Spring 集成应用程序。该应用程序在我的非集群环境中运行良好。当在集群[wildfly 8.0.0]环境中部署应用程序时,我遇到了有关序列化的不同问题。其中一些示例是 DTO 类未实现可序列化,尝试序列化我不想序列化的 Logger 类等。
部署在集群环境中的应用程序在我的 web.xml 中具有 < distributable/> 标记,因此它会尝试跨节点进行 session 复制,但在不可序列化的情况下会失败。
所有开发人员都可能不遵循这些行中的准则,从而导致其中一些情况。
所以我的问题是,在我的测试服务器[wildfly 8.0.0](非集群环境)中查看所有这些序列化问题的最佳选择是什么。
添加一个异常(exception)详细信息以更加清晰:
Caused by: java.lang.RuntimeException: Failure to marshal argument(s)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.marshallCall(CommandAwareRpcDispatcher.java:333)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.processSingleCall(CommandAwareRpcDispatcher.java:352)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommand(CommandAwareRpcDispatcher.java:167)
... 76 more
Caused by: org.infinispan.commons.marshall.NotSerializableException: com.org.account.service.AccountExpServiceImpl
Caused by: an exception which occurred:
in field accountExpService
in field m
in object java.util.HashMap@85b67fbe
in object org.jboss.as.clustering.marshalling.SimpleMarshalledValue@85b67fbe
in object org.infinispan.commands.write.ReplaceCommand@ec0c12ad
in object org.infinispan.commands.tx.PrepareCommand@ce32eb5a
最佳答案
我们使用以下实用程序来检查 Infinispan 是否可以序列化给定对象:
org.infinispan.manager.DefaultCacheManager.getCacheManagerConfiguration().serialization().marshaller().isMarshallable(objectToCheck);
这实际上是我们测试的一部分。
关于java - 识别非集群环境中的序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28210774/