<!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="http://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;">
Re: Drools, Spring integration and JTA in container
</h3>
<span style="margin-bottom: 10px;">
created by <a href="http://community.jboss.org/people/alexmanly">Alex Manly</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/598807#598807">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>I have this same problem.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>In the spring config I create the Transaction manager as follows:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    &lt;jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/rd-domain-pu" /&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    &lt;tx:jta-transaction-manager /&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>This creates a transaction manager with the type:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>org.springframework.transaction.jta.JtaTransactionManager</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>My drools spring config is this:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    &lt;drools:kbase id="kbase1"&gt;</p><p>        &lt;drools:resources&gt;</p><p>            &lt;drools:resource id="cloneFlow" type="DRF" source="classpath:Clone.rf"/&gt;</p><p>            &lt;drools:resource id="approvalFlow" type="DRF" source="classpath:Approval.rf"/&gt;</p><p>          &lt;/drools:resources&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        &lt;drools:configuration&gt;</p><p>            &lt;drools:mbeans enabled="true" /&gt;</p><p>            &lt;drools:event-processing-mode mode="STREAM" /&gt;</p><p>        &lt;/drools:configuration&gt;</p><p>    &lt;/drools:kbase&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>    &lt;drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbase1" name="stateful-session"&gt;</p><p>        &lt;drools:configuration&gt;            </p><p>            &lt;drools:jpa-persistence&gt;</p><p>                &lt;drools:transaction-manager ref="transactionManager" /&gt;</p><p>                &lt;drools:entity-manager-factory ref="entityManagerFactory" /&gt;</p><p>                &lt;drools:variable-persisters&gt;</p><p>                    &lt;drools:persister for-class="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/&gt;</p><p>                    &lt;drools:persister for-class="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/&gt;</p><p>                &lt;/drools:variable-persisters&gt;</p><p>            &lt;/drools:jpa-persistence&gt;</p><p>            &lt;drools:work-item-handlers&gt;</p><p>                &lt;drools:work-item-handler name="Human Task" ref="humanTaskHandler"/&gt;</p><p>            &lt;/drools:work-item-handlers&gt;</p><p>            &lt;drools:keep-reference enabled="true" /&gt;</p><p>            &lt;drools:clock-type type="REALTIME" /&gt;</p><p>        &lt;/drools:configuration&gt;</p><p>        &lt;drools:script&gt;</p><p>            &lt;drools:start-process process-id="1"/&gt;</p><p>            &lt;drools:fire-all-rules/&gt;</p><p>        &lt;/drools:script&gt;</p><p>    &lt;/drools:ksession&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>No when the spring context is loaded I get the same error and the problem is the initTransactionManager method in SingleSessionComand:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The problem is the class does start with "org.springframework" (in the first if statement.  But the class does not contain "jpa" in the second if statement.  Which means the line comment: //configure spring for JPA and distributed transactions</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>public void initTransactionManager(Environment env) {</p><p>        Object tm = env.get( EnvironmentName.TRANSACTION_MANAGER );</p><p>        if ( tm != null &amp;&amp; tm.getClass().getName().startsWith( "org.springframework" ) ) {</p><p>            try {</p><p>                Class&lt;?&gt; cls = Class.forName( "org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager" );</p><p>                Constructor&lt;?&gt; con = cls.getConstructors()[0];</p><p>                this.txm = (TransactionManager) con.newInstance( tm );</p><p>                logger.debug( "Instantiating  DroolsSpringTransactionManager" );</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                if ( tm.getClass().getName().toLowerCase().contains( "jpa" ) ) {</p><p>                    // configure spring for JPA and local transactions</p><p>                    cls = Class.forName( "org.drools.container.spring.beans.persistence.DroolsSpringJpaManager" );</p><p>                    con = cls.getConstructors()[0];</p><p>                    this.jpm =  ( JpaManager) con.newInstance( new Object[] { this.env } );</p><p>                } else {</p><p>                    // configure spring for JPA and distributed transactions </p><p>                }</p><p>            } catch ( Exception e ) {</p><p>                logger.warn( "Could not instatiate DroolsSpringTransactionManager" );</p><p>                throw new RuntimeException( "Could not instatiate org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager", e );</p><p>            }</p><p>        } else {</p><p>            logger.debug( "Instantiating  JtaTransactionManager" );</p><p>            this.txm = new JtaTransactionManager( env.get( EnvironmentName.TRANSACTION ),</p><p>                                                  env.get( EnvironmentName.TRANSACTION_SYNCHRONIZATION_REGISTRY ),</p><p>                                                  tm ); </p><p>            this.jpm = new DefaultJpaManager(this.env);</p><p>        }</p><p>    }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Does anyone from Drools development know when the code will support a  "org.springframework.transaction.jta.JtaTransactionManager" class?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Thanks in advance</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/598807#598807">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="http://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>