<!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;">
    JbpmOnTomcat
</h3>
<span style="margin-bottom: 10px;">
    modified by <a href="http://community.jboss.org/people/anibal.sanchez">Anibal Sanchez</a> in <i>jBPM</i> - <a href="http://community.jboss.org/docs/DOC-11161">View the full document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><h3><span>This how-to outlines the necessary steps to get </span><strong>jBPM 3.2</strong><span> working with </span><strong>Tomcat</strong><span> and </span><strong>MySQL</strong><span>.</span></h3><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>It has been tested with the following <strong>environments:</strong></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Tomcat 5.0.28 / 5.5.26 / 6.0.10 / 7.0.22 (see the notes at the bottom of this page)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>MySQL 5.0.15</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>jBPM 3.2.GA <strong>and also with jBPM 3.2.1/3.2.2/3.2.3</strong> (just some minor changes highlighted in the text below!)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h4><strong>1. Create schema and tables in MySQL</strong></h4><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>1.1 In this example a schema <span style="font-family: 'courier new', courier;">'jbpm32'</span> with a user <span style="font-family: 'courier new', courier;">'jbossjbpm'</span> is used.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>1.2 Generate all jBPM tables using the script from the downloaded jBPM 3.2 suite, which has to be modified a bit to suite the MySQL syntax. Attached to this page is a script (jbpm.jpdl.mysql.sql) with these modifications already done - just for your convenience! If you want your users/roles information (the identity components) also from the MySQL db, use the second sql script attached here (mysql.identity.script.sql for jBPM 3.2.GA and mysql.identity.script.jbpm321.sql for <strong>jBPM 3.2.1</strong>) to set up the necessary tables and fill them with the demo values.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h4><strong>2. Prepare your jBPM archive</strong></h4><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.1 In jbpm-jpdl-3.2.GA/deploy (or jbpm-jpdl-3.2.1/deploy) run</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160; <span style="font-family: 'courier new', courier;">ant customize.console.for.tomcat</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.2 This builds a jbpm-console.war in jbpm-jpdl-3.2.GA/deploy/customized (almost) ready for deployment in TC </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.3 Change the jbpm-console.war/WEB-INF/classes/hibernate.cfg.xml to reflect the following changes:</p><pre class="jive-pre"><code class="jive-code">&lt;hibernate-configuration&gt;
&#160; &lt;session-factory&gt;

&#160;&#160;&#160; &lt;!-- hibernate dialect --&gt;
&#160;&#160;&#160; &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLInnoDBDialect&lt;/property&gt;

