[prev in list] [next in list] [prev in thread] [next in thread]
List: jboss-user
Subject: [jboss-user] [jBPM] - Non JPA transaction management for JBPM 5.3.0 or how to integrate JBPM with cu
From: Anatoliy Kalenskiy <do-not-reply () jboss ! com>
Date: 2012-08-30 16:41:06
Message-ID: 2-757060-3-113054-1346344851825.jivesbs.jivemailuser () https://community ! jboss ! org
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Anatoliy Kalenskiy [https://community.jboss.org/people/cybiks] created the discussion
"Non JPA transaction management for JBPM 5.3.0 or how to integrate JBPM with current \
application that use HibernateTransactionManager ?"
To view the discussion, visit: https://community.jboss.org/message/757060#757060
--------------------------------------------------------------
Hi all,
I have an application - Spring+Hibernate.
All transactions management described in spring config:
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="dataSource" ref="dataSource"/>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- enables the configuration of transactional behavior based on annotations \
--> <tx:annotation-driven transaction-manager="transactionManager"/>
So in code we just use:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void handleEvent(Event event) {
List<EventAction> eventActions = event.getEventactions();
for(EventAction action : eventActions) {
actions.run();
}
}
So all actions runs in one transaction. Now we want to use JBPM process to run \
such actions. We create some jbpm process com.example.process and rewrite our code \
to : @Transactional(propagation = Propagation.REQUIRES_NEW)
public void handleEvent(Event event) {
List<EventAction> eventActions = event.getEventactions();
Map<String, EventAction> actions = new HashMap<String, EventAction>();
for(EventAction action : eventActions) {
actions.put(action.getDisplayName(), action);
}
Map<String, Object> params = new HashMap<String, Object>();
params.put("event", event);
params.put("actions", actions);
ksession.startProcess("com.example.process", params);
}
The main Idea to run each actions in order depending on some specisic order (by \
DisplayName). So my diagram of the process consist of sequential Service task which \
hadler looks like:
public class EventActionHandler implements WorkItemHandler {
@Override
public void executeWorkItem(WorkItem workItem, WorkItemManager \
workItemManager) {
String displayName= (String) workItem.getParameter("DisplayName");
Map<String, EventAction> actions = ( Map<String, EventAction>) \
workItem.getParameter("actions");
try {
(actions.get(displayName)).run();
System.out.println("run "+displayName+" done");
} catch (Exception e) {
System.out.println("Exception "+displayName+" : " + e);
}
workItemManager.completeWorkItem(workItem.getId(),null);
}
...
}
So each Service Task has it display name and this display name defines order . All \
works fine. I even can debug it. But now I want to see current status of the process \
-which one Service Task is executing now. I what to use for it JBPM console. I have \
configured all war-s from jbpm-installer_5.3.0 to use my Oracle schema. And I can see \
my process in JBPM Console -> process-> Process Overview . But I whant to see current \
instances of such processes. As I understand (to store in DB nessesary data for \
process instancess) I should do steps described in : \
jbpm-5.3.0.Final-docs/jbpm-docs/html_single/index.html h2. 19.3. Spring
After words :
The following example shows a slightly more complex example, where the session is \
configured to use persistence (JPA using an in-memory database) and transaction \
(using the Spring transaction manager). I've done it and my configuration is:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jbpm="http://drools.org/schema/drools-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans \
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
\
http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd "> \
<bean id="entityManagerFactory" \
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> \
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" \
value="org.jbpm.persistence.jpa"/> </bean>
<bean id="JPAtxManager" \
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" \
ref="entityManagerFactory"/> </bean>
<jbpm:kbase id="kbase">
<jbpm:resources>
<jbpm:resource type="BPMN2" source="classpath:Events.bpmn"/>
</jbpm:resources>
</jbpm:kbase>
<jbpm:ksession id="ksession" type="stateful" kbase="kbase">
<jbpm:configuration>
<jbpm:work-item-handlers>
<jbpm:work-item-handler name="Event Action" \
ref="eventActionHandler"/> </jbpm:work-item-handlers>
<jbpm:jpa-persistence>
<jbpm:transaction-manager ref="JPAtxManager"/>
<jbpm:entity-manager-factory \
ref="entityManagerFactory"/> </jbpm:jpa-persistence>
</jbpm:configuration>
</jbpm:ksession>
<bean id="eventActionHandler" class="com.example.events.EventActionHandler">
</bean>
</beans>
As you can see I use the same datasource as used in my application .
My persistance file is:
<?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.jbpm.persistence.jpa" >
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/JBPMorm.xml</mapping-file>
<mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>
<class>org.drools.persistence.info.SessionInfo</class>
<class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.info.WorkItemInfo</class>
<properties>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.dialect" \
value="org.hibernate.dialect.Oracle10gDialect"/> </properties>
</persistence-unit>
</persistence>
When I launch JBOSS I can see:
19:24:14,006 WARN [org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager] \
(eventProcessingTimerFactoryBean) Unable to begin transaction: \
java.lang.NullPointerException at \
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696) \
[spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE] at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final] at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347) \
[drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final] at \
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223) \
[drools-core-5.4.0.Final.jar:5.4.0.Final]
at com.example.EventHandlerImpl.EventHandlerImpl.handleEvent(EventHandlerImpl.java:84) \
[classes:]
at sun.reflect.GeneratedMethodAccessor658.invoke(Unknown Source) [:1.6.0_29]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) \
[rt.jar:1.6.0_29]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_29]
...
19:24:14,065 ERROR [org.drools.persistence.SingleSessionCommandService] \
(eventProcessingTimerFactoryBean) Could not commit session: \
java.lang.RuntimeException: Unable to begin transaction at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:56) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]
at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347) \
[drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final] at \
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223) \
[drools-core-5.4.0.Final.jar:5.4.0.Final]
at om.example.EventHandlerImpl.EventHandlerImpl.handleEvent(EventHandlerImpl.java:84) \
[classes:]
...
Caused by: java.lang.NullPointerException
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696) \
[spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE] at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final] at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]
... 40 more
19:24:17,761 ERROR [stderr] (eventProcessingTimerFactoryBean) \
java.lang.RuntimeException: Unable to begin transaction 19:24:17,765 ERROR [stderr] \
(eventProcessingTimerFactoryBean) at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:56)
19:24:17,767 ERROR [stderr] (eventProcessingTimerFactoryBean) at \
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347)
19:24:17,769 ERROR [stderr] (eventProcessingTimerFactoryBean) at \
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223)
..
19:24:17,771 ERROR [stderr] (eventProcessingTimerFactoryBean) at \
eterra.ca.core.gate.alternative.impl.GateEventHandlerImpl.handleGateEventJBPM(GateEventHandlerImpl.java:141)
19:24:17,775 ERROR [stderr] (eventProcessingTimerFactoryBean) at \
eterra.ca.core.gate.alternative.impl.GateEventHandlerImpl.handleGateEvent(GateEventHandlerImpl.java:84)
19:24:17,777 ERROR [stderr] (eventProcessingTimerFactoryBean) at \
sun.reflect.GeneratedMethodAccessor658.invoke(Unknown Source) 19:24:17,779 ERROR \
[stderr] (eventProcessingTimerFactoryBean) at \
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) \
19:24:17,781 ERROR [stderr] (eventProcessingTimerFactoryBean) at \
java.lang.reflect.Method.invoke(Method.java:597) 19:24:17,841 ERROR [stderr] \
(gateProcessingTimerFactoryBean) Caused by: java.lang.NullPointerException \
19:24:17,842 ERROR [stderr] (gateProcessingTimerFactoryBean) at \
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696)
19:24:17,844 ERROR [stderr] (gateProcessingTimerFactoryBean) at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131)
19:24:17,846 ERROR [stderr] (gateProcessingTimerFactoryBean) at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45)
19:24:17,847 ERROR [stderr] (gateProcessingTimerFactoryBean) ... 40 more
So what should I do with it? Looks like problems is in two dirfferent transaction \
managers. How can I configure in spring to use one TM for both application and JBPM \
stuff? Looks like <jbpm:configuration> has only <jbpm:jpa-persistence> tag inside ? \
How can I configure my application in right way?
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/757060#757060]
Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
[Attachment #5 (text/html)]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; \
margin: 0; padding: 20px;">
<div>
<table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: \
1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; \
-webkit-border-radius: 6px;"> <tbody>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" \
style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: \
6px; -webkit-border-radius: 6px;"> <tbody>
<tr>
<td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px \
solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; \
-moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; \
-webkit-border-top-left-radius: 5px;">
<h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; \
margin: 0; display: block !important;">
<!-- To have a header image/logo replace the name below with your img tag \
-->
<!-- Email clients will render the images when the message is read so any \
image -->
<!-- must be made available on a public server, so that all recipients can \
load the image. -->
<a href="https://community.jboss.org/index.jspa" style="text-decoration: \
none; color: #E1E1E1">JBoss Community</a></h1> </td>
</tr>
<tr>
<td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; \
color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; \
-moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; \
-webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: \
17px; font-weight: normal;"> Non JPA transaction management for JBPM 5.3.0 or how to \
integrate JBPM with current application that use HibernateTransactionManager ? </h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/cybiks">Anatoliy \
Kalenskiy</a> in <i>jBPM</i> - <a \
href="https://community.jboss.org/message/757060#757060">View the full discussion</a> \
</span> <hr style="margin: 20px 0; border: none; background-color: #dadada; height: \
1px;">
<div class="jive-rendered-content"><p>Hi all,</p><p style="min-height: 8pt; height: \
8pt; padding: 0px;"> </p><p>I have an application - Spring+Hibernate.</p><p>All \
transactions management described in spring config:</p><p style="min-height: 8pt; \
height: 8pt; padding: 0px;"> </p><p> <bean \
id="transactionManager"</p><p>          \
class="org.springframework.orm.hibernate4.HibernateTransactionManager"></p><p>        \
<property name="dataSource" \
ref="dataSource"/></p><p>        <property \
name="sessionFactory" ref="sessionFactory"/></p><p>    \
</bean></p><p style="min-height: 8pt; height: 8pt; padding: \
0px;"> </p><p>    <!-- enables the configuration of \
transactional behavior based on annotations --></p><p>    \
<tx:annotation-driven transaction-manager="transactionManager"/></p><p \
style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>So in code we just \
use:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><pre \
class="jive-pre"><code class="jive-code jive-java">@Transactional(propagation = \
Propagation.REQUIRES_NEW)     <font color="navy"><b>public</b></font> \
<font color="navy"><b>void</b></font> handleEvent(Event event) <font \
color="navy">{</font>      List<EventAction> eventActions \
=  event.getEventactions(); \
          <font \
color="navy"><b>for</b></font>(EventAction action : eventActions) <font \
color="navy">{</font> \
                \
actions.run();       <font color="navy">}</font>
<font color="navy">}</font>
</code></pre><p>  So all actions runs in one transaction. Now we want to \
use  JBPM process to run such actions.</p><p>We create some jbpm process \
com.example.process and  rewrite our code to :</p><pre class="jive-pre"><code \
class="jive-code jive-java">@Transactional(propagation = Propagation.REQUIRES_NEW) \
    <font color="navy"><b>public</b></font> <font \
color="navy"><b>void</b></font> handleEvent(Event event) <font color="navy">{</font> \
     List<EventAction> eventActions =  \
event.getEventactions();      Map<String, EventAction> \
actions = <font color="navy"><b>new</b></font> HashMap<String, EventAction>(); \
        <font \
color="navy"><b>for</b></font>(EventAction action : eventActions) <font \
color="navy">{</font> \
                \
actions.put(action.getDisplayName(), action);        \
<font color="navy">}</font>          
          Map<String, Object> \
params = <font color="navy"><b>new</b></font> HashMap<String, Object>(); \
          params.put(<font \
color="red">"event"</font>, event); \
          params.put(<font \
color="red">"actions"</font>, actions); \
          ksession.startProcess(<font \
color="red">"com.example.process"</font>, params); <font color="navy">}</font>
</code></pre><p>  </p><p>The main Idea to run each actions in order depending on \
some specisic order (by DisplayName). So my diagram of the process consist of \
sequential Service task which hadler looks like:</p><p style="min-height: 8pt; \
height: 8pt; padding: 0px;"> </p><pre class="jive-pre"><code class="jive-code \
jive-java"><font color="navy"><b>public</b></font> <font \
color="navy"><b>class</b></font> EventActionHandler <font \
color="navy"><b>implements</b></font> WorkItemHandler <font color="navy">{</font> \
    @Override     <font \
color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> \
executeWorkItem(WorkItem workItem, WorkItemManager workItemManager) <font \
color="navy">{</font>  
        String displayName= (String) \
workItem.getParameter(<font color="red">"DisplayName"</font>); \
        Map<String, EventAction> actions = ( \
Map<String, EventAction>)  workItem.getParameter(<font \
color="red">"actions"</font>);        
        <font color="navy"><b>try</b></font> <font \
color="navy">{</font> \
            \
(actions.get(displayName)).run(); \
            \
System.out.println(<font color="red">"run "</font>+displayName+<font color="red">" \
done"</font>);         <font color="navy">}</font> \
<font color="navy"><b>catch</b></font> (Exception e) <font color="navy">{</font> \
            \
System.out.println(<font color="red">"Exception "</font>+displayName+<font \
color="red">" : "</font> + e);         <font \
color="navy">}</font>         \
workItemManager.completeWorkItem(workItem.getId(),<font \
color="navy"><b>null</b></font>);     <font color="navy">}</font>
...
<font color="navy">}</font>
</code></pre><p> So each Service Task has it display name and this display name \
defines order . All works fine. I even can debug it. But now I want to see current \
status of the process -which one Service Task is executing now.</p><p> I what to use \
for it JBPM console. I have configured all war-s from jbpm-installer_5.3.0 to use my \
Oracle schema. And I can see my process in JBPM Console -> process-> Process \
Overview .</p><p>But I whant to see current instances of such processes. As I \
understand (to store in DB nessesary data for process instancess) I should do steps \
described in :</p><p>jbpm-5.3.0.Final-docs/jbpm-docs/html_single/index.html</p><h2 \
class="title"><a class="jive-link-anchor-small">19.3. Spring</a></h2><p \
style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>After words \
:</p><p><a class="jive-link-anchor-small">The following example shows a slightly more \
complex example, where the session is configured to use persistence (JPA using an \
in-memory database) and transaction (using the Spring transaction \
manager).</a></p><p>I've done it and my configuration is:</p><pre \
class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag"><?xml \
version="1.0" encoding="UTF-8"?></span> <span class="jive-xml-tag"><span><beans \
xmlns="</span><a class="jive-link-external-small" \
href="http://www.springframework.org/schema/beans" \
target="_blank">http://www.springframework.org/schema/beans</a><span>" \
       xmlns:xsi="</span><a \
class="jive-link-external-small" href="http://www.w3.org/2001/XMLSchema-instance" \
target="_blank">http://www.w3.org/2001/XMLSchema-instance</a><span>" \
       xmlns:jbpm="</span><a \
class="jive-link-external-small" href="http://drools.org/schema/drools-spring" \
target="_blank">http://drools.org/schema/drools-spring</a><span>" \
       xsi:schemaLocation="</span><a \
class="jive-link-external-small" href="http://www.springframework.org/schema/beans" \
target="_blank">http://www.springframework.org/schema/beans</a><span> </span><a \
class="jive-link-external-small" \
href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" \
target="_blank">http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</a><span>
                           \
</span><a class="jive-link-external-small" \
href="http://drools.org/schema/drools-spring" \
target="_blank">http://drools.org/schema/drools-spring</a><span> </span><a \
class="jive-link-external-small" href="http://drools.org/schema/drools-spring.xsd" \
target="_blank">http://drools.org/schema/drools-spring.xsd</a><span> \
"></span></span>  
    <span class="jive-xml-tag"><bean id="entityManagerFactory" \
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"></span> \
         <span \
class="jive-xml-tag"><property name="dataSource" ref="dataSource"/></span> \
         <span \
class="jive-xml-tag"><property name="persistenceUnitName" \
value="org.jbpm.persistence.jpa"/></span>      <span \
class="jive-xml-tag"></bean></span>
     <span class="jive-xml-tag"><bean id="JPAtxManager" \
class="org.springframework.orm.jpa.JpaTransactionManager"></span> \
           <span \
class="jive-xml-tag"><property name="entityManagerFactory" \
ref="entityManagerFactory"/></span>      <span \
class="jive-xml-tag"></bean></span>
    <span class="jive-xml-tag"><jbpm:kbase id="kbase"></span>
        <span \
class="jive-xml-tag"><jbpm:resources></span> \
            <span \
class="jive-xml-tag"><jbpm:resource type="BPMN2" \
source="classpath:Events.bpmn"/></span> \
         <span \
class="jive-xml-tag"></jbpm:resources></span>     <span \
class="jive-xml-tag"></jbpm:kbase></span>     <span \
class="jive-xml-tag"><jbpm:ksession id="ksession" type="stateful" \
kbase="kbase"></span>         <span \
class="jive-xml-tag"><jbpm:configuration></span> \
             <span \
class="jive-xml-tag"><jbpm:work-item-handlers></span> \
                \
<span class="jive-xml-tag"><jbpm:work-item-handler name="Event Action" \
ref="eventActionHandler"/></span> \
             <span \
class="jive-xml-tag"></jbpm:work-item-handlers></span> \
            <span \
class="jive-xml-tag"><jbpm:jpa-persistence></span> \
                \
<span class="jive-xml-tag"><jbpm:transaction-manager \
ref="JPAtxManager"/></span> \
                \
<span class="jive-xml-tag"><jbpm:entity-manager-factory \
ref="entityManagerFactory"/></span> \
            <span \
class="jive-xml-tag"></jbpm:jpa-persistence></span> \
        <span \
class="jive-xml-tag"></jbpm:configuration></span>     <span \
class="jive-xml-tag"></jbpm:ksession></span>
    <span class="jive-xml-tag"><bean id="eventActionHandler" \
class="com.example.events.EventActionHandler"></span>     <span \
class="jive-xml-tag"></bean></span> <span \
class="jive-xml-tag"></beans></span> </code></pre><p>As you can see I use the \
same datasource as used in my application .</p><p style="min-height: 8pt; height: \
8pt; padding: 0px;"> </p><p>My persistance file is:</p><pre \
class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag"><?xml \
version="1.0" encoding="UTF-8" standalone="yes"?></span> <span \
class="jive-xml-tag"><span><persistence version="1.0" \
             \
xsi:schemaLocation="</span><a class="jive-link-external-small" \
href="http://java.sun.com/xml/ns/persistence" \
target="_blank">http://java.sun.com/xml/ns/persistence</a><span> \
              &# \
160;                  \
</span><a class="jive-link-external-small" \
href="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" \
target="_blank">http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd</a><span> \
              &# \
160;                  \
</span><a class="jive-link-external-small" \
href="http://java.sun.com/xml/ns/persistence/orm" \
target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><span> \
              &# \
160;                  \
</span><a class="jive-link-external-small" \
href="http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" \
target="_blank">http://java.sun.com/xml/ns/persistence/orm_1_0.xsd</a><span>" \
             \
xmlns:orm="</span><a class="jive-link-external-small" \
href="http://java.sun.com/xml/ns/persistence/orm" \
target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><span>" \
             \
xmlns:xsi="</span><a class="jive-link-external-small" \
href="http://www.w3.org/2001/XMLSchema-instance" \
target="_blank">http://www.w3.org/2001/XMLSchema-instance</a><span>" \
             \
xmlns="</span><a class="jive-link-external-small" \
href="http://java.sun.com/xml/ns/persistence" \
target="_blank">http://java.sun.com/xml/ns/persistence</a><span>"></span></span>
  <span class="jive-xml-tag"><persistence-unit \
name="org.jbpm.persistence.jpa" ></span>       <span \
class="jive-xml-tag"><provider></span>org.hibernate.ejb.HibernatePersistence<span \
class="jive-xml-tag"></provider></span>       <span \
class="jive-xml-tag"><mapping-file></span>META-INF/JBPMorm.xml<span \
class="jive-xml-tag"></mapping-file></span>       \
<span class="jive-xml-tag"><mapping-file></span>META-INF/ProcessInstanceInfo.hbm.xml<span \
class="jive-xml-tag"></mapping-file></span>
      <span \
class="jive-xml-tag"><class></span>org.drools.persistence.info.SessionInfo<span \
class="jive-xml-tag"></class></span>       <span \
class="jive-xml-tag"><class></span>org.jbpm.persistence.processinstance.ProcessInstanceInfo<span \
class="jive-xml-tag"></class></span>       <span \
class="jive-xml-tag"><class></span>org.drools.persistence.info.WorkItemInfo<span \
class="jive-xml-tag"></class></span>
      <span class="jive-xml-tag"><properties></span>
        <span class="jive-xml-tag"><property \
name="hibernate.max_fetch_depth" value="3"/></span> \
        <span class="jive-xml-tag"><property \
name="hibernate.hbm2ddl.auto" value="update"/></span> \
        <span class="jive-xml-tag"><property \
name="hibernate.show_sql" value="false"/></span> \
         <span \
class="jive-xml-tag"><property name="hibernate.dialect" \
value="org.hibernate.dialect.Oracle10gDialect"/></span> \
       <span \
class="jive-xml-tag"></properties></span>      <span \
class="jive-xml-tag"></persistence-unit></span> <span \
class="jive-xml-tag"></persistence></span> </code></pre><p>When I launch JBOSS \
I can  see:</p><p style="min-height: 8pt; height: 8pt; padding: \
0px;"> </p><p>19:24:14,006 WARN  \
[org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager] \
(eventProcessingTimerFactoryBean) Unable to begin transaction: \
java.lang.NullPointerException</p><p>    at \
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696) \
[spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]</p><p>    at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347) \
[drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223) \
[drools-core-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
com.example.EventHandlerImpl.EventHandlerImpl.handleEvent(EventHandlerImpl.java:84) \
[classes:]</p><p>    at \
sun.reflect.GeneratedMethodAccessor658.invoke(Unknown Source) \
[:1.6.0_29]</p><p>    at \
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) \
[rt.jar:1.6.0_29]</p><p>    at \
java.lang.reflect.Method.invoke(Method.java:597) \
[rt.jar:1.6.0_29]</p><p>     ...</p><p style="min-height: 8pt; \
height: 8pt; padding: 0px;"> </p><p>19:24:14,065 ERROR \
[org.drools.persistence.SingleSessionCommandService] \
(eventProcessingTimerFactoryBean) Could not commit session: \
java.lang.RuntimeException: Unable to begin transaction</p><p>    at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:56) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347) \
[drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223) \
[drools-core-5.4.0.Final.jar:5.4.0.Final]</p><p>     at \
om.example.EventHandlerImpl.EventHandlerImpl.handleEvent(EventHandlerImpl.java:84) \
[classes:]</p><p>    ...</p><p style="min-height: 8pt; height: 8pt; \
padding: 0px;"> </p><p>Caused by: \
java.lang.NullPointerException</p><p>    at \
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696) \
[spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]</p><p>    at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>    at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45) \
[drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>    ... 40 \
more</p><p style="min-height: 8pt; height: 8pt; padding: \
0px;"> </p><p>19:24:17,761 ERROR [stderr] (eventProcessingTimerFactoryBean) \
java.lang.RuntimeException: Unable to begin transaction</p><p>19:24:17,765 ERROR \
[stderr] (eventProcessingTimerFactoryBean)     at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:56)</p><p>19:24:17,767 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347)</p><p>19:24:17,769 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223)</p><p>..</p><p>19:24:17,771 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
eterra.ca.core.gate.alternative.impl.GateEventHandlerImpl.handleGateEventJBPM(GateEventHandlerImpl.java:141)</p><p>19:24:17,775 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
eterra.ca.core.gate.alternative.impl.GateEventHandlerImpl.handleGateEvent(GateEventHandlerImpl.java:84)</p><p>19:24:17,777 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
sun.reflect.GeneratedMethodAccessor658.invoke(Unknown Source)</p><p>19:24:17,779 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p><p>19:24:17,781 \
ERROR [stderr] (eventProcessingTimerFactoryBean)     at \
java.lang.reflect.Method.invoke(Method.java:597)</p><p>19:24:17,841 ERROR [stderr] \
(gateProcessingTimerFactoryBean) Caused by: \
java.lang.NullPointerException</p><p>19:24:17,842 ERROR [stderr] \
(gateProcessingTimerFactoryBean)     at \
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696)</p><p>19:24:17,844 \
ERROR [stderr] (gateProcessingTimerFactoryBean)     at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131)</p><p>19:24:17,846 \
ERROR [stderr] (gateProcessingTimerFactoryBean)     at \
org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45)</p><p>19:24:17,847 \
ERROR [stderr] (gateProcessingTimerFactoryBean)     ... 40 \
more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>So what \
should I do with it? Looks like problems is in two dirfferent transaction \
managers.  How can I configure in spring to use one TM for both application and \
JBPM stuff?</p><p>Looks like <jbpm:configuration> has only \
<jbpm:jpa-persistence> tag inside ? How can I configure my application in right \
way?</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a \
href="https://community.jboss.org/message/757060#757060">going to Community</a></p> \
<p style="margin: 0;">Start a new discussion in jBPM at <a \
href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic