JBoss 7.0.2上的部署错误

时间:2012-12-03 09:46:41

标签: jboss7.x jbpm

我正在尝试在Jboss 7.0.2上部署我的JBpm应用程序。

我已经为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背后的是什么?

谢谢

的persistence.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>

的applicationContext.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:]

2 个答案:

答案 0 :(得分:1)

几个星期前我找到了解决方案。你的评论是对的。 我必须在持久性单元中添加所有域实体,因为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>

答案 1 :(得分:0)

您获得的错误与您的某个实体有关,是否映射到persistence.xml文件中?

引发的错误:org.hibernate.HibernateException:命名查询中的错误:ProcessInstancesWaitingForEvent

可能是因为您正在使用您正在使用的hibernate版本的错误映射映射ProcessInstanceInfo类。

干杯

PS:顺便问一下,您是否正在使用5.4.0.Final进行测试?