Использование Hibernate 4.0.1 в JBoss 6.0 - PullRequest
1 голос
/ 16 февраля 2012

Я должен использовать версию 4.0.1 Hibernate в моем корпоративном приложении.EAR развернут в контейнере JBoss 6.0.

Файл ear содержит следующие файлы jibernate:

hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.0.1.Final.jar
hibernate-entitymanager-4.0.1.Final.jar
hibernate-envers-4.0.1.Final.jar
hibernate-envers-4.0.1.Final.jar
hibernate-envers-4.0.1.Final.jar
hibernate-search-analyzers-4.0.0.Final.jar
hibernate-search-engine-4.0.0.Final.jar
hibernate-search-engine-4.0.0.Final.jar
hibernate-validator-4.2.0.Final.jar

Согласно Обновление версии Hibernate в JBOSS Я пытался настроить пользовательскую загрузку классов с помощью следующего jboss-app.xml и jboss-classloading.xml

<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 1.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd">
<jboss-app>
  <loader-repository>
    com.acme.sample:archive=Sample
    <loader-repository-config>java2ParentDelegation=false</loader-repository-config> 
  </loader-repository>
</jboss-app>


<?xml version="1.0" encoding="UTF-8"?>
<classloading xmlns="urn:jboss:classloading:1.0"
  domain="sample.ear"
  export-all="NON_EMPTY"
  import-all="true"
  parent-first="false">
</classloading>

При запуске контейнера JBoss 6 в файле журнала появляются следующие строки:

09:49:55,238 INFO  [org.hibernate.annotations.common.Version] HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
09:49:55,265 INFO  [org.hibernate.Version] HHH000412: Hibernate Core {4.0.1.Final}

Похоже, что Hibernate 4.0.1 имеетбыл обнаружен.Но затем возникает следующее исключение:

09:49:55,388 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=sample-SNAPSHOT.ear/lib/persistence_impl-0.0.21-SNAPSHOT.jar#sample state=Create: java.lang.ClassCastException: org.jboss.as.jpa.scanner.HackTLScanner cannot be cast to org.hibernate.ejb.packaging.Scanner
at org.hibernate.ejb.Ejb3Configuration.buildScanner(Ejb3Configuration.java:415) [:3.6.0.Final]
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:582) [:3.6.0.Final]
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:72) [:3.6.0.Final]
at org.jboss.jpa.builder.DefaultCEMFBuilder.build(DefaultCEMFBuilder.java:47) [:1.0.2-alpha-3]
at org.jboss.as.jpa.scanner.HackCEMFBuilder.build(HackCEMFBuilder.java:49) [:6.0.0.Final]
at org.jboss.jpa.deployment.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:275) [:1.0.2-alpha-3]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_26]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_26]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_26]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_26]
at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:60) [jboss-reflect.jar:2.2.0.GA]
at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:168) [jboss-reflect.jar:2.2.0.GA]
at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66) [jboss-reflect.jar:2.2.0.GA]
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:257) [jboss-kernel.jar:2.2.0.GA]
at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47) [jboss-kernel.jar:2.2.0.GA]
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:125) [jboss-kernel.jar:2.2.0.GA]
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:72) [jboss-kernel.jar:2.2.0.GA]

В трассировке стека исключений упоминается версия 3.6.0. Финал hibernate упоминается.Похоже, что Контейнер все еще пытается создать JPA Persistence Unit, используя версию hibernate, поставляемую с JBoss.

Может кто-нибудь подсказать мне, что я делаю неправильно, и как настроить пользовательскую загрузку классов так, чтобыJBoss использует версию Hibernate, которая упакована в файл EAR.

1 Ответ

0 голосов
/ 29 мая 2012

Я обошел эту проблему, и она работает ...

моя структура ушей такая --->

accountEAR.ear
|
|--lib
    |<all jars for hibernate 4.0.1 and mysql jdbc jar>
|
|--META-INF
    | application.xml
    | jboss-app.xml
    | jboss-classloading.xml
    | mysql-ds.xml
|
|-- account_persistence.jar

jboss версия 6.1 и mysql версия 5.1

JBoss-app.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD Java EE Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd" >
<jboss-app>
    <loader-repository>
        com.accountEAR:loader=accountEAR
        <loader-repository-config>
            java2ParentDelegation=false
        </loader-repository-config>
    </loader-repository>
    <library-directory>lib</library-directory>
</jboss-app>

JBoss-classloading.xml:

<?xml version="1.0" encoding="UTF-8"?>
<classloading 
    xmlns="urn:jboss:classloading:1.0"
    export-all="NON_EMPTY"
    import-all="true"
    parent-first="false"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...