[jBPM] - JBPM 5.3 / Tomcat 7 / H2 / Demo
by smclenahan
smclenahan [https://community.jboss.org/people/smclenahan] modified the document:
"JBPM 5.3 / Tomcat 7 / H2 / Demo"
To view the document, visit: https://community.jboss.org/docs/DOC-18626
--------------------------------------------------------------
I reproduce here contents of my http://ironclaws.wordpress.com/2012/06/24/jbpm-5-3-tomcat-7-h2-demo/ blog article on an install procedure for JBPM5.3 on Tomcat 7.
----
The following details how to install jBPM 5.3 onto Tomcat 7, configured to run the provided 'Demo'. A http://www.h2database.com/html/main.html H2 database instance shall be used - which is reflected in the JTA / Hibernate configuration specified below. The following are assumed installed and relatively clean:
* http://tomcat.apache.org/download-70.cgi Tomcat 7.0 (on port 8080)
* http://ant.apache.org/ Ant 1.8.3
* http://ant.apache.org/ivy/ Apache Ivy 2.0
*NB:* Tomcat should be stopped prior to installation.
*0: Download required software:*
http://www.jboss.org/jbpm JBPM : Select http://sourceforge.net/projects/jbpm/files/ 5.3.0 - Final Installer Full
Once downloaded, unzip to a staging area separate from Tomcat - subsequent actions below will take place within the 'jbpm-install' folder.
*1: Pre-Installation Configuration of Tomcat: Prepare for J2EE*
It should be understood that Tomcat is not a J2EE application server - but rather a servlet container.
However - Tomcat can be made to behave like a J2EE application server.
In order to make this so, J2EE components need to be installed and configured on Tomcat.
For JBPM this is an apriori requirement. The steps below shall add the following J2EE services to Tomcat:
* JTA (Java Transaction API)
* Bitronix 2.1.3 Transaction Manager
* JMS
* JACC
a) In jbpm-install create folder: tomcat2j2ee \
b) In jbpm-install\tomcat2j2ee create the following files:
*ivy.xml*
<ivy-module version="2.0">
<info organisation="jbpm" module="btm" />
<dependencies>
<dependency org="org.codehaus.btm" name="btm-dist" rev="2.1.3" />
<dependency org="org.codehaus.btm" name="btm" rev="2.1.3">
<artifact name="btm" type="jar" />
</dependency>
<dependency org="javax.transaction" name="jta" rev="1.1">
<artifact name="jta" type="jar" />
</dependency>
<dependency org="org.apache.geronimo.specs" name="geronimo-jacc_1.1_spec" rev="1.0.2" >
<artifact name="geronimo-jacc_1.1_spec" type="jar" />
</dependency>
</dependencies>
</ivy-module>
*build.xml*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="J2EE.install">
<property name="install.home" value="./" />
<property environment="env"/>
<property name="tomcat.home" value="${env.CATALINA_HOME}"/>
<property name="tomcat.7.server.lib.dir" value="${tomcat.home}/lib" />
<!-- ############ TOP LEVEL INSTALLATION ########### -->
<target name="install.j2ee.to.tomcat.7" depends="download.j2ee">
<copy todir="${tomcat.7.server.lib.dir}/">
<fileset dir="${install.home}/lib" includes="*.jar" />
</copy>
</target>
<target name="download.j2ee.check">
<echo message="Checking J2EE Download..." />
<condition property="btm.not.available">
<not>
<available file="${install.home}/lib/btm-2.1.3.jar" />
</not>
</condition>
</target>
<target name="download.j2ee" depends="download.j2ee.check" if="btm.not.available">
<echo message="Getting J2EE..." />
<mkdir dir="${install.home}/lib"/>
<ivy:retrieve />
</target>
</project>
c) In jbpm-install\tomcat2j2ee execute:
ant install.j2ee.to.tomcat.7
d) Create the following file in ${CATALINA_HOME}\conf
*btm-config.properties*
bitronix.tm.serverId=tomcat-btm-node0
bitronix.tm.journal.disk.logPart1Filename=${btm.root}/work/btm1.tlog
bitronix.tm.journal.disk.logPart2Filename=${btm.root}/work/btm2.tlog
bitronix.tm.resource.configuration=${btm.root}/conf/resources.properties
e) Add the following parameters to $CATALINA_OPTS - such that they are passed to JVM when Tomcat starts:
-Dbtm.root=${CATALINA_HOME}
-Dbitronix.tm.configuration=${CATALINA_HOME}/conf/btm-config.properties
NB: On windows do this through the configuration tool - do not set environment variable unless you understand the implications.
You will need to specify ${CATALINA_HOME} in full rather than using environment variable.
*You should now have a Tomcat 7 installation with J2EE services required for JBPM present. *
*2: Installation JBPM 5.3 : Pre-Configuration*
The installation process for JBPM 5.3 shall be presented in script form below.
Before that step though it is required to create and perform some initial configuration of both JBPM and Tomcat.
i) Configuration of Tomcat
a) Reconfigure ${CATALINA_HOME}/server.xml
Add following entries to ${CATALINA_HOME}/server.xml after the server entry for: org.apache.catalina.core.JreMemoryLeakPreventionListener
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="bitronix.tm.integration.tomcat55.BTMLifecycleListener" />
Add the following entries to the section:
<Resource name="jdbc/testDS1" uniqueName="jdbc/testDS1" auth="Container" removeAbandoned="true" factory="bitronix.tm.resource.ResourceObjectFactory" type="javax.sql.DataSource" />
<Resource name="jta/UserTransaction" auth="Container" type="javax.transaction.UserTransaction" factory="bitronix.tm.BitronixUserTransactionObjectFactory" />
<Resource name="TransactionManager" auth="Container" type="javax.transaction.TransactionManager" factory="bitronix.tm.BitronixTransactionManagerObjectFactory" />
<Resource name="TransactionSynchronizationRegistry" auth="Container" type="javax.transaction.TransactionSynchronizationRegistry" factory="bitronix.tm.BitronixTransactionSynchronizationRegistryObjectFactory" />
b) Reconfigure ${CATALINA_HOME}/context.xml
Add the following entries to context.xml after 'WatchedResource':
<Transaction factory="bitronix.tm.BitronixUserTransactionObjectFactory" />
<!-- To make java:comp/env/testDS1 available for reports - via jdbc/testDS1 -->
<ResourceLink global="jdbc/testDS1" name="jdbc/testDS1" type="javax.sql.DataSource" />
<ResourceLink global="jta/UserTransaction" name="UserTransaction" type="javax.transaction.UserTransaction" />
<Transaction factory="bitronix.tm.BitronixTransactionSynchronizationRegistryObjectFactory" jotm.timeout="60"/>
NB: The Birt reporting by default will use Tomcat JNDI to look up resources.
The global resources defined in server.xml in terms of Bitronix JNDI are aliased to Tomcat's JNDI using resourcelink's above.
The hibernate configuration (below...) uses the Bitronix JNDI references
ii) Configuration of JBPM
a) Create the following files in: jbpm-install\db
*resources.properties*
resource.ds1.className=bitronix.tm.resource.jdbc.lrc.LrcXADataSource
resource.ds1.uniqueName=jdbc/testDS1
resource.ds1.minPoolSize=0
resource.ds1.maxPoolSize=5
resource.ds1.driverProperties.driverClassName=org.h2.Driver
resource.ds1.driverProperties.url=jdbc:h2:tcp://localhost/~/test
resource.ds1.driverProperties.user=sa
resource.ds1.driverProperties.url=jdbc:mysql://localhost/test
resource.ds1.allowLocalTransactions=true
resource.ds1.testQuery=SELECT 1+1
*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.jbpm.persistence.jpa" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/testDS1</jta-data-source>
<mapping-file>META-INF/JBPMorm.xml</mapping-file>
<mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>
<class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.info.WorkItemInfo</class>
<class>org.drools.persistence.info.SessionInfo</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.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.connection.datasource" value="jdbc/testDS1" />
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
*persistence-human-task-service.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.jbpm.task">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/Taskorm.xml</mapping-file>
<class>org.jbpm.task.Attachment</class>
<class>org.jbpm.task.Content</class>
<class>org.jbpm.task.BooleanExpression</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Delegation</class>
<class>org.jbpm.task.Escalation</class>
<class>org.jbpm.task.Group</class>
<class>org.jbpm.task.I18NText</class>
<class>org.jbpm.task.Notification</class>
<class>org.jbpm.task.EmailNotification</class>
<class>org.jbpm.task.EmailNotificationHeader</class>
<class>org.jbpm.task.PeopleAssignments</class>
<class>org.jbpm.task.Reassignment</class>
<class>org.jbpm.task.Status</class>
<class>org.jbpm.task.Task</class>
<class>org.jbpm.task.TaskData</class>
<class>org.jbpm.task.SubTasksStrategy</class>
<class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>
<class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>
<class>org.jbpm.task.User</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
<property name="hibernate.connection.url" value="jdbc:h2:tcp://localhost/~/test" />
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.connection.autocommit" value="false" />
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
*persistence-human-task-war.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.jbpm.task">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/Taskorm.xml</mapping-file>
<class>org.jbpm.task.Attachment</class>
<class>org.jbpm.task.Content</class>
<class>org.jbpm.task.BooleanExpression</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Delegation</class>
<class>org.jbpm.task.Escalation</class>
<class>org.jbpm.task.Group</class>
<class>org.jbpm.task.I18NText</class>
<class>org.jbpm.task.Notification</class>
<class>org.jbpm.task.EmailNotification</class>
<class>org.jbpm.task.EmailNotificationHeader</class>
<class>org.jbpm.task.PeopleAssignments</class>
<class>org.jbpm.task.Reassignment</class>
<class>org.jbpm.task.Status</class>
<class>org.jbpm.task.Task</class>
<class>org.jbpm.task.TaskData</class>
<class>org.jbpm.task.SubTasksStrategy</class>
<class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>
<class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>
<class>org.jbpm.task.User</class>
<properties>
<property name="hibernate.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.connection.datasource" value="jdbc/testDS1" />
<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.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
NB: The above configurations will make use of H2 backend database - data sources are configured through JNDI using Bitronix as initial context.
b) Create the following file in: jbpm-install\conf
*web.humantaskwar.xml*
<web-app>
<display-name>Human Task Service WAR</display-name>
<servlet>
<servlet-name>HumanTaskServiceServlet</servlet-name>
<servlet-class>org.jbpm.task.servlet.HumanTaskServiceServlet</servlet-class>
<!-- Following is a list of initialization parameters that HumanTaskService Servlet accepts
Main controller is active.config parameter that dictates what transport to initialize.
Then there are transport specific parameters that should be filled in only for selected
transport.
Last part provides access to configuring components of task Service itself. All of them
are optional and in case there are not set default values will apply.
-->
<!-- active configuration on of hornetq|mina|jms (defauls to hornetq) -->
<init-param>
<param-name>active.config</param-name>
<param-value>mina</param-value>
</init-param>
<!-- Apache Mina configuration parameters -->
<init-param>
<param-name>mina.host</param-name>
<param-value>localhost</param-value>
</init-param>
<init-param>
<param-name>mina.port</param-name>
<param-value>9123</param-value>
</init-param>
<!-- HornetQ configuration parameters -->
<init-param>
<param-name>hornetq.port</param-name>
<param-value></param-value>
</init-param>
<!-- JMS configuration parameters -->
<init-param>
<param-name>JMSTaskServer.connectionFactory</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.transacted</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.acknowledgeMode</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.queueName</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.responseQueueName</param-name>
<param-value></param-value>
</init-param>
<!-- Task Service configuration independent of transport -->
<init-param>
<param-name>task.persistence.unit</param-name>
<param-value>org.jbpm.task</param-value>
</init-param>
<!-- use org.jbpm.task.service.DefaultUserGroupCallbackImpl to configure sample user group callback for demo purpose-->
<init-param>
<param-name>user.group.callback.class</param-name>
<param-value>org.jbpm.task.service.DefaultUserGroupCallbackImpl</param-value>
</init-param>
<init-param>
<param-name>escalated.deadline.handler.class</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>user.info.class</param-name>
<param-value></param-value>
</init-param>
<!-- allows to specify location of a files that will be used to initially populate task server db -->
<!-- accepts two types of files: MVEL and properties must be suffixed with .mvel and .properties -->
<!-- location of the files can be either on classpath (with prefix classpath:) or valid URL -->
<!-- NOTE: that with custom users files Administrator user must always be present!!! -->
<!-- use classpath:/org/jbpm/task/servlet/SampleUsers.mvel to configure sample users for demo purpose-->
<!-- DefaultUsers.mvel is used to insert Administrator as it is required for task server to operate -->
<init-param>
<param-name>load.users</param-name>
<param-value>classpath:/org/jbpm/task/servlet/DefaultUsers.mvel</param-value>
</init-param>
<!-- use classpath:/org/jbpm/task/servlet/SampleGroups.mvel to configure sample users for demo purpose-->
<init-param>
<param-name>load.groups</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HumanTaskServiceServlet</servlet-name>
<url-pattern>/HumanTaskServiceServlet/*</url-pattern>
</servlet-mapping>
</web-app>
*Checkpoint: We have at this point installed required J2EE services to Tomcat, configured JNDI datasource components for JPBM on Tomcat and prepared a configuration of JPBM 5.3 to be installed.*
*The next step is to perform the JBPM installation to Tomcat.*
*3: Installation JBPM 5.3*
a) Add the following to the end of: jbpm-install\build.properties
# Tomcat Server Version
tomcat.server.version=7
# Database Parameters
# H2
h2.jdbc.driver.version=1.2.124
# Defines MySQL Connect JDBC Driver to Use
mysql.jdbc.driver.version=5.1.20
b) Create the following files in jbpm-install:
*ivy.xml*
<ivy-module version="2.0">
<info organisation="jbpm" module="btm" />
<dependencies>
<dependency org="javassist" name="javassist" rev="3.4.GA">
<artifact name="javassist" type="jar" />
</dependency>
<dependency org="org.jboss.weld.servlet" name="weld-servlet" rev="1.1.8.Final">
<artifact name="weld-servlet" type="jar" />
</dependency>
</dependencies>
</ivy-module>
*tomcat7build.xml*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="jBPM.install">
<property file="build.properties" />
<property name="install.home" value="./" />
<property environment="env"/>
<property name="tomcat.home" value="${env.CATALINA_HOME}"/>
<property name="tomcat.7.server.conf.dir" value="${tomcat.home}/conf" />
<property name="tomcat.7.server.lib.dir" value="${tomcat.home}/lib" />
<property name="tomcat.7.server.deploy.dir" value="${tomcat.home}/webapps" />
<property name="tomcat.bind.address" value="localhost" />
<property name="h2.jdbc.jar" value="h2-${h2.jdbc.driver.version}.jar" />
<property name="h2.download.url" value="http://repo1.maven.org/maven2/com/h2database/h2/${h2.jdbc.driver.version}..."/>
<property name="mysql.jdbc.jar" value="mysql-connector-java-${mysql.jdbc.driver.version}.jar" />
<property name="mysql.download.url" value="http://repo1.maven.org/maven2/mysql/mysql-connector-java/${mysql.jdbc.dri..."/>
<property name="birt.version.as7" value="3_7_0"/>
<property name="birt.download.url.as7" value="http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/..."/>
<!-- ############ TOP LEVEL INSTALLATION ########### -->
<target name="install.jbpmfull.to.tomcat.7">
<antcall target="download.dependencies" />
<antcall target="install.bitronix.config.into.tomcat.7" />
<antcall target="install.jBPM.into.tomcat.7" />
<antcall target="install.guvnor.into.tomcat.7" />
<antcall target="install.designer.into.tomcat.7" />
<antcall target="install.form.builder.into.tomcat.7" />
<antcall target="install.ht.war.into.tomcat.7" />
</target>
<target name="start.demo">
<antcall target="install.jBPM.runtime" />
<antcall target="start.human.task" />
</target>
<!-- ############ TOMCAT SUPPORT ########### -->
<target name="check.tomcat.version">
<condition property="tomcat.version.is.7">
<equals arg1="${tomcat.server.version}" arg2="7" />
</condition>
</target>
<!-- ############ DOWNLOAD ############ -->
<!-- Dependencies -->
<target name="download.dependencies">
<echo message="Getting Dependencies ..." />
<mkdir dir="${install.home}/lib"/>
<ivy:retrieve />
</target>
<!-- Databases -->
<!-- Download H2 -->
<target name="download.h2.check">
<echo message="Checking H2 download ..." />
<condition property="h2.not.available">
<not>
<available file="${install.home}/db/driver/${h2.jdbc.jar}" />
</not>
</condition>
</target>
<target name="download.h2" depends="download.h2.check" if="h2.not.available">
<echo message="Getting H2..." />
<mkdir dir="${install.home}/db/driver"/>
<get src="${h2.download.url}" dest="${install.home}/db/driver/${h2.jdbc.jar}" />
</target>
<!-- Download MySQL -->
<target name="download.mysql.check">
<echo message="Checking MySql download..." />
<condition property="mysql.not.available">
<not>
<available file="${install.home}/db/driver/${mysql.jdbc.jar}" />
</not>
</condition>
</target>
<target name="download.mysql" depends="download.mysql.check" if="mysql.not.available">
<echo message="Getting MySql ..." />
<mkdir dir="${install.home}/db/driver"/>
<get src="${mysql.download.url}" dest="${install.home}/db/driver/${mysql.jdbc.jar}" />
</target>
<!-- Download jBPM binaries -->
<target name="download.jBPM.bin.check">
<echo message="Checking jBPM binaries download ..." />
<condition property="jBPM.bin.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-bin.zip" />
</not>
</condition>
</target>
<target name="download.jBPM.bin" depends="download.jBPM.bin.check" if="jBPM.bin.not.available">
<echo message="Getting jBPM binaries ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${jBPM.url}/jbpm-${jBPM.version}-bin.zip" dest="${install.home}/lib/jbpm-${jBPM.version}-bin.zip" />
</target>
<!-- Download Drools Guvnor -->
<target name="download.drools.guvnor.check">
<echo message="Checking Drools Guvnor download ..." />
<condition property="drools.guvnor.not.available">
<not>
<available file="${install.home}/lib/guvnor-distribution-wars-${drools.guvnor.version}.war" />
</not>
</condition>
</target>
<target name="download.drools.guvnor" depends="download.drools.guvnor.check" if="drools.guvnor.not.available">
<echo message="Getting Drools Guvnor ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${drools.guvnor.url}" dest="${install.home}/lib/guvnor-distribution-wars-${drools.guvnor.version}.war"/>
</target>
<!-- Download Designer -->
<target name="download.designer.check">
<echo message="Checking Designer download ..." />
<condition property="designer.not.available">
<not>
<available file="${install.home}/lib/designer-${designer.version}.war" />
</not>
</condition>
</target>
<target name="download.designer" depends="download.designer.check" if="designer.not.available">
<echo message="Getting Designer ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${designer.url}/designer-${designer.version}.war" dest="${install.home}/lib/designer-${designer.version}.war" />
</target>
<!-- Download form builder -->
<target name="download.form.builder.check">
<echo message="Checking Form Builder download ..." />
<condition property="form.builder.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-form-builder.war" />
</not>
</condition>
</target>
<target name="download.form.builder" depends="download.form.builder.check" if="form.builder.not.available">
<echo message="Getting Form Builder ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${form.builder.url}" dest="${install.home}/lib/jbpm-${jBPM.version}-form-builder.war" />
</target>
<!-- Download jBPM human task server war -->
<target name="download.jBPM.ht-war.check">
<echo message="Checking jBPM human task war download ..." />
<condition property="jBPM.ht-war.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-human-task-war.zip" />
</not>
</condition>
</target>
<target name="download.jBPM-ht.war" depends="download.jBPM.ht-war.check" if="jBPM.ht-war.not.available">
<echo message="Getting jBPM human task war ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${jBPM.url}/jbpm-${jBPM.version}-human-task-war.zip" dest="${install.home}/lib/jbpm-${jBPM.version}-human-task-war.zip" />
</target>
<!-- Download jBPM gwt-console -->
<target name="download.jBPM.gwt-console.check">
<echo message="Checking jBPM gwt-console download ..." />
<condition property="jBPM.gwt-console.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-gwt-console.zip" />
</not>
</condition>
</target>
<target name="download.jBPM.gwt-console" depends="download.jBPM.gwt-console.check" if="jBPM.gwt-console.not.available">
<echo message="Getting jBPM gwt-console ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${jBPM.url}/jbpm-${jBPM.version}-gwt-console.zip" dest="${install.home}/lib/jbpm-${jBPM.version}-gwt-console.zip" />
</target>
<!-- Download BIRT engine for AS7 -->
<target name="check.birt.as7">
<condition property="birt.download">
<equals arg1="${jBPM.birt.download}" arg2="true" />
</condition>
</target>
<target name="download.birt.check.as7" depends="check.birt.as7" if="birt.download">
<echo message="Checking birt reporting engine download for as7 ..." />
<condition property="birt.not.available">
<not>
<available file="${install.home}/lib/birt-runtime-${birt.version.as7}.zip" />
</not>
</condition>
</target>
<target name="download.birt.as7" depends="download.birt.check.as7" if="birt.not.available">
<echo message="Getting birt reporting engine for AS7 ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${birt.download.url.as7}" dest="${install.home}/lib/birt-runtime-${birt.version.as7}.zip" />
</target>
<!-- ############ INSTALL ############ -->
<!-- Install Bitronix -->
<target name="install.bitronix.config.into.tomcat.7">
<copy todir="${tomcat.7.server.conf.dir}"
file="${install.home}/db/resources.properties"
overwrite="true" />
</target>
<!-- Install JDBC -->
<target name="install.h2.into.tomcat.7" depends="download.h2,check.tomcat.version">
<copy todir="${tomcat.7.server.lib.dir}"
file="${install.home}/db/driver/${h2.jdbc.jar}"
overwrite="true" />
</target>
<target name="install.mysql.into.tomcat.7" depends="download.mysql,check.tomcat.version">
<copy todir="${tomcat.7.server.lib.dir}"
file="${install.home}/db/driver/${mysql.jdbc.jar}"
overwrite="true" />
</target>
<!-- Install guvnor -->
<target name="install.guvnor.into.tomcat.7" depends="download.drools.guvnor,check.tomcat.version">
<mkdir dir="${install.home}/target"/>
<mkdir dir="${install.home}/target/jbpm-drools-guvnor-war"/>
<unzip src="${install.home}/lib/guvnor-distribution-wars-${drools.guvnor.version}.war"
dest="${install.home}/target/jbpm-drools-guvnor-war" />
<!-- Fixes for Tomcat... -->
<delete file="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib/servlet-api-2.5.jar"/>
<copy file="${install.home}/lib/weld-servlet-1.1.8.Final.jar"
tofile="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib/weld-servlet-1.1.8.Final.jar"
overwrite="true" />
<antcall target="removeJavaxServletFromJar" >
<param name="jarpath" value="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib" />
<param name="jarname" value="jboss-servlet-api_3.0_spec-1.0.0.Final.jar" />
</antcall>
<antcall target="removeJavaxServletFromJar" >
<param name="jarpath" value="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib" />
<param name="jarname" value="gwt-user-2.3.0.jar" />
</antcall>
<zip basedir="${install.home}/target/jbpm-drools-guvnor-war"
destfile="${install.home}/target/guvnor-distribution-wars-${drools.guvnor.version}.war" />
<copy file="${install.home}/target/guvnor-distribution-wars-${drools.guvnor.version}.war"
tofile="${tomcat.7.server.deploy.dir}/drools-guvnor.war"
overwrite="true" />
<delete dir="${install.home}/target"/>
</target>
<target name="removeJavaxServletFromJar">
<mkdir dir="${jarpath}/${jarname}.tmp" />
<unzip src="${jarpath}/${jarname}"
dest="${jarpath}/${jarname}.tmp" />
<move file="${jarpath}/${jarname}" toFile="${jarpath}/${jarname}.orig" />
<delete dir="${jarpath}/${jarname}.tmp/javax/servlet" />
<zip basedir="${jarpath}/${jarname}.tmp"
destfile="${jarpath}/${jarname}" />
<delete dir="${jarpath}/${jarname}.tmp" />
</target>
<!-- Install designer -->
<target name="install.designer.into.tomcat.7" depends="download.designer,check.tomcat.version">
<copy file="${install.home}/lib/designer-${designer.version}.war"
tofile="${tomcat.7.server.deploy.dir}/designer.war"
overwrite="true" />
</target>
<!-- Install form builder -->
<target name="install.form.builder.into.tomcat.7" depends="download.form.builder">
<mkdir dir="${install.home}/target"/>
<mkdir dir="${install.home}/target/jbpm-form-builder-war"/>
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-form-builder.war" dest="${install.home}/target/jbpm-form-builder-war" />
<copy file="${install.home}/auth/users.properties"
tofile="${install.home}/target/jbpm-form-builder-war/WEB-INF/classes/users.properties"
overwrite="true" />
<copy file="${install.home}/auth/roles.properties"
tofile="${install.home}/target/jbpm-form-builder-war/WEB-INF/classes/roles.properties"
overwrite="true" />
<copy file="${install.home}/auth/users.properties"
tofile="${jboss.server.conf.dir}/users.properties"
overwrite="true" />
<copy file="${install.home}/auth/roles.properties"
tofile="${jboss.server.conf.dir}/roles.properties"
overwrite="true" />
<zip basedir="${install.home}/target/jbpm-form-builder-war"
destfile="${install.home}/target/jbpm-${jBPM.version}-form-builder.war" />
<copy file="${install.home}/target/jbpm-${jBPM.version}-form-builder.war"
tofile="${tomcat.7.server.deploy.dir}/jbpm-form-builder.war"
overwrite="true" />
<delete dir="${install.home}/target" />
</target>
<!-- Install jbpm human task war -->
<target name="install.ht.war.into.tomcat.7" depends="download.jBPM-ht.war">
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-human-task-war.zip" dest="${install.home}/lib" />
<mkdir dir="${install.home}/target"/>
<mkdir dir="${install.home}/target/jbpm-human-task-war"/>
<unzip src="${install.home}/lib/jbpm-human-task-war-${jBPM.version}.war" dest="${install.home}/target/jbpm-human-task-war" />
<!-- Abstraction for Tomcat Install -->
<copy file="${install.home}/conf/web.humantaskwar.xml"
tofile="${install.home}/task-service/resources/war/web.xml"
overwrite="true" />
<copy file="${install.home}/db/persistence-human-task-war.xml"
tofile="${install.home}/task-service/resources/war/persistence.xml"
overwrite="true" />
<!-- Now Proceed To patch the WAR... -->
<copy file="${install.home}/task-service/resources/war/web.xml"
tofile="${install.home}/target/jbpm-human-task-war/WEB-INF/web.xml"
overwrite="true" />
<copy file="${install.home}/task-service/resources/war/persistence.xml"
tofile="${install.home}/target/jbpm-human-task-war/WEB-INF/classes/META-INF/persistence.xml"
overwrite="true" />
<copy file="${install.home}/jbpm-tm.jar"
tofile="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/jbpm-tm.jar"
overwrite="true" />
<!-- Fix for Tomcat -->
<delete file="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/jta-1.1.jar"/>
<delete file="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/javassist-3.14.0-GA.jar" />
<copy todir="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/"
file="${install.home}/lib/javassist-3.4.GA.jar"
overwrite="true" />
<!-- Rebuild the WAR and deploy -->
<zip basedir="${install.home}/target/jbpm-human-task-war"
destfile="${install.home}/target/jbpm-${jBPM.version}-human-task-war.war" />
<copy file="${install.home}/target/jbpm-${jBPM.version}-human-task-war.war"
tofile="${tomcat.7.server.deploy.dir}/jbpm-human-task-war.war"
overwrite="true" />
<delete dir="${install.home}/target" />
</target>
<!-- Install gwt-console -->
<target name="install.jBPM.into.tomcat.7" depends="download.mysql,download.h2,download.jBPM.gwt-console" >
<antcall target="install.mysql.into.tomcat.7" />
<antcall target="install.h2.into.tomcat.7" />
<mkdir dir="${install.home}/target"/>
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-gwt-console.zip"
dest="${install.home}/target/" />
<antcall target="install.jBPM-gwt-console.into.tomcat.7" />
<antcall target="install.jBPM-gwt-console-server.into.tomcat.7" />
<delete dir="${install.home}/target"/>
</target>
<target name="install.jBPM-gwt-console.into.tomcat.7" depends="check.tomcat.version" if="tomcat.version.is.7">
<!-- gwt-console -->
<unzip src="${install.home}/target/jbpm-gwt-console-${jBPM.version}.war"
dest="${install.home}/target/jbpm-gwt-console-war"/>
<!-- Tomcat Fix -->
<copy todir="${install.home}/target/jbpm-gwt-console-war/WEB-INF/lib"
file="${install.home}/lib/javassist-3.4.GA.jar"
overwrite="true" />
<!-- Repackage WAR and deploy -->
<zip basedir="${install.home}/target/jbpm-gwt-console-war"
destfile="${install.home}/target/jbpm-gwt-console-${jBPM.version}.war"/>
<copy file="${install.home}/target/jbpm-gwt-console-${jBPM.version}.war"
tofile="${tomcat.7.server.deploy.dir}/jbpm-gwt-console.war"
overwrite="true" />
</target>
<!-- Install gwt-console-server -->
<target name="install.jBPM-gwt-console-server.into.tomcat.7" depends="check.tomcat.version" if="tomcat.version.is.7">
<!-- reporting -->
<antcall target="download.birt.as7" />
<!-- gwt-console-server -->
<unzip src="${install.home}/target/jbpm-gwt-console-server-${jBPM.version}.war"
dest="${install.home}/target/jbpm-gwt-console-server-war"/>
<copy file="${install.home}/db/persistence.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/META-INF/persistence.xml"
overwrite="true" />
<copy file="${install.home}/db/ProcessInstanceInfo.hbm.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/META-INF/ProcessInstanceInfo.hbm.xml"
overwrite="true" />
<copy file="${install.home}/conf/context.gwtconsoleserver.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/META-INF/context.xml"
overwrite="true" />
<copy file="${install.home}/conf/web.gwtconsoleserver.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/web.xml"
overwrite="true" />
<copy file="${install.home}/auth/users.properties"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/users.properties"
overwrite="true" />
<copy file="${install.home}/auth/roles.properties"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/roles.properties"
overwrite="true" />
<copy file="${install.home}/jbpm-tm.jar"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/jbpm-tm.jar"
overwrite="true" />
<!-- Fix for conflicting javassist jar -->
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/javassist-3.6.0.GA.jar"/>
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/javassist-3.14.0-GA.jar" />
<copy todir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib"
file="${install.home}/lib/javassist-3.4.GA.jar"
overwrite="true" />
<!-- Further fixes for Tomcat... -->
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/el-api-1.2.jar"/>
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/dom4j-1.6.jar"/>
<!-- Other configuration like work item handlers -->
<!--
<copy todir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes" overwrite="true">
<fileset dir="${install.home}/conf"/>
</copy>
-->
<!-- reporting -->
<antcall target="install.reporting.into.tomcat.7" />
<zip basedir="${install.home}/target/jbpm-gwt-console-server-war"
destfile="${install.home}/target/jbpm-gwt-console-server-${jBPM.version}.war"/>
<copy file="${install.home}/target/jbpm-gwt-console-server-${jBPM.version}.war"
tofile="${tomcat.7.server.deploy.dir}/gwt-console-server.war"
overwrite="true" />
</target>
<!-- Install reporting Tomcat7 -->
<target name="install.reporting.into.tomcat.7" depends="check.birt.as7" if="birt.download" >
<mkdir dir="${install.home}/birt"/>
<unzip src="${install.home}/lib/birt-runtime-${birt.version.as7}.zip"
dest="${install.home}/birt"/>
<copy todir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib">
<fileset dir="${install.home}/birt/birt-runtime-${birt.version.as7}/ReportEngine/lib">
<include name="**/*.jar"/>
</fileset>
</copy>
<mkdir dir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/output"/>
<mkdir dir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/output/image"/>
<mkdir dir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/reports"/>
<copy file="${install.home}/report/${birt.version.as7}/overall_activity.rptdesign"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/reports/overall_activity.rptdesign"
overwrite="true"/>
<delete dir="${install.home}/birt"/>
</target>
<!-- Install Demo -->
<!-- create runtime -->
<target name="install.jBPM.runtime" depends="download.jBPM.bin">
<mkdir dir="${install.home}/runtime"/>
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-bin.zip" dest="${install.home}/runtime" />
</target>
<path id="classpath.human.task">
<fileset dir="${install.home}/runtime" includes="**/*.jar"/>
<fileset dir="${install.home}/db/driver" includes="**/*.jar"/>
</path>
<target name="start.human.task">
<mkdir dir="${install.home}/task-service/target"/>
<javac includeantruntime="false" srcdir="${install.home}/task-service/src" destdir="${install.home}/task-service/target" classpathref="classpath.human.task">
<compilerarg value="-Xlint:unchecked"/>
</javac>
<copy tofile="${install.home}/task-service/resources/META-INF/persistence.xml"
file="${install.home}/db/persistence-human-task-service.xml"
overwrite="true" />
<copy todir="${install.home}/task-service/target">
<fileset dir="${install.home}/task-service/resources"/>
</copy>
<java classname="org.jbpm.DemoTaskService" fork="true">
<classpath>
<pathelement path="${install.home}/task-service/target"/>
<path refid="classpath.human.task" />
</classpath>
</java>
</target>
</project>
c) Perform the installation: In jbpm-install execute:
ant -buildfile tomcat7build.xml install.jbpmfull.to.tomcat.7
d) Add the following parameters to $CATALINA_OPTS and passed to JVM when Tomcat started:
-Xms256m
-Xmx1024m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-Dreporting.needcontext=true
NB: On windows do this through the configuration tool - do not set environment variable unless you understand the implications.
*Checkpoint: We have at this point installed JBPM 5.3 to Tomcat.*
*Before proceeding to run the 'demo' below it should be noted that there is an error in the 5.3 FINAL distribution which prevents the console from running whilst drools-guvnor is running. In order to see the demo cleanly - stop drools-guvnor. *
*In the above configuration - reporting will work - however - see here for implications of moving away from H2 backend, and http://ironclaws.wordpress.com/2012/06/23/jbpm-reporting-birt-tomcat-7-pu... here if you want to configure the report engines initial JNDI context.*
*4: Running the Demo*
a) Update report definition: ${CATALINA_HOME}/webapps/gwt-console-server/WEB-INF/reports/overall_activity.rptdesign
Add following to 'oda-data-source' section:
<property name="odaJndiName">java:comp/env/jdbc/testDS1</property>
b) Add following to Tomcat startup parameter:
-Djbpm.console.directory=\sample\evaluation\src\main\resources
c) Reconfigure ${CATALINA_HOME}/tomcat-users.xml, add:
<role rolename="manager" />
<role rolename="admin" />
<role rolename="user" />
<role rolename="PM" />
<role rolename="HR" />
<role rolename="webdesigner" />
<role rolename="functionalanalyst" />
<role rolename="sales" />
<user username="krisv" password="krisv" roles="manager,admin,user" />
<user username="john" password="john" roles="admin,manager,user,PM" />
<user username="mary" password="mary" roles="admin,manager,user,HR" />
<user username="sales-rep" password="sales-rep" roles="admin,manager,user,sales" />
<user username="admin" password="admin" roles="admin,manager,user,webdesigner,functionalanalyst" />
e) Start H2: In jbpm-install execute:
ant start.h2
f) Start Tomcat
g) Stop drools-guvnor and restart gwt-console-server (to be on the safe side)
h) Naviate to: http://localhost:8080/jbpm-gwt-console http://localhost:8080/jbpm-gwt-console
--------------------------------------------------------------
Comment by going to Community
[https://community.jboss.org/docs/DOC-18626]
Create a new document in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=102&c...]
12 years, 5 months
[jBPM] - JBPM 5.3 / Tomcat 7 / H2 / Demo
by smclenahan
smclenahan [https://community.jboss.org/people/smclenahan] modified the document:
"JBPM 5.3 / Tomcat 7 / H2 / Demo"
To view the document, visit: https://community.jboss.org/docs/DOC-18626
--------------------------------------------------------------
I reproduce here contents of my http://ironclaws.wordpress.com/2012/06/24/jbpm-5-3-tomcat-7-h2-demo/ blog article on an install procedure for JBPM5.3 on Tomcat 7.
----
The following details how to install jBPM 5.3 onto Tomcat 7, configured to run the provided 'Demo'. A http://www.h2database.com/html/main.html H2 database instance shall be used - which is reflected in the JTA / Hibernate configuration specified below. The following are assumed installed and relatively clean:
* http://tomcat.apache.org/download-70.cgi Tomcat 7.0 (on port 8080)
* http://ant.apache.org/ Ant 1.8.3
* http://ant.apache.org/ivy/ Apache Ivy 2.0
*NB:* Tomcat should be stopped prior to installation.
*0: Download required software:*
http://www.jboss.org/jbpm JBPM : Select http://sourceforge.net/projects/jbpm/files/ 5.3.0 - Final Installer Full
Once downloaded, unzip to a staging area separate from Tomcat - subsequent actions below will take place within the 'jbpm-install' folder.
*1: Pre-Installation Configuration of Tomcat: Prepare for J2EE*
It should be understood that Tomcat is not a J2EE application server - but rather a servlet container.
However - Tomcat can be made to behave like a J2EE application server.
In order to make this so, J2EE components need to be installed and configured on Tomcat.
For JBPM this is an apriori requirement. The steps below shall add the following J2EE services to Tomcat:
* JTA (Java Transaction API)
* Bitronix 2.1.3 Transaction Manager
* JMS
* JACC
a) In jbpm-install create folder: tomcat2j2ee \
b) In jbpm-install\tomcat2j2ee create the following files:
*ivy.xml*
<ivy-module version="2.0">
<info organisation="jbpm" module="btm" />
<dependencies>
<dependency org="org.codehaus.btm" name="btm-dist" rev="2.1.3" />
<dependency org="org.codehaus.btm" name="btm" rev="2.1.3">
<artifact name="btm" type="jar" />
</dependency>
<dependency org="javax.transaction" name="jta" rev="1.1">
<artifact name="jta" type="jar" />
</dependency>
<dependency org="org.apache.geronimo.specs" name="geronimo-jacc_1.1_spec" rev="1.0.2" >
<artifact name="geronimo-jacc_1.1_spec" type="jar" />
</dependency>
</dependencies>
</ivy-module>
*build.xml*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="J2EE.install">
<property name="install.home" value="./" />
<property environment="env"/>
<property name="tomcat.home" value="${env.CATALINA_HOME}"/>
<property name="tomcat.7.server.lib.dir" value="${tomcat.home}/lib" />
<!-- ############ TOP LEVEL INSTALLATION ########### -->
<target name="install.j2ee.to.tomcat.7" depends="download.j2ee">
<copy todir="${tomcat.7.server.lib.dir}/">
<fileset dir="${install.home}/lib" includes="*.jar" />
</copy>
</target>
<target name="download.j2ee.check">
<echo message="Checking J2EE Download..." />
<condition property="btm.not.available">
<not>
<available file="${install.home}/lib/btm-2.1.3.jar" />
</not>
</condition>
</target>
<target name="download.j2ee" depends="download.j2ee.check" if="btm.not.available">
<echo message="Getting J2EE..." />
<mkdir dir="${install.home}/lib"/>
<ivy:retrieve />
</target>
</project>
c) In jbpm-install\tomcat2j2ee execute:
ant install.j2ee.to.tomcat.7
d) Create the following file in ${CATALINA_HOME}\conf
*btm-config.properties*
bitronix.tm.serverId=tomcat-btm-node0
bitronix.tm.journal.disk.logPart1Filename=${btm.root}/work/btm1.tlog
bitronix.tm.journal.disk.logPart2Filename=${btm.root}/work/btm2.tlog
bitronix.tm.resource.configuration=${btm.root}/conf/resources.properties
e) Add the following parameters to $CATALINA_OPTS - such that they are passed to JVM when Tomcat starts:
-Dbtm.root=${CATALINA_HOME}
-Dbitronix.tm.configuration=${CATALINA_HOME}/conf/btm-config.properties
NB: On windows do this through the configuration tool - do not set environment variable unless you understand the implications.
You will need to specify ${CATALINA_HOME} in full rather than using environment variable.
*You should now have a Tomcat 7 installation with J2EE services required for JBPM present. *
*2: Installation JBPM 5.3 : Pre-Configuration*
The installation process for JBPM 5.3 shall be presented in script form below.
Before that step though it is required to create and perform some initial configuration of both JBPM and Tomcat.
i) Configuration of Tomcat
a) Reconfigure ${CATALINA_HOME}/server.xml
Add following entries to ${CATALINA_HOME}/server.xml after the server entry for: org.apache.catalina.core.JreMemoryLeakPreventionListener
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="bitronix.tm.integration.tomcat55.BTMLifecycleListener" />
Add the following entries to the section:
<Resource name="jdbc/testDS1" uniqueName="jdbc/testDS1" auth="Container" removeAbandoned="true" factory="bitronix.tm.resource.ResourceObjectFactory" type="javax.sql.DataSource" />
<Resource name="jta/UserTransaction" auth="Container" type="javax.transaction.UserTransaction" factory="bitronix.tm.BitronixUserTransactionObjectFactory" />
<Resource name="TransactionManager" auth="Container" type="javax.transaction.TransactionManager" factory="bitronix.tm.BitronixTransactionManagerObjectFactory" />
<Resource name="TransactionSynchronizationRegistry" auth="Container" type="javax.transaction.TransactionSynchronizationRegistry" factory="bitronix.tm.BitronixTransactionSynchronizationRegistryObjectFactory" />
b) Reconfigure ${CATALINA_HOME}/context.xml
Add the following entries to context.xml after 'WatchedResource':
<Transaction factory="bitronix.tm.BitronixUserTransactionObjectFactory" />
<!-- To make java:comp/env/testDS1 available for reports - via jdbc/testDS1 -->
<ResourceLink global="jdbc/testDS1" name="jdbc/testDS1" type="javax.sql.DataSource" />
<ResourceLink global="jta/UserTransaction" name="UserTransaction" type="javax.transaction.UserTransaction" />
<Transaction factory="bitronix.tm.BitronixTransactionSynchronizationRegistryObjectFactory" jotm.timeout="60"/>
NB: The Birt reporting by default will use Tomcat JNDI to look up resources.
The global resources defined in server.xml in terms of Bitronix JNDI are aliased to Tomcat's JNDI using resourcelink's above.
The hibernate configuration (below...) uses the Bitronix JNDI references
ii) Configuration of JBPM
a) Create the following files in: jbpm-install\db
*resources.properties*
resource.ds1.className=bitronix.tm.resource.jdbc.lrc.LrcXADataSource
resource.ds1.uniqueName=jdbc/testDS1
resource.ds1.minPoolSize=0
resource.ds1.maxPoolSize=5
resource.ds1.driverProperties.driverClassName=org.h2.Driver
resource.ds1.driverProperties.url=jdbc:h2:tcp://localhost/~/test
resource.ds1.driverProperties.user=sa
resource.ds1.driverProperties.url=jdbc:mysql://localhost/test
resource.ds1.allowLocalTransactions=true
resource.ds1.testQuery=SELECT 1+1
*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.jbpm.persistence.jpa" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/testDS1</jta-data-source>
<mapping-file>META-INF/JBPMorm.xml</mapping-file>
<mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>
<class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
<class>org.drools.persistence.info.WorkItemInfo</class>
<class>org.drools.persistence.info.SessionInfo</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.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.connection.datasource" value="jdbc/testDS1" />
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
*persistence-human-task-service.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.jbpm.task">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/Taskorm.xml</mapping-file>
<class>org.jbpm.task.Attachment</class>
<class>org.jbpm.task.Content</class>
<class>org.jbpm.task.BooleanExpression</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Delegation</class>
<class>org.jbpm.task.Escalation</class>
<class>org.jbpm.task.Group</class>
<class>org.jbpm.task.I18NText</class>
<class>org.jbpm.task.Notification</class>
<class>org.jbpm.task.EmailNotification</class>
<class>org.jbpm.task.EmailNotificationHeader</class>
<class>org.jbpm.task.PeopleAssignments</class>
<class>org.jbpm.task.Reassignment</class>
<class>org.jbpm.task.Status</class>
<class>org.jbpm.task.Task</class>
<class>org.jbpm.task.TaskData</class>
<class>org.jbpm.task.SubTasksStrategy</class>
<class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>
<class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>
<class>org.jbpm.task.User</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
<property name="hibernate.connection.url" value="jdbc:h2:tcp://localhost/~/test" />
<property name="hibernate.connection.username" value="sa"/>
<property name="hibernate.connection.password" value=""/>
<property name="hibernate.connection.autocommit" value="false" />
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
*persistence-human-task-war.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.jbpm.task">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<mapping-file>META-INF/Taskorm.xml</mapping-file>
<class>org.jbpm.task.Attachment</class>
<class>org.jbpm.task.Content</class>
<class>org.jbpm.task.BooleanExpression</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Comment</class>
<class>org.jbpm.task.Deadline</class>
<class>org.jbpm.task.Delegation</class>
<class>org.jbpm.task.Escalation</class>
<class>org.jbpm.task.Group</class>
<class>org.jbpm.task.I18NText</class>
<class>org.jbpm.task.Notification</class>
<class>org.jbpm.task.EmailNotification</class>
<class>org.jbpm.task.EmailNotificationHeader</class>
<class>org.jbpm.task.PeopleAssignments</class>
<class>org.jbpm.task.Reassignment</class>
<class>org.jbpm.task.Status</class>
<class>org.jbpm.task.Task</class>
<class>org.jbpm.task.TaskData</class>
<class>org.jbpm.task.SubTasksStrategy</class>
<class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>
<class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>
<class>org.jbpm.task.User</class>
<properties>
<property name="hibernate.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<property name="hibernate.connection.datasource" value="jdbc/testDS1" />
<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.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
</properties>
</persistence-unit>
</persistence>
NB: The above configurations will make use of H2 backend database - data sources are configured through JNDI using Bitronix as initial context.
b) Create the following file in: jbpm-install\conf
*web.humantaskwar.xml*
<web-app>
<display-name>Human Task Service WAR</display-name>
<servlet>
<servlet-name>HumanTaskServiceServlet</servlet-name>
<servlet-class>org.jbpm.task.servlet.HumanTaskServiceServlet</servlet-class>
<!-- Following is a list of initialization parameters that HumanTaskService Servlet accepts
Main controller is active.config parameter that dictates what transport to initialize.
Then there are transport specific parameters that should be filled in only for selected
transport.
Last part provides access to configuring components of task Service itself. All of them
are optional and in case there are not set default values will apply.
-->
<!-- active configuration on of hornetq|mina|jms (defauls to hornetq) -->
<init-param>
<param-name>active.config</param-name>
<param-value>mina</param-value>
</init-param>
<!-- Apache Mina configuration parameters -->
<init-param>
<param-name>mina.host</param-name>
<param-value>localhost</param-value>
</init-param>
<init-param>
<param-name>mina.port</param-name>
<param-value>9123</param-value>
</init-param>
<!-- HornetQ configuration parameters -->
<init-param>
<param-name>hornetq.port</param-name>
<param-value></param-value>
</init-param>
<!-- JMS configuration parameters -->
<init-param>
<param-name>JMSTaskServer.connectionFactory</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.transacted</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.acknowledgeMode</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.queueName</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>JMSTaskServer.responseQueueName</param-name>
<param-value></param-value>
</init-param>
<!-- Task Service configuration independent of transport -->
<init-param>
<param-name>task.persistence.unit</param-name>
<param-value>org.jbpm.task</param-value>
</init-param>
<!-- use org.jbpm.task.service.DefaultUserGroupCallbackImpl to configure sample user group callback for demo purpose-->
<init-param>
<param-name>user.group.callback.class</param-name>
<param-value>org.jbpm.task.service.DefaultUserGroupCallbackImpl</param-value>
</init-param>
<init-param>
<param-name>escalated.deadline.handler.class</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>user.info.class</param-name>
<param-value></param-value>
</init-param>
<!-- allows to specify location of a files that will be used to initially populate task server db -->
<!-- accepts two types of files: MVEL and properties must be suffixed with .mvel and .properties -->
<!-- location of the files can be either on classpath (with prefix classpath:) or valid URL -->
<!-- NOTE: that with custom users files Administrator user must always be present!!! -->
<!-- use classpath:/org/jbpm/task/servlet/SampleUsers.mvel to configure sample users for demo purpose-->
<!-- DefaultUsers.mvel is used to insert Administrator as it is required for task server to operate -->
<init-param>
<param-name>load.users</param-name>
<param-value>classpath:/org/jbpm/task/servlet/DefaultUsers.mvel</param-value>
</init-param>
<!-- use classpath:/org/jbpm/task/servlet/SampleGroups.mvel to configure sample users for demo purpose-->
<init-param>
<param-name>load.groups</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HumanTaskServiceServlet</servlet-name>
<url-pattern>/HumanTaskServiceServlet/*</url-pattern>
</servlet-mapping>
</web-app>
*Checkpoint: We have at this point installed required J2EE services to Tomcat, configured JNDI datasource components for JPBM on Tomcat and prepared a configuration of JPBM 5.3 to be installed.*
*The next step is to perform the JBPM installation to Tomcat.*
*3: Installation JBPM 5.3*
a) Add the following to the end of: jbpm-install\build.properties
# Tomcat Server Version
tomcat.server.version=7
# Database Parameters
# H2
h2.jdbc.driver.version=1.2.124
# Defines MySQL Connect JDBC Driver to Use
mysql.jdbc.driver.version=5.1.20
b) Create the following files in jbpm-install:
*ivy.xml*
<ivy-module version="2.0">
<info organisation="jbpm" module="btm" />
<dependencies>
<dependency org="javassist" name="javassist" rev="3.4.GA">
<artifact name="javassist" type="jar" />
</dependency>
<dependency org="org.jboss.weld.servlet" name="weld-servlet" rev="1.1.8.Final">
<artifact name="weld-servlet" type="jar" />
</dependency>
</dependencies>
</ivy-module>
*tomcat7build.xml*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="jBPM.install">
<property file="build.properties" />
<property name="install.home" value="./" />
<property environment="env"/>
<property name="tomcat.home" value="${env.CATALINA_HOME}"/>
<property name="tomcat.7.server.conf.dir" value="${tomcat.home}/conf" />
<property name="tomcat.7.server.lib.dir" value="${tomcat.home}/lib" />
<property name="tomcat.7.server.deploy.dir" value="${tomcat.home}/webapps" />
<property name="tomcat.bind.address" value="localhost" />
<property name="h2.jdbc.jar" value="h2-${h2.jdbc.driver.version}.jar" />
<property name="h2.download.url" value="http://repo1.maven.org/maven2/com/h2database/h2/${h2.jdbc.driver.version}..."/>
<property name="mysql.jdbc.jar" value="mysql-connector-java-${mysql.jdbc.driver.version}.jar" />
<property name="mysql.download.url" value="http://repo1.maven.org/maven2/mysql/mysql-connector-java/${mysql.jdbc.dri..."/>
<property name="birt.version.as7" value="3_7_0"/>
<property name="birt.download.url.as7" value="http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/..."/>
<!-- ############ TOP LEVEL INSTALLATION ########### -->
<target name="install.jbpmfull.to.tomcat.7">
<antcall target="download.dependencies" />
<antcall target="install.bitronix.config.into.tomcat.7" />
<antcall target="install.jBPM.into.tomcat.7" />
<antcall target="install.guvnor.into.tomcat.7" />
<antcall target="install.ht.war.into.tomcat.7" />
</target>
<target name="start.demo">
<antcall target="install.jBPM.runtime" />
<antcall target="start.human.task" />
</target>
<!-- ############ TOMCAT SUPPORT ########### -->
<target name="check.tomcat.version">
<condition property="tomcat.version.is.7">
<equals arg1="${tomcat.server.version}" arg2="7" />
</condition>
</target>
<!-- ############ DOWNLOAD ############ -->
<!-- Dependencies -->
<target name="download.dependencies">
<echo message="Getting Dependencies ..." />
<mkdir dir="${install.home}/lib"/>
<ivy:retrieve />
</target>
<!-- Databases -->
<!-- Download H2 -->
<target name="download.h2.check">
<echo message="Checking H2 download ..." />
<condition property="h2.not.available">
<not>
<available file="${install.home}/db/driver/${h2.jdbc.jar}" />
</not>
</condition>
</target>
<target name="download.h2" depends="download.h2.check" if="h2.not.available">
<echo message="Getting H2..." />
<mkdir dir="${install.home}/db/driver"/>
<get src="${h2.download.url}" dest="${install.home}/db/driver/${h2.jdbc.jar}" />
</target>
<!-- Download MySQL -->
<target name="download.mysql.check">
<echo message="Checking MySql download..." />
<condition property="mysql.not.available">
<not>
<available file="${install.home}/db/driver/${mysql.jdbc.jar}" />
</not>
</condition>
</target>
<target name="download.mysql" depends="download.mysql.check" if="mysql.not.available">
<echo message="Getting MySql ..." />
<mkdir dir="${install.home}/db/driver"/>
<get src="${mysql.download.url}" dest="${install.home}/db/driver/${mysql.jdbc.jar}" />
</target>
<!-- Download jBPM binaries -->
<target name="download.jBPM.bin.check">
<echo message="Checking jBPM binaries download ..." />
<condition property="jBPM.bin.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-bin.zip" />
</not>
</condition>
</target>
<target name="download.jBPM.bin" depends="download.jBPM.bin.check" if="jBPM.bin.not.available">
<echo message="Getting jBPM binaries ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${jBPM.url}/jbpm-${jBPM.version}-bin.zip" dest="${install.home}/lib/jbpm-${jBPM.version}-bin.zip" />
</target>
<!-- Download Drools Guvnor -->
<target name="download.drools.guvnor.check">
<echo message="Checking Drools Guvnor download ..." />
<condition property="drools.guvnor.not.available">
<not>
<available file="${install.home}/lib/guvnor-distribution-wars-${drools.guvnor.version}.war" />
</not>
</condition>
</target>
<target name="download.drools.guvnor" depends="download.drools.guvnor.check" if="drools.guvnor.not.available">
<echo message="Getting Drools Guvnor ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${drools.guvnor.url}" dest="${install.home}/lib/guvnor-distribution-wars-${drools.guvnor.version}.war"/>
</target>
<!-- Download Designer -->
<target name="download.designer.check">
<echo message="Checking Designer download ..." />
<condition property="designer.not.available">
<not>
<available file="${install.home}/lib/designer-${designer.version}.war" />
</not>
</condition>
</target>
<target name="download.designer" depends="download.designer.check" if="designer.not.available">
<echo message="Getting Designer ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${designer.url}/designer-${designer.version}.war" dest="${install.home}/lib/designer-${designer.version}.war" />
</target>
<!-- Download form builder -->
<target name="download.form.builder.check">
<echo message="Checking Form Builder download ..." />
<condition property="form.builder.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-form-builder.war" />
</not>
</condition>
</target>
<target name="download.form.builder" depends="download.form.builder.check" if="form.builder.not.available">
<echo message="Getting Form Builder ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${form.builder.url}" dest="${install.home}/lib/jbpm-${jBPM.version}-form-builder.war" />
</target>
<!-- Download jBPM human task server war -->
<target name="download.jBPM.ht-war.check">
<echo message="Checking jBPM human task war download ..." />
<condition property="jBPM.ht-war.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-human-task-war.zip" />
</not>
</condition>
</target>
<target name="download.jBPM-ht.war" depends="download.jBPM.ht-war.check" if="jBPM.ht-war.not.available">
<echo message="Getting jBPM human task war ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${jBPM.url}/jbpm-${jBPM.version}-human-task-war.zip" dest="${install.home}/lib/jbpm-${jBPM.version}-human-task-war.zip" />
</target>
<!-- Download jBPM gwt-console -->
<target name="download.jBPM.gwt-console.check">
<echo message="Checking jBPM gwt-console download ..." />
<condition property="jBPM.gwt-console.not.available">
<not>
<available file="${install.home}/lib/jbpm-${jBPM.version}-gwt-console.zip" />
</not>
</condition>
</target>
<target name="download.jBPM.gwt-console" depends="download.jBPM.gwt-console.check" if="jBPM.gwt-console.not.available">
<echo message="Getting jBPM gwt-console ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${jBPM.url}/jbpm-${jBPM.version}-gwt-console.zip" dest="${install.home}/lib/jbpm-${jBPM.version}-gwt-console.zip" />
</target>
<!-- Download BIRT engine for AS7 -->
<target name="check.birt.as7">
<condition property="birt.download">
<equals arg1="${jBPM.birt.download}" arg2="true" />
</condition>
</target>
<target name="download.birt.check.as7" depends="check.birt.as7" if="birt.download">
<echo message="Checking birt reporting engine download for as7 ..." />
<condition property="birt.not.available">
<not>
<available file="${install.home}/lib/birt-runtime-${birt.version.as7}.zip" />
</not>
</condition>
</target>
<target name="download.birt.as7" depends="download.birt.check.as7" if="birt.not.available">
<echo message="Getting birt reporting engine for AS7 ..." />
<mkdir dir="${install.home}/lib"/>
<get src="${birt.download.url.as7}" dest="${install.home}/lib/birt-runtime-${birt.version.as7}.zip" />
</target>
<!-- ############ INSTALL ############ -->
<!-- Install Bitronix -->
<target name="install.bitronix.config.into.tomcat.7">
<copy todir="${tomcat.7.server.conf.dir}"
file="${install.home}/db/resources.properties"
overwrite="true" />
</target>
<!-- Install JDBC -->
<target name="install.h2.into.tomcat.7" depends="download.h2,check.tomcat.version">
<copy todir="${tomcat.7.server.lib.dir}"
file="${install.home}/db/driver/${h2.jdbc.jar}"
overwrite="true" />
</target>
<target name="install.mysql.into.tomcat.7" depends="download.mysql,check.tomcat.version">
<copy todir="${tomcat.7.server.lib.dir}"
file="${install.home}/db/driver/${mysql.jdbc.jar}"
overwrite="true" />
</target>
<!-- Install guvnor -->
<target name="install.guvnor.into.tomcat.7" depends="download.drools.guvnor,check.tomcat.version">
<mkdir dir="${install.home}/target"/>
<mkdir dir="${install.home}/target/jbpm-drools-guvnor-war"/>
<unzip src="${install.home}/lib/guvnor-distribution-wars-${drools.guvnor.version}.war"
dest="${install.home}/target/jbpm-drools-guvnor-war" />
<!-- Fixes for Tomcat... -->
<delete file="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib/servlet-api-2.5.jar"/>
<copy file="${install.home}/lib/weld-servlet-1.1.8.Final.jar"
tofile="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib/weld-servlet-1.1.8.Final.jar"
overwrite="true" />
<antcall target="removeJavaxServletFromJar" >
<param name="jarpath" value="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib" />
<param name="jarname" value="jboss-servlet-api_3.0_spec-1.0.0.Final.jar" />
</antcall>
<antcall target="removeJavaxServletFromJar" >
<param name="jarpath" value="${install.home}/target/jbpm-drools-guvnor-war/WEB-INF/lib" />
<param name="jarname" value="gwt-user-2.3.0.jar" />
</antcall>
<zip basedir="${install.home}/target/jbpm-drools-guvnor-war"
destfile="${install.home}/target/guvnor-distribution-wars-${drools.guvnor.version}.war" />
<copy file="${install.home}/target/guvnor-distribution-wars-${drools.guvnor.version}.war"
tofile="${tomcat.7.server.deploy.dir}/drools-guvnor.war"
overwrite="true" />
<delete dir="${install.home}/target"/>
</target>
<target name="removeJavaxServletFromJar">
<mkdir dir="${jarpath}/${jarname}.tmp" />
<unzip src="${jarpath}/${jarname}"
dest="${jarpath}/${jarname}.tmp" />
<move file="${jarpath}/${jarname}" toFile="${jarpath}/${jarname}.orig" />
<delete dir="${jarpath}/${jarname}.tmp/javax/servlet" />
<zip basedir="${jarpath}/${jarname}.tmp"
destfile="${jarpath}/${jarname}" />
<delete dir="${jarpath}/${jarname}.tmp" />
</target>
<!-- Install designer -->
<target name="install.designer.into.tomcat.7" depends="download.designer,check.tomcat.version">
<copy file="${install.home}/lib/designer-${designer.version}.war"
tofile="${tomcat.7.server.deploy.dir}/designer.war"
overwrite="true" />
</target>
<!-- Install form builder -->
<target name="install.form.builder.into.tomcat.7" depends="download.form.builder">
<mkdir dir="${install.home}/target"/>
<mkdir dir="${install.home}/target/jbpm-form-builder-war"/>
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-form-builder.war" dest="${install.home}/target/jbpm-form-builder-war" />
<copy file="${install.home}/auth/users.properties"
tofile="${install.home}/target/jbpm-form-builder-war/WEB-INF/classes/users.properties"
overwrite="true" />
<copy file="${install.home}/auth/roles.properties"
tofile="${install.home}/target/jbpm-form-builder-war/WEB-INF/classes/roles.properties"
overwrite="true" />
<copy file="${install.home}/auth/users.properties"
tofile="${jboss.server.conf.dir}/users.properties"
overwrite="true" />
<copy file="${install.home}/auth/roles.properties"
tofile="${jboss.server.conf.dir}/roles.properties"
overwrite="true" />
<zip basedir="${install.home}/target/jbpm-form-builder-war"
destfile="${install.home}/target/jbpm-${jBPM.version}-form-builder.war" />
<copy file="${install.home}/target/jbpm-${jBPM.version}-form-builder.war"
tofile="${tomcat.7.server.deploy.dir}/jbpm-form-builder.war"
overwrite="true" />
<delete dir="${install.home}/target" />
</target>
<!-- Install jbpm human task war -->
<target name="install.ht.war.into.tomcat.7" depends="download.jBPM-ht.war">
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-human-task-war.zip" dest="${install.home}/lib" />
<mkdir dir="${install.home}/target"/>
<mkdir dir="${install.home}/target/jbpm-human-task-war"/>
<unzip src="${install.home}/lib/jbpm-human-task-war-${jBPM.version}.war" dest="${install.home}/target/jbpm-human-task-war" />
<!-- Abstraction for Tomcat Install -->
<copy file="${install.home}/conf/web.humantaskwar.xml"
tofile="${install.home}/task-service/resources/war/web.xml"
overwrite="true" />
<copy file="${install.home}/db/persistence-human-task-war.xml"
tofile="${install.home}/task-service/resources/war/persistence.xml"
overwrite="true" />
<!-- Now Proceed To patch the WAR... -->
<copy file="${install.home}/task-service/resources/war/web.xml"
tofile="${install.home}/target/jbpm-human-task-war/WEB-INF/web.xml"
overwrite="true" />
<copy file="${install.home}/task-service/resources/war/persistence.xml"
tofile="${install.home}/target/jbpm-human-task-war/WEB-INF/classes/META-INF/persistence.xml"
overwrite="true" />
<copy file="${install.home}/jbpm-tm.jar"
tofile="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/jbpm-tm.jar"
overwrite="true" />
<!-- Fix for Tomcat -->
<delete file="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/jta-1.1.jar"/>
<delete file="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/javassist-3.14.0-GA.jar" />
<copy todir="${install.home}/target/jbpm-human-task-war/WEB-INF/lib/"
file="${install.home}/lib/javassist-3.4.GA.jar"
overwrite="true" />
<!-- Rebuild the WAR and deploy -->
<zip basedir="${install.home}/target/jbpm-human-task-war"
destfile="${install.home}/target/jbpm-${jBPM.version}-human-task-war.war" />
<copy file="${install.home}/target/jbpm-${jBPM.version}-human-task-war.war"
tofile="${tomcat.7.server.deploy.dir}/jbpm-human-task-war.war"
overwrite="true" />
<delete dir="${install.home}/target" />
</target>
<!-- Install gwt-console -->
<target name="install.jBPM.into.tomcat.7" depends="download.mysql,download.h2,download.jBPM.gwt-console" >
<antcall target="install.mysql.into.tomcat.7" />
<antcall target="install.h2.into.tomcat.7" />
<mkdir dir="${install.home}/target"/>
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-gwt-console.zip"
dest="${install.home}/target/" />
<antcall target="install.jBPM-gwt-console.into.tomcat.7" />
<antcall target="install.jBPM-gwt-console-server.into.tomcat.7" />
<delete dir="${install.home}/target"/>
</target>
<target name="install.jBPM-gwt-console.into.tomcat.7" depends="check.tomcat.version" if="tomcat.version.is.7">
<!-- gwt-console -->
<unzip src="${install.home}/target/jbpm-gwt-console-${jBPM.version}.war"
dest="${install.home}/target/jbpm-gwt-console-war"/>
<!-- Tomcat Fix -->
<copy todir="${install.home}/target/jbpm-gwt-console-war/WEB-INF/lib"
file="${install.home}/lib/javassist-3.4.GA.jar"
overwrite="true" />
<!-- Repackage WAR and deploy -->
<zip basedir="${install.home}/target/jbpm-gwt-console-war"
destfile="${install.home}/target/jbpm-gwt-console-${jBPM.version}.war"/>
<copy file="${install.home}/target/jbpm-gwt-console-${jBPM.version}.war"
tofile="${tomcat.7.server.deploy.dir}/jbpm-gwt-console.war"
overwrite="true" />
</target>
<!-- Install gwt-console-server -->
<target name="install.jBPM-gwt-console-server.into.tomcat.7" depends="check.tomcat.version" if="tomcat.version.is.7">
<!-- reporting -->
<antcall target="download.birt.as7" />
<!-- gwt-console-server -->
<unzip src="${install.home}/target/jbpm-gwt-console-server-${jBPM.version}.war"
dest="${install.home}/target/jbpm-gwt-console-server-war"/>
<copy file="${install.home}/db/persistence.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/META-INF/persistence.xml"
overwrite="true" />
<copy file="${install.home}/db/ProcessInstanceInfo.hbm.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/META-INF/ProcessInstanceInfo.hbm.xml"
overwrite="true" />
<copy file="${install.home}/conf/context.gwtconsoleserver.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/META-INF/context.xml"
overwrite="true" />
<copy file="${install.home}/conf/web.gwtconsoleserver.xml"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/web.xml"
overwrite="true" />
<copy file="${install.home}/auth/users.properties"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/users.properties"
overwrite="true" />
<copy file="${install.home}/auth/roles.properties"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes/roles.properties"
overwrite="true" />
<copy file="${install.home}/jbpm-tm.jar"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/jbpm-tm.jar"
overwrite="true" />
<!-- Fix for conflicting javassist jar -->
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/javassist-3.6.0.GA.jar"/>
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/javassist-3.14.0-GA.jar" />
<copy todir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib"
file="${install.home}/lib/javassist-3.4.GA.jar"
overwrite="true" />
<!-- Further fixes for Tomcat... -->
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/el-api-1.2.jar"/>
<delete file="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib/dom4j-1.6.jar"/>
<!-- Other configuration like work item handlers -->
<!--
<copy todir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/classes" overwrite="true">
<fileset dir="${install.home}/conf"/>
</copy>
-->
<!-- reporting -->
<antcall target="install.reporting.into.tomcat.7" />
<zip basedir="${install.home}/target/jbpm-gwt-console-server-war"
destfile="${install.home}/target/jbpm-gwt-console-server-${jBPM.version}.war"/>
<copy file="${install.home}/target/jbpm-gwt-console-server-${jBPM.version}.war"
tofile="${tomcat.7.server.deploy.dir}/gwt-console-server.war"
overwrite="true" />
</target>
<!-- Install reporting Tomcat7 -->
<target name="install.reporting.into.tomcat.7" depends="check.birt.as7" if="birt.download" >
<mkdir dir="${install.home}/birt"/>
<unzip src="${install.home}/lib/birt-runtime-${birt.version.as7}.zip"
dest="${install.home}/birt"/>
<copy todir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/lib">
<fileset dir="${install.home}/birt/birt-runtime-${birt.version.as7}/ReportEngine/lib">
<include name="**/*.jar"/>
</fileset>
</copy>
<mkdir dir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/output"/>
<mkdir dir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/output/image"/>
<mkdir dir="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/reports"/>
<copy file="${install.home}/report/${birt.version.as7}/overall_activity.rptdesign"
tofile="${install.home}/target/jbpm-gwt-console-server-war/WEB-INF/reports/overall_activity.rptdesign"
overwrite="true"/>
<delete dir="${install.home}/birt"/>
</target>
<!-- Install Demo -->
<!-- create runtime -->
<target name="install.jBPM.runtime" depends="download.jBPM.bin">
<mkdir dir="${install.home}/runtime"/>
<unzip src="${install.home}/lib/jbpm-${jBPM.version}-bin.zip" dest="${install.home}/runtime" />
</target>
<path id="classpath.human.task">
<fileset dir="${install.home}/runtime" includes="**/*.jar"/>
<fileset dir="${install.home}/db/driver" includes="**/*.jar"/>
</path>
<target name="start.human.task">
<mkdir dir="${install.home}/task-service/target"/>
<javac includeantruntime="false" srcdir="${install.home}/task-service/src" destdir="${install.home}/task-service/target" classpathref="classpath.human.task">
<compilerarg value="-Xlint:unchecked"/>
</javac>
<copy tofile="${install.home}/task-service/resources/META-INF/persistence.xml"
file="${install.home}/db/persistence-human-task-service.xml"
overwrite="true" />
<copy todir="${install.home}/task-service/target">
<fileset dir="${install.home}/task-service/resources"/>
</copy>
<java classname="org.jbpm.DemoTaskService" fork="true">
<classpath>
<pathelement path="${install.home}/task-service/target"/>
<path refid="classpath.human.task" />
</classpath>
</java>
</target>
</project>
c) Perform the installation: In jbpm-install execute:
ant -buildfile tomcat7build.xml install.jbpmfull.to.tomcat.7
d) Add the following parameters to $CATALINA_OPTS and passed to JVM when Tomcat started:
-Xms256m
-Xmx1024m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-Dreporting.needcontext=true
NB: On windows do this through the configuration tool - do not set environment variable unless you understand the implications.
*Checkpoint: We have at this point installed JBPM 5.3 to Tomcat.*
*Before proceeding to run the 'demo' below it should be noted that there is an error in the 5.3 FINAL distribution which prevents the console from running whilst drools-guvnor is running. In order to see the demo cleanly - stop drools-guvnor. *
*In the above configuration - reporting will work - however - see here for implications of moving away from H2 backend, and http://ironclaws.wordpress.com/2012/06/23/jbpm-reporting-birt-tomcat-7-pu... here if you want to configure the report engines initial JNDI context.*
*4: Running the Demo*
a) Update report definition: ${CATALINA_HOME}/webapps/gwt-console-server/WEB-INF/reports/overall_activity.rptdesign
Add following to 'oda-data-source' section:
<property name="odaJndiName">java:comp/env/jdbc/testDS1</property>
b) Add following to Tomcat startup parameter:
-Djbpm.console.directory=\sample\evaluation\src\main\resources
c) Reconfigure ${CATALINA_HOME}/tomcat-users.xml, add:
<role rolename="manager" />
<role rolename="admin" />
<role rolename="user" />
<role rolename="PM" />
<role rolename="HR" />
<role rolename="webdesigner" />
<role rolename="functionalanalyst" />
<role rolename="sales" />
<user username="krisv" password="krisv" roles="manager,admin,user" />
<user username="john" password="john" roles="admin,manager,user,PM" />
<user username="mary" password="mary" roles="admin,manager,user,HR" />
<user username="sales-rep" password="sales-rep" roles="admin,manager,user,sales" />
<user username="admin" password="admin" roles="admin,manager,user,webdesigner,functionalanalyst" />
e) Start H2: In jbpm-install execute:
ant start.h2
f) Start Tomcat
g) Stop drools-guvnor and restart gwt-console-server (to be on the safe side)
h) Naviate to: http://localhost:8080/jbpm-gwt-console http://localhost:8080/jbpm-gwt-console
--------------------------------------------------------------
Comment by going to Community
[https://community.jboss.org/docs/DOC-18626]
Create a new document in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=102&c...]
12 years, 5 months
[Snowdrop] - ProxyAsyncConfiguration
by Shivam Sinha
Shivam Sinha [https://community.jboss.org/people/shiv86] created the discussion
"ProxyAsyncConfiguration"
To view the discussion, visit: https://community.jboss.org/message/743819#743819
--------------------------------------------------------------
Hi,
I have spent atleast 14+ hrs on trying to migrate my exisiting spring app to jbossAS7 and would really appreicate anyhelp with the following issue, when attempting to start JBoss:
Exception:
02:25:44,885 INFO org.springframework.beans.factory.support.DefaultListableBeanFactory org.springframework.beans.factory.support.DefaultListableBeanFactory (MSC service thread 1-4) Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@78090631: defining beans org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,econDateInitDatabaseImpl,forexPro,importStaticDataImpl,edIndicatorValueFactoryImpl,edCityDAOImpl,edCountryDAOImpl,edHistoryDAOImpl,edHolidayDAOImpl,edIndicatorDAOImpl,edIndicatorValueDAOImpl,edJobDAOImpl,edRegionDAOImpl,edIndicatorSchedulerImpl,proxyAsyncConfiguration,schedulingConfiguration,loadTimeWeavingConfiguration,proxyTransactionManagementConfiguration,delegatingWebMvcConfiguration,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,emf,dataSource,transactionManager,exporter,testBean,schedulerFactoryBean,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0,org.springframework.context.annotation.internalAsyncAnnotationProcessor,org.springframework.context.annotation.internalScheduledAnnotationProcessor,loadTimeWeaver,transactionAttributeSource,transactionInterceptor,requestMappingHandlerMapping,viewControllerHandlerMapping,beanNameHandlerMapping,resourceHandlerMapping,defaultServletHandlerMapping,requestMappingHandlerAdapter,mvcConversionService,mvcValidator,httpRequestHandlerAdapter,simpleControllerHandlerAdapter,handlerExceptionResolver org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,econDateInitDatabaseImpl,forexPro,importStaticDataImpl,edIndicatorValueFactoryImpl,edCityDAOImpl,edCountryDAOImpl,edHistoryDAOImpl,edHolidayDAOImpl,edIndicatorDAOImpl,edIndicatorValueDAOImpl,edJobDAOImpl,edRegionDAOImpl,edIndicatorSchedulerImpl,proxyAsyncConfiguration,schedulingConfiguration,loadTimeWeavingConfiguration,proxyTransactionManagementConfiguration,delegatingWebMvcConfiguration,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,emf,dataSource,transactionManager,exporter,testBean,schedulerFactoryBean,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0,org.springframework.context.annotation.internalAsyncAnnotationProcessor,org.springframework.context.annotation.internalScheduledAnnotationProcessor,loadTimeWeaver,transactionAttributeSource,transactionInterceptor,requestMappingHandlerMapping,viewControllerHandlerMapping,beanNameHandlerMapping,resourceHandlerMapping,defaultServletHandlerMapping,requestMappingHandlerAdapter,mvcConversionService,mvcValidator,httpRequestHandlerAdapter,simpleControllerHandlerAdapter,handlerExceptionResolver; root of factory hierarchy
02:25:44,888 ERROR org.springframework.web.context.ContextLoader org.springframework.web.context.ContextLoader (MSC service thread 1-4) Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalAsyncAnnotationProcessor' defined in class path resource org/springframework/scheduling/annotation/ProxyAsyncConfiguration.class org/springframework/scheduling/annotation/ProxyAsyncConfiguration.class: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() threw exception; nested exception is java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1008) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:904) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:488) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:459) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:381) https://community.jboss.org/message/743819#743819#743819/spring-web-3.1.0...: ProxyAsyncConfiguration
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) https://community.jboss.org/message/743819#743819#743819/spring-web-3.1.0...: ProxyAsyncConfiguration
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) https://community.jboss.org/message/743819#743819#743819/spring-web-3.1.0...: ProxyAsyncConfiguration
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3368) jbossweb-7.0.1.Final.jar:7.0.2.Final
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3821) jbossweb-7.0.1.Final.jar:7.0.2.Final
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) jboss-as-web-7.0.2.Final.jar:7.0.2.Final
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at java.lang.Thread.run(Thread.java:680) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() threw exception; nested exception is java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:570) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
... 21 more
Caused by: java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
at org.springframework.util.Assert.notNull(Assert.java:112) https://community.jboss.org/message/743819#743819#743819/spring-core-3.1....: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor(ProxyAsyncConfiguration.java:45) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration$$EnhancerByCGLIB$$c8304691.CGLIB$asyncAdvisor$0() https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration$$EnhancerByCGLIB$$c8304691$$FastClassByCGLIB$$df56e036.invoke() https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:253) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration$$EnhancerByCGLIB$$c8304691.asyncAdvisor() https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at java.lang.reflect.Method.invoke(Method.java:597) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:149) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
... 22 more
02:25:44,890 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/econdates]] (MSC service thread 1-4) Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalAsyncAnnotationProcessor' defined in class path resource org/springframework/scheduling/annotation/ProxyAsyncConfiguration.class org/springframework/scheduling/annotation/ProxyAsyncConfiguration.class: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() threw exception; nested exception is java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1008) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:904) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:488) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:459) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:381) https://community.jboss.org/message/743819#743819#743819/spring-web-3.1.0...: ProxyAsyncConfiguration
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) https://community.jboss.org/message/743819#743819#743819/spring-web-3.1.0...: ProxyAsyncConfiguration
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) https://community.jboss.org/message/743819#743819#743819/spring-web-3.1.0...: ProxyAsyncConfiguration
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3368) jbossweb-7.0.1.Final.jar:7.0.2.Final
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3821) jbossweb-7.0.1.Final.jar:7.0.2.Final
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) jboss-as-web-7.0.2.Final.jar:7.0.2.Final
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at java.lang.Thread.run(Thread.java:680) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() public org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor() threw exception; nested exception is java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:570) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
... 21 more
Caused by: java.lang.IllegalArgumentException: @EnableAsync annotation metadata was not injected
at org.springframework.util.Assert.notNull(Assert.java:112) https://community.jboss.org/message/743819#743819#743819/spring-core-3.1....: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration.asyncAdvisor(ProxyAsyncConfiguration.java:45) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration$$EnhancerByCGLIB$$c8304691.CGLIB$asyncAdvisor$0() https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration$$EnhancerByCGLIB$$c8304691$$FastClassByCGLIB$$df56e036.invoke() https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:253) https://community.jboss.org/message/743819#743819#743819/spring-context-3...: ProxyAsyncConfiguration
at org.springframework.scheduling.annotation.ProxyAsyncConfiguration$$EnhancerByCGLIB$$c8304691.asyncAdvisor() https://community.jboss.org/message/743819#743819#743819/cglib-nodep-2.2.jar: ProxyAsyncConfiguration
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at java.lang.reflect.Method.invoke(Method.java:597) https://community.jboss.org/message/743819#743819#743819/:1.6.0_29 ProxyAsyncConfiguration
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:149) https://community.jboss.org/message/743819#743819#743819/spring-beans-3.1...: ProxyAsyncConfiguration
... 22 more
02:25:44,915 INFO javax.enterprise.resource.webcontainer.jsf.config javax.enterprise.resource.webcontainer.jsf.config (MSC service thread 1-4) Initializing Mojarra 2.1.3 (SNAPSHOT 20110825) for context '/econdates'
02:25:45,809 ERROR org.apache.catalina.core.StandardContext org.apache.catalina.core.StandardContext (MSC service thread 1-4) Error listenerStart
02:25:45,809 ERROR org.apache.catalina.core.StandardContext org.apache.catalina.core.StandardContext (MSC service thread 1-4) Context /econdates /econdates startup failed due to previous errors
02:25:45,810 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/econdates]] (MSC service thread 1-4) Closing Spring root WebApplicationContext
02:25:45,812 INFO https://community.jboss.org/message/743819#743819#743819/org.jboss.web ProxyAsyncConfiguration (MSC service thread 1-4) registering web context: /econdates
02:25:45,858 INFO org.jboss.as.server.controller org.jboss.as.server.controller (DeploymentScanner-threads - 2) Deployed "econdates.war"
spring application-infrastructure.xml:
persistence.xml:
web.xml:
<display-name>Econ Dates</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/META-INF/spring/application-context.xml,
classpath:/META-INF/spring/application-infrastructure.xml,
<!-- classpath:/META-INF/spring/econdates-security-context.xml -->
</param-value>
</context-param>
....
<servlet-mapping>
<servlet-name>EconDates</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
...
<persistence-context-ref>
<persistence-context-ref-name>jboss/myEntityManagerFactory</persistence-context-ref-name>
<persistence-unit-name>EconDatesDB</persistence-unit-name>
</persistence-context-ref>
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/743819#743819]
Start a new discussion in Snowdrop at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&con...]
12 years, 5 months