Infinispan NotSerializableException при раскрутке WAR в Wildfly 16
Я пытаюсь запустить свое приложение на 2 узлах Wildfly 16, работающих в автономном режиме, используя standalone-full-ha.xml
конфигурации. Когда 2-й узел запускается, первый пытается распределить / сбалансировать значение по умолчанию web
кеш на новый узел.
Когда это происходит, я вижу следующее сообщение об ошибке в журнале на первом узле, а 2-й узел не запускается:
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
Некоторые другие вещи, чтобы отметить:
- Сбой при запуске одной из моих WAR, которая распространяется внутри EAR, но не двух других WAR, которые также развернуты в EAR
- мой
web.xml
помечен как<distributable/>
за все 3 войны - Мои другие кеши, кажется, копируют очень хорошо
Я не могу понять, где ContextTransactionManager
используется, или почему он может быть сериализован в кеш сессии. Я предполагаю, что это может быть где-то в моем коде, но я не могу понять, где даже начать искать. Любая помощь будет оценена!
Обновление (28/05/2019): вот несколько скриншотов из консоли управления, показывающих 2 сеанса, которые создаются при запуске (мы используем JSP в нашем веб-приложении, и у нас есть служба запуска, которая запускается для предварительной компиляции всех Файлы JSP):
1 ответ
Обновление: в конце концов, это была действительно простая и несколько глупая проблема. Мы отметили метод в LoggedInUser
класс с аннотацией @javax.transaction.Transactional, который не был необходим в первую очередь, но вызывал проблему сериализации.
Просто хотел опубликовать обновление на тот случай, если кто-нибудь столкнется с чем-то похожим.