在 Wildfly 16 中旋转 WAR 时出现 Infinispan NotSerializableException
Infinispan NotSerializableException when spinning up WAR in Wildfly 16
我正在尝试 运行 我的应用程序在 2 个 Wildfly 16 节点上 运行 使用 standalone-full-ha.xml
配置以独立模式运行。当第二个节点启动时,第一个尝试 distribute/balance 默认 web
缓存到新节点。
执行此操作时,我在第一个节点的日志中看到以下错误消息,第二个节点无法启动:
13:45:48,487 ERROR [org.infinispan.remoting.rpc.RpcManagerImpl] (transport-thread--p18-t8) ISPN000073: Unexpected error while replicating: org.infinispan.commons.marshall.NotSerializableException: org.wildfly.transaction.client.ContextTransactionManager
Caused by: an exception which occurred:
in field com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.transactionManager
in object com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired@73962bdb
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.instance
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in field java.util.Collections$SynchronizedCollection.c
in object java.util.Collections$SynchronizedList@333ebcd4
in field org.jboss.weld.contexts.CreationalContextImpl.dependentInstances
in object org.jboss.weld.contexts.CreationalContextImpl@4dc7055b
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.creationalContext
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
13:45:50,718 ERROR [org.infinispan.statetransfer.OutboundTransferTask] (transport-thread--p18-t8) Failed to send entries to node node2: org.wildfly.transaction.client.ContextTransactionManager: org.infinispan.commons.marshall.NotSerializableException: org.wildfly.transaction.client.ContextTransactionManager
Caused by: an exception which occurred:
in field com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.transactionManager
in object com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired@73962bdb
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.instance
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in field java.util.Collections$SynchronizedCollection.c
in object java.util.Collections$SynchronizedList@333ebcd4
in field org.jboss.weld.contexts.CreationalContextImpl.dependentInstances
in object org.jboss.weld.contexts.CreationalContextImpl@4dc7055b
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.creationalContext
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
其他一些注意事项:
- 在启动我的一个分布在 EAR 中的 WAR 时失败,但没有启动同样部署在 EAR 中的其他 2 个 WAR
- 我的
web.xml
被标记为 <distributable/>
所有 3 个 WAR
- 我的其他缓存似乎复制得很好
我似乎无法弄清楚 ContextTransactionManager
在哪里使用,或者为什么它被序列化到会话缓存中。我假设它可能在我的代码中的某个地方,但我不知道从哪里开始寻找。如有任何帮助,我们将不胜感激!
更新 (05/28/2019): 这是管理控制台的几个屏幕截图,显示了在启动时创建的 2 个会话(我们在中使用 JSP我们的网络应用程序,我们有一个启动服务 运行s 来预编译所有 JSP 文件):
更新: 这最初是一个非常简单但有点愚蠢的问题。我们在 LoggedInUser
class 中用 @javax.transaction.Transactional 注释标记了一个方法,这首先不是必需的,但却导致了序列化问题。
只是想 post 更新以防其他人 运行 遇到类似的事情。
我正在尝试 运行 我的应用程序在 2 个 Wildfly 16 节点上 运行 使用 standalone-full-ha.xml
配置以独立模式运行。当第二个节点启动时,第一个尝试 distribute/balance 默认 web
缓存到新节点。
执行此操作时,我在第一个节点的日志中看到以下错误消息,第二个节点无法启动:
13:45:48,487 ERROR [org.infinispan.remoting.rpc.RpcManagerImpl] (transport-thread--p18-t8) ISPN000073: Unexpected error while replicating: org.infinispan.commons.marshall.NotSerializableException: org.wildfly.transaction.client.ContextTransactionManager
Caused by: an exception which occurred:
in field com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.transactionManager
in object com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired@73962bdb
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.instance
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in field java.util.Collections$SynchronizedCollection.c
in object java.util.Collections$SynchronizedList@333ebcd4
in field org.jboss.weld.contexts.CreationalContextImpl.dependentInstances
in object org.jboss.weld.contexts.CreationalContextImpl@4dc7055b
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.creationalContext
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
13:45:50,718 ERROR [org.infinispan.statetransfer.OutboundTransferTask] (transport-thread--p18-t8) Failed to send entries to node node2: org.wildfly.transaction.client.ContextTransactionManager: org.infinispan.commons.marshall.NotSerializableException: org.wildfly.transaction.client.ContextTransactionManager
Caused by: an exception which occurred:
in field com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.transactionManager
in object com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired@73962bdb
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.instance
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@333ebcb5
in field java.util.Collections$SynchronizedCollection.c
in object java.util.Collections$SynchronizedList@333ebcd4
in field org.jboss.weld.contexts.CreationalContextImpl.dependentInstances
in object org.jboss.weld.contexts.CreationalContextImpl@4dc7055b
in field org.jboss.weld.contexts.SerializableContextualInstanceImpl.creationalContext
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
in object org.jboss.weld.contexts.SerializableContextualInstanceImpl@57504e37
其他一些注意事项:
- 在启动我的一个分布在 EAR 中的 WAR 时失败,但没有启动同样部署在 EAR 中的其他 2 个 WAR
- 我的
web.xml
被标记为<distributable/>
所有 3 个 WAR - 我的其他缓存似乎复制得很好
我似乎无法弄清楚 ContextTransactionManager
在哪里使用,或者为什么它被序列化到会话缓存中。我假设它可能在我的代码中的某个地方,但我不知道从哪里开始寻找。如有任何帮助,我们将不胜感激!
更新 (05/28/2019): 这是管理控制台的几个屏幕截图,显示了在启动时创建的 2 个会话(我们在中使用 JSP我们的网络应用程序,我们有一个启动服务 运行s 来预编译所有 JSP 文件):
更新: 这最初是一个非常简单但有点愚蠢的问题。我们在 LoggedInUser
class 中用 @javax.transaction.Transactional 注释标记了一个方法,这首先不是必需的,但却导致了序列化问题。
只是想 post 更新以防其他人 运行 遇到类似的事情。