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, который не был необходим в первую очередь, но вызывал проблему сериализации.

Просто хотел опубликовать обновление на тот случай, если кто-нибудь столкнется с чем-то похожим.

Другие вопросы по тегам