2011-04-14 80 views
1

我一直试图配置持久性与JBOSS 6.0.0.Final上的流水工作,通过遵循文档Drools-Flow-Persistence,但我不断收到一个异常,如下所示(虽然休眠将创建一个数据库模式):Drools流持久性 - 在joinTransaction调用没有活动JTA事务

java.lang.RuntimeException: Could not commit session  

2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:292) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getId(CommandBasedStatefulKnowledgeSession.java:114) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at com.sample.ProcessTest.main(ProcessTest.java:101) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at com.servlet.Servlet.doGet(Servlet.java:16) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:63) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at java.lang.Thread.run(Thread.java:619) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) Caused by: javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1013) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:973) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.drools.persistence.session.DefaultJpaManager.beginCommandScopedEntityManager(DefaultJpaManager.java:62) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) at org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:274) 

    2011-04-14 23:16:53,716 ERROR [STDERR] (http-0.0.0.0-8000-1) ... 27 more 

我有我的persistence.xml如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<persistence version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="org.drools.persistence.jpa"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>java:/jdbc/processInstanceDS</jta-data-source> 
    <class>org.drools.persistence.session.SessionInfo</class> 
    <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class> 
    <class>org.drools.persistence.processinstance.ProcessInstanceEventInfo</class> 
    <class>org.drools.persistence.processinstance.WorkItemInfo</class> 
    <class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>  
    <class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class> 

    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
     <property name="hibernate.max_fetch_depth" value="3"/> 
     <property name="hibernate.hbm2ddl.auto" value="create"/> 
     <property name="hibernate.show_sql" value="true"/> 
     <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

配置在JBOSS的数据源如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<datasources> 
    <local-tx-datasource> 
     <jndi-name>jdbc/processInstanceDS</jndi-name> 
     <rar-name>jboss-local-jdbc.rar</rar-name> 
     <use-java-context>true</use-java-context> 
     <connection-definition>javax.sql.DataSource</connection-definition> 
     <jmx-invoker-name>jboss:service=invoker,type=unified</jmx-invoker-name> 
     <min-pool-size>0</min-pool-size> 
     <max-pool-size>10</max-pool-size> 
     <blocking-timeout-millis>30000</blocking-timeout-millis> 
     <idle-timeout-minutes>30</idle-timeout-minutes> 
     <prefill>false</prefill> 
     <background-validation>false</background-validation> 
     <background-validation-millis>0</background-validation-millis> 
     <validate-on-match>true</validate-on-match> 
     <statistics-formatter>org.jboss.resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter</statistics-formatter> 
     <isSameRM-override-value>false</isSameRM-override-value> 
     <allocation-retry>0</allocation-retry> 
     <allocation-retry-wait-millis>5000</allocation-retry-wait-millis> 
     <security-domain-and-application xsi:type="securityMetaData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> 
     <metadata/> 
     <local-transaction/> 
     <prepared-statement-cache-size>0</prepared-statement-cache-size> 
     <share-prepared-statements>false</share-prepared-statements> 
     <set-tx-query-timeout>false</set-tx-query-timeout> 
     <query-timeout>0</query-timeout> 
     <url-delimiter>|</url-delimiter> 
     <driver-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</driver-class> 
     <user-name>root</user-name> 
     <password></password> 
     <connection-url>jdbc:mysql://machine:3306/mydroolsdb</connection-url> 
    </local-tx-datasource> 
</datasources> 

我的代码运行的规则流:

try { 
    KnowledgeBase kbase = readKnowledgeBase(); 
    // create the entity manager factory and register it in the environment 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.drools.persistence.jpa"); 
    Environment env = KnowledgeBaseFactory.newEnvironment(); 
    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf); 
    // create a new knowledge session that uses JPA to store the runtime state 
    StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env); 
    int sessionId = ksession.getId(); 
    // invoke methods on your method here 
    ksession.startProcess("com.sample.bpmn.hello"); 
    ksession.dispose(); 
    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 

我已经把使用mysql-connector-java的5.0.8-bin.jar和BTM-1.3.2.jar在“%JBOSS_HOME%\常见\ lib“目录

我错过了什么? 我得到了上述异常(即使使用H2分贝),但休眠确实成功地生成数据库模式,任何帮助将不胜感激。

回答

3

在你的persistence.xml,你似乎是引用bitronix事务管理器,而我怀疑你想使用JBoss的事务管理器,如果你运行此为在JBoss AS应用程序:

<属性名=” hibernate.transaction.manager_lookup_class属性” VALUE =‘org.hibernate.transaction.JBossTransactionManagerLookup’/ >

克里斯

+0

我已经试过JBoss的事务管理器,但我得到了同样的异常,有没有别的地方我必须改变交易经理也是如此? – GoofyHTS 2011-04-15 08:28:59

+0

对不起,我做了一些愚蠢的事情,把它变成了JBoss事务管理器的工作!谢谢!现在我只是得到一个“未找到命名查询:ProcessInstancesWaitingForEvent”异常,这是进步,谢谢! – GoofyHTS 2011-04-15 08:36:14

+0

我有同样的问题,但我的persistence.xml包含上面的行。任何其他的消化? – 2016-01-07 12:16:40