2015-01-29 5 views
0

Я пытался исправить проблему в течение некоторого времени.Wildfly 8 - Несколько EAR - ClassCastException

У меня есть два файла EAR, которые были развернуты в Wildfly 8.1.0 с тем же EJB.jar и тем же JPA.jar, но с отдельными EJB.jars для «Планирования» A.K.A, выполняющего различные функции в EJB. Планировщики получают доступ к EJB.jars, которые, в свою очередь, получают доступ к JPA.jars. Оба EAR/JPA используют одну и ту же базу данных.

Схема двух Уши заключаются в следующем:

EAR1:

  • SCHEDULER1-ejb.jar

  • ejb.jar

  • Lib \ JPA .jar

EAR2:

  • Scheduler2-ejb.jar

  • ejb.jar

  • Lib \ JPA.jar

Все развертывает хорошо, но после нескольких минут работы планировщиков я получаю ClassCastException для пользовательских классов. Пример:

java.lang.ClassException: persistence.Foo cannot be cast to persistence.Foo 

Я пытался играть с методами зависимости, Class-Path и изоляции EAR, но не может решить мою проблему.

Проблема возникает только в том случае, если и EAR развернуты и запущены, индивидуально они запускаются без каких-либо проблем.

Любые предложения приветствуются. Заранее спасибо.

ответ

1

Я не знаю, как Jboss обрабатывает постоянство. Единицы с таким же именем внутри, но, похоже, есть некоторый процесс обмена между ними. Один из ваших JPA.jars уже содержит объект в кеше, а затем другой JPA.jar пытается его повторно использовать.

Приложения-серверы создают свой собственный загрузчик классов для каждого уха/войны. Вы пытаетесь передать объект с war1 на war2, а war2 пытается отбросить объект, но не может.

Решение: Создайте EAR, контактирующий с JPA и EJB.jar, и разверните оба планировочных баночки.

развертывание папка будет выглядеть следующим образом:

) Backend.ear

) Schedular1.jar

) Schedular2....jar

+0

Спасибо Мартин. Это должно помочь мне совсем немного. Я вижу, что мне нужно делать сейчас. – ballBreaker

Смежные вопросы