&#160;&#160;&#160; &lt;!-- JDBC connection properties (begin) --&gt;
&#160;&#160;&#160; &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
&#160;&#160;&#160; &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/jbpm32&lt;/property&gt;
&#160;&#160;&#160; &lt;property name="hibernate.connection.username"&gt;jbossjbpm&lt;/property&gt;
&#160;&#160;&#160; &lt;property name="hibernate.connection.password"&gt;jbossjbpm&lt;/property&gt;
&#160;&#160;&#160;&#160; &lt;!-- JDBC connection properties (end) --&gt;
&#160;&#160;&#160; 
&#160;&#160;&#160; &lt;property name="hibernate.cache.provider_class"&gt;org.hibernate.cache.HashtableCacheProvider&lt;/property&gt;
&#160;&#160;&#160; 
&#160;&#160;&#160; &lt;!-- DataSource properties (begin) ==
&#160;&#160;&#160; &lt;property name="hibernate.connection.datasource"&gt;java:/JbpmDS&lt;/property&gt;
&#160;&#160;&#160; == DataSource properties (end) --&gt;
&#160;&#160;&#160; &lt;property name="hibernate.transaction.factory_class"&gt;org.hibernate.transaction.JDBCTransactionFactory&lt;/property&gt;
...&#160;&#160;&#160;&#160;&#160;
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>(Make sure to use the hibernate.connection.driver/url attributes to connect to the db and not the hibernate.connection.datasource property. Also set hibernate.transaction.factory_class to JDBCTransactionFactory instead of the JTATransactionFactory or CMTTransactionFactory which are already in this file.)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.4 Copy jboss-j2ee.jar (or maybe as well any jar that contains the default javax.transaction package) to jbpm-console.war/WEB-INF/lib. (Note: jboss-j2ee.jar can be found in a standard JBoss AS distribution eg. jboss-4.0.5.GA/client or in the <a class="jive-link-external-small" href="http://repository.jboss.com/jbossas/core-libs/4.0.5.GA/lib/jboss-j2ee.jar">repo</a>)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.4.1 For <strong>jBPM 3.2.1 and higher</strong>: Copy commons-collections.jar to jbpm-console.war/WEB-INF/lib. (Note: commons-collections.jar can be found in a standard JBoss AS distribution eg. jboss-4.0.5.GA/server/default/lib or in the <a class="jive-link-external-small" href="http://repository.jboss.com/apache-commons/mixed/lib/commons-collections.jar">repo</a>)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.5 Copy the jar containing the mysql jdbc driver to /$CATALINA_HOME/common/lib</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2.6 Copy the adapted jbpm-console.war to /$CATALINA_HOME/webapps</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>+You can now give it a try and start Tomcat. You should be able to start the jbpm web application, but for now you cannot successfully log in. +</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Next thing to do would be to properly configure your security realm. You could either go for the standard file based MemoryRealm and just add the jBPM specific users and roles to /$CATALINA_HOME/conf/tomcat-users.xml, OR... </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h4><strong>3. Setup a JDBC Realm in Tomcat</strong></h4><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>3.1 Create a file jbpm-console.xml in /$CATALINA_HOME/conf/Catalina/localhost similar to </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code">&lt;Context&gt;
&lt;Realm&#160; className="org.apache.catalina.realm.JDBCRealm" 
&#160;&#160;&#160;&#160;&#160;driverName="com.mysql.jdbc.Driver"
&#160;&#160;&#160;&#160;&#160;connectionURL="jdbc:mysql://localhost:3306/jbpm32"
&#160;&#160;&#160;&#160;&#160;connectionName="jbossjbpm" 
&#160;&#160;&#160;&#160;&#160;connectionPassword="jbossjbpm"
&#160;&#160;&#160;&#160;&#160;userTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g" 
&#160;&#160;&#160;&#160;&#160;userNameCol="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_" 
&#160;&#160;&#160;&#160;&#160;userCredCol="DISTINCT u.PASSWORD_"
&#160;&#160;&#160;&#160;&#160;userRoleTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g" 
&#160;&#160;&#160;&#160;&#160;roleNameCol="g.NAME_" &gt;&lt;/Realm&gt;
&lt;/Context&gt;&#160;&#160;&#160;&#160;&#160;
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Now you should be able to run jBPM default web app in Tomcat and login with the username/password (eg. ernie/ernie for jBPM 3.2.GA or manager/manager for <strong>jBPM 3.2.1</strong>) from the db.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>(Note: This how-to first found its way in <a class="jive-link-external-small" href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;p=4032532">this post</a>, so you might find some more discussion about this there.)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h4><strong><strong>4. </strong></strong>Notes for users of Tomcat 7.x</h4><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The Sun jsf libs 1.2 (<a class="jive-link-external-small" href="http://javaserverfaces.java.net/">jsf-api</a>.jar and <a class="jive-link-external-small" href="http://javaserverfaces.java.net/">jsf-impl.jar</a>) need to be included in the jbpm-console.war/WEB-INF/lib directory.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><h4><strong><strong>5. </strong></strong>Notes for users of Tomcat versions older than Tomcat 6.x</h4><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Notes for users of Tomcat versions older than Tomcat 6.x, such as <strong>Tomcat 5.0.28</strong> or <strong>Tomcat 5.5.26</strong>: Tomcat 5.0.28/5.5.26 doesn't include the el.jars by default as the TC 6.0 series does, you will have to repackage <a class="jive-link-external-small" href="http://repository.jboss.com/el/1.0/lib/el-api.jar">el-api.jar</a> and <a class="jive-link-external-small" href="http://repository.jboss.com/el/1.0/lib/el-ri.jar">el-ri.jar</a> back into jbpm-console.war/WEB-INF/lib (these files get deleted by the ant call described in step 2.1 above and can be found in the original web app jbpm-jpdl-3.2.1/deploy/jbpm-console.war/WEB-INF/lib). In addition, the included xml parses make problems as well, so you will also have to replace/delete the content in common/endorsed.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Notes for users of Tomcat 5.x and <strong>jBPM 3.2.2</strong>: The Sun jsf libs (<a class="jive-link-external-small" href="http://repository.jboss.com/sun-jsf/1.2.1/lib/">jsf-api.jar</a> and <a class="jive-link-external-small" href="http://repository.jboss.com/sun-jsf/1.2.1/lib/jsf-impl.jar">jsf-impl.jar</a>) need to be included in the jbpm-console.war/WEB-INF/lib directory as well.</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Comment by <a href="http://community.jboss.org/docs/DOC-11161">going to Community</a></p>

        <p style="margin: 0;">Create a new document in jBPM at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2034">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>