Hibernate / JPA проблема наследования на weblogic - PullRequest
3 голосов
/ 21 апреля 2009

Я получаю странную ошибку при запуске моего web2-приложения spring2.5.6, jpa (hibernate3.4) в weblogic 10.3


[ERROR] Javassist Enhancement failed: com.xxx.domain.model.Scheme
java.lang.NoSuchMethodError: pcGetManagedFieldCount
        at com.xxx.domain.model.Fund.<clinit>(Fund.java)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAc
cessorFactory.java:25)

Класс com.xxx.domain.model.Scheme является сопоставленной сущностью подкласса абстрактной сущности фонда в иерархии наследования single_table, и я получаю эту ошибку для всех сущностей в иерархии. Я использую аннотированные классы и метаданные xml для определения отображений для моих классов персистентности.

Я получаю эту ошибку только при развертывании приложения в weblogic, поэтому все работает нормально с помощью junit. Я попытался обновить до последней версии на javaassit.jar.

Проблема Мне кажется, что проблема с порядком загрузки классов, но я не могу понять.

PS. По предложению bea я добавил следующее в weblogic.xml

<container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

У кого-нибудь есть идеи, советы по настройке или указания, по которым мне следует заняться расследованием?

Ответы [ 4 ]

2 голосов
/ 22 января 2010

У меня была такая же проблема.

Мои сущности расширили класс (@MappedSuperClass), который жил внутри зависимости jar. Мне пришлось перенести этот класс из банки в мой проект. Только тогда все заработало бы и развернулось нормально.

Также еще один способ решить эту проблему - явно указать ваши сущности в файле persistence.xml

0 голосов
/ 05 мая 2009

Можете ли вы опубликовать код для класса сущностей и, если вы не используете аннотации, сегмент вашего файла отображения hbm?

Ваша догадка к классу может быть правильной. В вашем weblogic-application.xml попробуйте это

<prefer-application-packages>
  <package-name>antlr.*</package-name>
  <package-name>org.antlr.*</package-name>
</prefer-application-packages>

Если у вас есть еще какие-либо записи в журнале, пожалуйста, опубликуйте также.

0 голосов
/ 11 мая 2009

Я только что потерял пару дней на этом сам. Проблема для меня заключалась в том, что в моем приложении было 2 отдельных модуля сервисов данных. Я думаю, что 10.3 имеет некоторые проблемы с этим. Я не уверен в решении, но мне нужно было объединить оба моих модуля служб данных в один. BEA, кажется, знает об этой проблеме. Надеюсь, приведенный ниже URL поможет. Ссылка CR370788. http://edocs.bea.com/wls/docs103/issues/known_resolved.html

0 голосов
/ 22 апреля 2009

Извините, у меня на компьютере только WebLogic 10.0, а в дистрибутиве нет JAR-файлов javassist. Похоже, javassist был добавлен только в 10.3 для генерации байт-кода AOP.

Возможно, стоит попытаться удалить JAR-файл Javassist из своего развертывания WebLogic и использовать версию, которую он поддерживает. Извлеките тег «предпочесть-web-inf-classes» из вашего web.xml и посмотрите, может ли он работать с версией, которую предпочитает WebLogic.

...