Ошибка развертывания на JBoss 7.0.2

Я пытаюсь развернуть свое приложение JBpm на Jboss 7.0.2.

Я определил единицу персистентности как для jbpm, так и для моих бизнес-сущностей. Я настроил диспетчер транзакций с помощью Spring 3.1.3.

Все хорошо работает на Tomcat 7.0, но когда я развертываю Jboss 7.0.2, я получаю исключение javax.persistence.PersistenceException.

Чтобы исправить ошибку, я добавил следующий элемент в свой блок сохраняемости:

<mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>

но затем я получаю другое исключение, относящееся к моим бизнес-объектам:

[...]
Caused by: java.lang.IllegalArgumentException: Not an managed type: class     eu.publications.ceres.persistence.domain.Registration
[...]

У вас есть идея, почему на tomcat все работает нормально, а на JBoss нет? Что делает JBoss за кулисами?

Спасибо

постоянство.xml:

<persistence-unit name="ceres2013.persistence.unit">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>META-INF/JBPMorm.xml</mapping-file>

    <class>org.drools.persistence.info.SessionInfo</class>
    <class>org.drools.persistence.info.WorkItemInfo</class>
    <class>org.jbpm.process.audit.ProcessInstanceLog</class>
    <class>org.jbpm.process.audit.NodeInstanceLog</class>
    <class>org.jbpm.process.audit.VariableInstanceLog</class>

    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.max_fetch_depth" value="4" />
        <property name="hibernate.hbm2ddl.auto" value="validate" />
    </properties>
</persistence-unit>

приложениеContext.xml:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="ceres2013.persistence.unit" />
</bean>

Трассировки стека:

[...]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: ceres2013.persistence.unit] Unable to build EntityManagerFactory
      at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:900) [hibernate-entitymanager-3.5.4-Final.jar:]
      at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)     [hibernate-entitymanager-3.5.4-Final.jar:]
      [...]
Caused by: org.hibernate.HibernateException: Errors in named queries: ProcessInstancesWaitingForEvent
      at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:437) [hibernate-core-3.5.4-Final.jar:]

person Jean-François Houzard    schedule 03.12.2012    source источник


Ответы (2)


Я нашел решение несколько недель назад. Ваш комментарий правильный. Мне пришлось добавить все мои объекты домена в блок сохраняемости, потому что JBoss не ищет аннотации @Entity (Tomcat делает). Я закончил с чем-то вроде:

<persistence-unit name="org.jbpm.persistence.jpa" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>META-INF/JBPMorm.xml</mapping-file>
    <mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>

    <class>...</class>
    ...
    <class>...</class>

    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.max_fetch_depth" value="4" />
        <property name="hibernate.hbm2ddl.auto" value="validate" />
    </properties>

</persistence-unit>
person Jean-François Houzard    schedule 28.12.2012

Ошибка, которую вы получаете, связана с одним из ваших объектов, отображается ли он в файле persistence.xml?

Ошибка о причинах: org.hibernate.HibernateException: ошибки в именованных запросах: ProcessInstancesWaitingForEvent

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

Ваше здоровье

PS: кстати, вы тестируете с 5.4.0.Final?

person salaboy    schedule 04.12.2012