This section describes how to setup the Stardust Portal and the Process Engine in JBoss. Many figures are from the Windows operating system but any supported JBoss platform can be used. Note that currently, for JBoss version 7.1, only Spring deployment is supported.
The following sections discuss prerequisites that must be performed before Stardust can be deployed within a JBoss application server.
A basic understanding of JBoss Administration, Enterprise Application Archive (EAR), and Web Application Archive (WAR) files is required from this point forward.
Please refer to the Stardust Release Notes for details on the currently supported JBoss version. Make sure your JAVA_HOME variable is set correctly in case you start the JBoss server from the command line.
To prepare the JBoss deployment:
%JBOSS_HOME%/bin/run.bat -c <serverName>
If a server name is used other than default, edit the JBoss startup script in %JBOSS_HOME%/bin and add the following JVM system property to the command line.
-Djboss.server.name=<serverName>
Additional JBoss system properties can be set in the startup script. Please refer to the JBoss documentation for more information regarding system properties.
Copy JDBC drivers used to access the Stardust Audit Trail Database to the following directory, %JBOSS_HOME%/server/ <serverName>/lib.
Stardust provides preconfigured deployment configuration for JBoss as Maven archetype templates. You can download them from the Stardust artifactory matching your requirements. The following deployment configurations for JBoss are provided to prepare a Stardust Portal WAR/EAR deployment for JBoss 5.1:
To prepare a reporting WAR deployment for JBoss, use one of the following archetypes:
Refer to chapter Creating a Stardust Runtime Environment with Apache Maven in the Stardust Installation Guide for details.
Stardust provides predefined deployment configurations:
Please refer to the Stardust support team for details on how to receive these configurations.
This section covers steps required to configure a deployment with JBoss Version 5.1.
The connection to the Stardust Audit Trail database is configured in a xml file and placed in the folder %JBOSS_HOME%/server/<serverName>/deploy. You can copy a JBoss supplied example XA datasource file located at %JBOSS_HOME%/docs/examples/jca/<database>-xa-ds.xml to %JBOSS_HOME%/server/<server-name>/deploy/ipp-xa-ds.xml and modify it with content to match the Stardust Audit Trail database, such as:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE datasources
PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
"http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
<datasources>
<xa-datasource>
<jndi-name>AuditTrail.DataSource</jndi-name>
<xa-datasource-property name="URL">database_url</xa-datasource-property>
<xa-datasource-class> database_driver_fully_qualified_class_namee</xa-datasource-class>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<user-name>database_username</user-name>
<password>database_password</password>
<track-connection-by-tx>true</track-connection-by-tx>
<no-tx-separate-pools>true</no-tx-separate-pools>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.<databasetype>ExceptionSorter</exception-sorter-class-name>
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.<databasetype>ValidConnectionChecker</valid-connection-checker-class-name>
<min-pool-size>1</min-pool-size>
<max-pool-size>10</max-pool-size>
<idle-timeout-minutes>10</idle-timeout-minutes>
<no-tx-separate-pools/>
<metadata>
<type-mapping><databasetype></type-mapping>
</metadata>
</xa-datasource>
</datasources>
For an Spring setup, JMS is an optional, but highly recommended component. For EAR setups JMS is required.
The connection factory and the JMS queues are configured with the following content in %JBOSS_HOME%/server/ <server-name>/deploy/ipp-jms-ds.xml. Create this file, and paste the following contents into the file.
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=CarnotApplicationQueue" xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="JNDIName">queue/CarnotApplicationQueue</attribute>
<attribute name="RedeliveryDelay">10000</attribute>
<attribute name="MaxDeliveryAttempts">3</attribute>
</mbean>
<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=CarnotSystemQueue" xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="JNDIName">queue/CarnotSystemQueue</attribute>
<attribute name="RedeliveryDelay">10000</attribute>
<attribute name="MaxDeliveryAttempts">3</attribute>
</mbean>
<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=CarnotDaemonQueue" xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="JNDIName">queue/CarnotDaemonQueue</attribute>
<attribute name="RedeliveryDelay">10000</attribute>
<attribute name="MaxDeliveryAttempts">3</attribute>
</mbean>
<mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
name="jboss.messaging.connectionfactory:service=CarnotConnectionFactory"
xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
<depends>jboss.messaging:service=PostOffice</depends>
<attribute name="JNDIBindings">
<bindings>
<binding>/CarnotConnectionFactory</binding>
<binding>java:/CarnotConnectionFactory</binding>
</bindings>
</attribute>
</mbean>
</server>
To prepare a standalone Jackrabbit deployment on JBoss, perform the following steps:
<?xml version="1.0" encoding="UTF-8"?>
<connection-factories>
<tx-connection-factory>
<jndi-name>JcrContentRepository</jndi-name>
<xa-transaction/>
<rar-name>jackrabbit-jca-2.6.1.rar</rar-name>
<connection-definition>javax.jcr.Repository</connection-definition>
<config-property name="homeDir" type="java.lang.String">C:/repository-jcr</config-property>
<config-property name="configFile" type="java.lang.String">classpath:repository.xml</config-property>
<config-property name="bindSessionToTransaction" type="java.lang.Boolean">true</config-property>
</tx-connection-factory>
</connection-factories>ipp-jcr-user=ipp-jcr-password
<path name="jsf-libs" suffixes=".jar" />
<context-param> <param-name>com.sun.faces.injectionProvider</param-name> <param-value>org.jboss.web.jsf.integration.injection.JBossInjectionProvider</param-value> </context-param>
<listener> <listener-class>org.jboss.web.jsf.integration.config.JBossJSFConfigureListener</listener-class> </listener>
<listener> <listener-class>com.sun.faces.application.WebappLifecycleListener</listener-class> </listener>
<init-param> <description>JSF standard tlds</description> <param-name>tagLibJar0</param-name> <param-value>jsf-libs/jsf-impl.jar</param-value> </init-param> <init-param> <description>JSTL standard tlds</description> <param-name>tagLibJar1</param-name> <param-value>jstl.jar</param-value> </init-param>
Without the JSF-libraries, also the admin-console doesn't work anymore. This Web application is a default deployment and might be removed.
To prepare a Spring deployment on JBoss 7.1, perform the following steps:
<JBoss-Home>/bin/standalone.bat
<JBoss-Home>/bin/add-user.bat
JBoss 7 uses a module system for class loading. Therefore a new module for the database driver jar has to be created. The module has to be created in folder <JBoss-Home>/modules:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.21-bin.jar" />
</resources>
<dependencies>
<module name="javax.api" />
<module name="javax.transaction.api"/>
</dependencies>
</module><driver name="mysql" module="com.mysql"> <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> </driver>
<xa-datasource jndi-name="java:/AuditTrail.DataSource" pool-name="AuditTrailDS" enabled="true" use-java-context="true" use-ccm="false">
<xa-datasource-property name="URL">jdbc:mysql://localhost:3306/ipp</xa-datasource-property>
<driver>mysql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<xa-pool>
<no-tx-separate-pools>true</no-tx-separate-pools>
<min-pool-size>1</min-pool-size>
<max-pool-size>10</max-pool-size>
</xa-pool>
<timeout>
<idle-timeout-minutes>10</idle-timeout-minutes>
</timeout>
<security>
<user-name>carnot</user-name>
<password>ag</password>
</security>
<validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
</validation>
</xa-datasource>An issue with already registered Web Service endpoints might occur because JBoss already starts a Web service. To prevent the issue, comment out the following lines in file <JBoss-Home>/standalone/configuration/standalone.xml:
<!-- subsystem xmlns="urn:jboss:domain:webservices:1.1">
<modify-wsdl-address>true</modify-wsdl-address>
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
<endpoint-config name="Standard-Endpoint-Config"/>
<endpoint-config name="Recording-Endpoint-Config">
<pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
</pre-handler-chain>
</endpoint-config>
</subsystem> -->
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="javax.jcr">
<resources>
<resource-root path="jcr-2.0.jar"/>
</resources>
<dependencies>
<module name="javax.transaction.api" export="true"/>
</dependencies>
</module>Dependencies: javax.jcr export,org.slf4jFurther the jars logback-classic-0.9.20.jar and logback-core-0.9.20.jar have to be removed from rar file to use the JBoss logging framework.
<resource-adapter>
<archive>
jackrabbit-jca-2.2.5-infinity03.rar
</archive>
<transaction-support>
XATransaction
</transaction-support>
<connection-definitions>
<connection-definition class-name="org.apache.jackrabbit.jca.JCAManagedConnectionFactory" jndi-name="java:/jcr/jackrabbit" enabled="true" use-java-context="true" use-ccm="false">
<config-property name="configFile">
C:/tmp/configuration/repository.xml
</config-property>
<config-property name="bindSessionToTransaction">
true
</config-property>
<config-property name="homeDir">
C:/tmp/jcrjboss7
</config-property>
</connection-definition>
</connection-definitions>
</resource-adapter><subsystem xmlns="urn:jboss:domain:jca:1.1"> <archive-validation enabled="false" fail-on-error="true" fail-on-warn="false"/>
<global-modules> <module name="javax.jcr" slot="main" /> </global-modules>
In <JBoss-Home>/standalone/configuration/standalone.xml the following content should be added inside <subsystem xmlns="urn:jboss:domain:messaging:1.1">. The connection-factory dummyCF has to be created as workaround due to the following JBoss issue https://issues.jboss.org/browse/AS7-5538:
<hornetq-server>
<connectors>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
<jms-connection-factories>
<connection-factory name="dummyCF">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:jboss/exported/jms/dummyCF"/>
</entries>
</connection-factory>
<pooled-connection-factory name="hornetq-ra">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/CarnotConnectionFactory"/>
</entries>
<transaction mode="xa"/>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="IppApplicationQueue">
<entry name="java:/queue/CarnotApplicationQueue"/>
</jms-queue>
<jms-queue name="IppSystemQueue">
<entry name="java:/queue/CarnotSystemQueue"/>
</jms-queue>
<jms-queue name="IppDaemonQueue">
<entry name="java:/queue/CarnotDaemonQueue"/>
</jms-queue>
</jms-destinations>
</hornetq-server>
You can use Hazelcast for tuning via retrieving entities from in-memory cache. Hazelcast is a clustering and scalable data distribution platform. For detailed information on Hazelcast refer to http://www.hazelcast.com/product.jsp.
For details on tuning via an in-memory cache in Stardust refer to chapter Retrieving Entities from In-Memory Cache in the Developer Handbook.
The following examples demonstrates the usage of Hazelcast on WebLogic 10.3. Stardust provides a prepared RAR file to be deployed with WebLogic.
To perform a separate RAR deployment, copy the artifact
<icon></icon>is removed
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE connection-factories
PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
"http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
<connection-factories>
<tx-connection-factory>
<local-transaction/>
<track-connection-by-tx>true</track-connection-by-tx>
<jndi-name>HazelcastCF</jndi-name>
<rar-name>hazelcast-ra-2.4.rar</rar-name>
<connection-definition>javax.resource.cci.ConnectionFactory</connection-definition>
</tx-connection-factory>
</connection-factories>
To perform a RAR inside EAR deployment perform the following steps:
<resource-adapters>
<resource-adapter>
<archive>hazelcast-ra-2.4-stardust01.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="com.hazelcast.jca.ManagedConnectionFactoryImpl" jndi-name="java:/HazelcastCF" use-ccm="false" />
</connection-definitions>
</resource-adapter>
<resource-ref> <res-ref-name>cache/HazelcastCF</res-ref-name> <jndi-name>java:/HazelcastCF</jndi-name> </resource-ref>
<resource-ref> <res-ref-name>cache/HazelcastCF</res-ref-name> <res-type>com.hazelcast.jca.HazelcastConnectionFactoryImpl</res-type> <res-auth>Container</res-auth> </resource-ref>
<module xmlns="urn:jboss:module:1.1" name="com.hazelcast">
<dependencies>
<module name="javax.api" />
</dependencies>
<resources>
<resource-root path="hazelcast-2.4-stardust01.jar" />
</resources>
</module><module xmlns="urn:jboss:module:1.1" name="com.hazelcast.ra">
<dependencies>
<module name="javax.resource.api" />
<module name="javax.api" />
<module name="com.hazelcast" />
</dependencies>
<resources>
<resource-root path="hazelcast-ra-2.4-stardust01.jar" />
</resources>
</module><subsystem xmlns="urn:jboss:domain:ee:1.0">
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<global-modules>
<module name="javax.jcr" slot="main"/>
<module name="com.hazelcast" slot="main"/>
<module name="com.hazelcast.ra" slot="main"/>
</global-modules>
</subsystem>Infinity.Engine.Caching = true Infinity.Engine.Caching.CacheFactory = org.eclipse.stardust.engine.core.cache.hazelcast.HazelcastCacheFactory Infinity.Engine.Caching.Hazelcast.TxMode = rw Infinity.Engine.Caching.Hazelcast.ConnectionFactoryJndiName = HazelcastCF Infinity.Engine.Caching.Hazelcast.GlobalCacheName = ipp-2nd-level-cache
<config-property>
<description>Comma separated list of FACTORY_INIT, CREATE, TX_START, TX_COMPLETE, CLEANUP and DESTROY to
trace connection events</description>
<config-property-name>connectionTracingEvents</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>FACTORY_INIT</config-property-value>
</config-property>