Загрузите модуль персистентности с помощью vfsfile (разорванный JAR) на JBoss 5.1 / Hibernate 3.3.2 - PullRequest
1 голос
/ 05 октября 2011

Я ищу помощь в устранении проблемы, возникающей при переходе с JBoss4 на JBoss5. Кажется, есть проблема с поддержкой Hibernate для VFS (представленная в JBoss5).

По причине модульности несколько артефактов имеют объявление единиц хранения (pu). Во время развертывания все они объединяются в одно объявление, похожее на

Processing PersistenceUnitInfo [
    name: pu
    persistence provider classname: null
    classloader: org.jboss.web.tomcat.service.WebCtxLoader$ENCLoader@7a74fa
    Temporary classloader: org.springframework.instrument.classloading.SimpleThrowawayClassLoader@432f0a33
    excludeUnlistedClasses: false
    JTA datasource: com.xyz.jdbc.datasource.DelegatingDataSource@4546bcba
    Non JTA datasource: com.xyz.jdbc.datasource.DelegatingDataSource@4546bcba
    Transaction type: JTA
    PU root URL: vfszip:/<path>/<jar>/
    Jar files URLs [
        vfsfile:/<path>/<exploded jar>/
        vfsfile:/<path>/<exploded jar>/
        vfsfile:/<path>/<exploded jar>/
        vfszip:/<path>/<jar>/
        vfszip:/<path>/<jar>/
        vfszip:/<path>/<jar>/]
    Managed classes names []
    Mapping files names []
    Properties []

При включении отладки мы видим, что взорванная банка не сканируется для аннотации

[org.hibernate.ejb.packaging.AbstractJarVisitor] Searching mapped entities in jar/par: vfsfile:/<path>/<exploded jar>/
[org.hibernate.ejb.packaging.AbstractJarVisitor] Searching mapped entities in jar/par: vfsfile:/<path>/<exploded jar>/

Принимая во внимание, что компактный JAR сканируется как ожидалось

[org.hibernate.ejb.packaging.AbstractJarVisitor] Searching mapped entities in jar/par: vfszip:/<path>/<jar>/
[org.hibernate.ejb.packaging.AbstractJarVisitor] Filtering: com.xyz.batch.configuration.internal.impl.JobMetadataDocumentImpl$1$JobList
...

В результате возникает QuerySyntaxException для запроса по объектам, которые не были найдены

org.hibernate.hql.ast.QuerySyntaxException: <EntityName> is not mapped 

1 Ответ

1 голос
/ 02 ноября 2011

В соответствии с поддержкой Red Hat невозможно использовать сканирование с разнесенными JAR-файлами. Доступны два решения:

  • использовать компактные JAR-файлы и сканирование работает как положено
  • используйте разнесенные JAR-файлы и объявите все @Entity с тегом в единице постоянства.
...