miércoles, 18 de diciembre de 2013

Install BonitaBPM Community 6.1.1 on JBoss AS 7.1.1

Installation

  • Download JBoss AS 7.1.1 from JBoss site.
    • I downloaded jboss-as-7.1.1.Final.zip file
  • Download BonitaBPM 6.1.1 from BonitaSoft site
    • I downloaded the Bonita BPM Deployment bundle for JBoss 5.1 (BonitaBPMCommunity-6.1.1-JBoss-5.1.0.GA.zip file)

    Note: you can download all the configuration files listed in this tutorial here

  • Unzip the jboss-as-7.1.1.Final.zip into a folder. In this tutorial I use: c:\opt\jboss-as-7.1.1.Final. This folder will be called as $JBOSS_HOME
  • Unzip the BonitaBPMCommunity-6.1.1-JBoss-5.1.0.GA.zip. In this tutorial I use: c:\opt\BonitaBPMCommunity-6.1.1-JBoss-5.1.0.GA.

  • Configuration

  • Copy the folder: "c:\opt\BonitaBPMCommunity-6.1.1-JBoss-5.1.0.GA\bonita" into $JBOSS_HOME.
  • Create the user (and schema) to Bonita in Oracle. Execute the following script (you must be logged as sysdba)
  • DROP user bonita cascade;
    CREATE USER bonita IDENTIFIED BY bonita;
    GRANT connect, resource TO bonita IDENTIFIED BY bonita;
    GRANT select ON sys.dba_pending_transactions TO bonita;
    GRANT select ON sys.pending_trans$ TO bonita;
    GRANT select ON sys.dba_2pc_pending TO bonita;
    GRANT execute ON sys.dbms_system TO bonita;
    

    Note: BonitaBPM requires 2 datasources to run correctly. See http://documentation.bonitasoft.com/database-overview for details.

  • Create a module in jboss for Oracle JDBC driver. see this tutorial
  • Add the Oracle XA driver in standalone.xml file (added within the tag in subsystem: )
  • <driver module="com.oracle.driver" name="oracle">
          <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
    </driver>
    
  • Create the bonita XA datasource. Add the following XML, modifying the text in bold, in the subsystem: in standalone.xml:
  • <xa-datasource enabled="true" jndi-name="java:/bonitaDS" pool-name="bonitaDS" use-ccm="false">
      <xa-datasource-property name="URL">
       jdbc:oracle:thin:@localhost:1521:orcl
      </xa-datasource-property>
      <driver>oracle</driver>
      <xa-pool>
       <is-same-rm-override>false</is-same-rm-override>
       <interleaving>false</interleaving>
       <pad-xid>false</pad-xid>
       <wrap-xa-resource>false</wrap-xa-resource>
      </xa-pool>
      <security>
       <user-name>bonita</user-name>
       <password>bonita</password>
      </security>
      <validation>
       <validate-on-match>false</validate-on-match>
       <background-validation>false</background-validation>
      </validation>
      <statement>
       <share-prepared-statements>false</share-prepared-statements>
      </statement>
     </xa-datasource>
    
  • Create the sequenceManager datasource. Add the following XML, modifying the text in bold, in the subsystem: in standalone.xml:
  •  <datasource enabled="true" jndi-name="java:/bonitaSequenceManagerDS" jta="false" pool-name="bonitaSequenceManagerDS" use-ccm="false">
      <connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>
      <driver-class>oracle.jdbc.OracleDriver</driver-class>
      <driver>oracle</driver>
      <security>
       <user-name>bonita</user-name>
       <password>bonita</password>
      </security>
      <validation>
       <validate-on-match>false</validate-on-match>
       <background-validation>false</background-validation>
      </validation>
      <statement>
       <share-prepared-statements>false</share-prepared-statements>
      </statement>
     </datasource>
    
  • Edit the bonita-platform.properties file located in $ JBOSS_HOME/server/platform/conf and replace the following entries:
  •  database.journal.datasource.name=${sysprop.bonita.database.journal.datasource.name:java:/bonitaDS}
     database.sequence.manager.datasource.name=${sysprop.bonita.database.sequence.manager.datasource.name:java:/bonitaSequenceManagerDS}
    
     db.vendor = oracle
    
     transaction.manager=${sysprop.bonita.transaction.manager:java:/TransactionManager}
     userTransaction=${sysprop.bonita.userTransaction:java:jboss/UserTransaction}
    
  • Copy the file c:\opt\BonitaBPMCommunity-6.1.1-JBoss-5.1.0.GA\server\default\deploy\bonita-all-in-one-6.1.1.ear to $JBOSS_HOME\standalone\deployments
  • Modify the startup script (in my case as I am under Windows, the file is $ JBOSS_HOME\bin\standalone.conf.bat).
    • Replace:
      set "JAVA_OPTS =-Xmx512M-Xms64m-XX: MaxPermSize = 256M"
      by:
      set "JAVA_OPTS =-Xmx1024M-Xms1024m-XX: MaxPermSize = 256M-XX: + HeapDumpOnOutOfMemoryError"
      The following lines are added:
       set "BONITA_OPTS=-Dbonita.home=C:\opt\jboss-as-7.1.1.Final\bonita"
       set "JAVA_OPTS=%JAVA_OPTS% %BONITA_OPTS%"
       goto :eof
      
  • Edit the file $ JBOSS_HOME/bonita/server/platform/conf/services/cfg-bonita-persistence-hibernate.xml, adding the following property in the bean: (line 27)
  •  <prop key="jta.UserTransaction">${userTransaction}</prop>
    
  • Startup the server with $ JBOSS_HOME/bin/standalone.bat
  • Go to: http://localhost:8080/bonita
  • 7 comentarios:

    1. i have a error with this steps:

      18:06:38,242 INFO [org.bonitasoft.engine.EngineInitializer] (MSC service thread 1-6) Creating platform...
      18:06:38,438 INFO [org.bonitasoft.engine.EngineInitializer] (MSC service thread 1-6) Starting platform...
      18:06:38,440 SEVERE [org.bonitasoft.engine.api.internal.servlet.EngineInitializerListener] (MSC service thread 1-6) Error while initializing the Engine: org.bonitasoft.engine.platform.PlatformNotFoundException: Can't start or stop platform if it is not created
      at org.bonitasoft.engine.PlatformTenantManager.updatePlatform(PlatformTenantManager.java:53) [bonita-server-6.2.4.jar:]
      at org.bonitasoft.engine.PlatformTenantManager.startPlatform(PlatformTenantManager.java:63) [bonita-server-6.2.4.jar:]
      at org.bonitasoft.engine.EngineInitializer.startPlatform(EngineInitializer.java:121) [bonita-server-6.2.4.jar:]
      at org.bonitasoft.engine.EngineInitializer.initializeEngine(EngineInitializer.java:86) [bonita-server-6.2.4.jar:]
      at org.bonitasoft.engine.api.internal.servlet.EngineInitializerListener.contextInitialized(EngineInitializerListener.java:29) [bonita-server-6.2.4.jar:]
      at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
      at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
      at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]

      ResponderEliminar
    2. Hello,

      I'm trying to install Bonita 6.3 on Jboss EAP 6.2 following this steps but I'm getting the following error:

      11:45:53,282 INFO [org.bonitasoft.engine.EngineInitializer] (ServerService Thread Pool -- 58) Platform is already initialized.: java.lang.ClassCastException: org.jboss.tm.usertx.client.ServerVMClientUserTransaction cannot be cast to javax.transaction.TransactionManager
      at org.bonitasoft.engine.persistence.JNDIBitronixJtaPlatform.locateTransactionManager(JNDIBitronixJtaPlatform.java:32) [bonita-server-6.3.1.jar:]
      at org.hibernate.service.jta.platform.internal.AbstractJtaPlatform.retrieveTransactionManager(AbstractJtaPlatform.java:104) [hibernate-core-4.2.12.Final.jar:4.2.12.Final]
      at org.hibernate.context.internal.JTASessionContext.currentSession(JTASessionContext.java:80) [hibernate-core-4.2.12.Final.jar:4.2.12.Final]
      at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:993) [hibernate-core-4.2.12.Final.jar:4.2.12.Final]
      at org.bonitasoft.engine.persistence.AbstractHibernatePersistenceService.getSession(AbstractHibernatePersistenceService.java:199) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.persistence.AbstractHibernatePersistenceService.doExecuteSQLThroughHibernate(AbstractHibernatePersistenceService.java:811) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.persistence.AbstractHibernatePersistenceService.doExecuteSQL(AbstractHibernatePersistenceService.java:806) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.persistence.AbstractDBPersistenceService.executeSQL(AbstractDBPersistenceService.java:249) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.persistence.AbstractDBPersistenceService.initializeStructure(AbstractDBPersistenceService.java:225) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.persistence.AbstractDBPersistenceService.initializeStructure(AbstractDBPersistenceService.java:218) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.platform.impl.PlatformServiceImpl.initializePlatformStructure(PlatformServiceImpl.java:259) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createPlatform(PlatformAPIImpl.java:156) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.api.impl.PlatformAPIImpl.createAndInitializePlatform(PlatformAPIImpl.java:209) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.PlatformTenantManager.createPlatform(PlatformTenantManager.java:43) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.EngineInitializer.initPlatform(EngineInitializer.java:133) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.EngineInitializer.initializeEngine(EngineInitializer.java:91) [bonita-server-6.3.1.jar:]
      at org.bonitasoft.engine.api.internal.servlet.EngineInitializerListener.contextInitialized(EngineInitializerListener.java:43) [bonita-server-6.3.1.jar:]
      at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3339) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
      at org.apache.catalina.core.StandardContext.start(StandardContext.java:3777) [jbossweb-7.2.2.Final-redhat-1.jar:7.2.2.Final-redhat-1]
      at org.jboss.as.web.deployment.WebDeploymentService.doStart(WebDeploymentService.java:156) [jboss-as-web-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
      ...

      Any ideas on this?

      Cheers

      ResponderEliminar
      Respuestas
      1. Just figured it out, the solution is in this point:

        Edit the bonita-platform.properties file located in $ JBOSS_HOME/server/platform/conf and replace the following entries

        you also need to replace:

        hibernate.transaction.jta_platform = ${sysprop.bonita.hibernate.transaction.jta_platform:org.bonitasoft.engine.persistence.JNDIBitronixJtaPlatform}

        by:

        hibernate.transaction.jta_platform = ${sysprop.bonita.hibernate.transaction.jta_platform:org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform}

        Eliminar
      2. yes this works on jboss 6.2 and 6.3

        Thanks

        Eliminar
    3. Este comentario ha sido eliminado por el autor.

      ResponderEliminar
    4. Este comentario ha sido eliminado por el autor.

      ResponderEliminar
    5. Hi,
      I have this problem starting Bpnita 6.3 on Jboss eap-6.2

      SEVERE [org.bonitasoft.engine.api.internal.servlet.EngineInitializerListener] (ServerService Thread Pool -- 68) Error while initializing the Engine: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actorMappingService' defined in file [D:\PROGRAMAS\jboss-eap-6.2\bonita\server\platform\conf\services\cfg-bonita-actor-mapping-impl.xml]: Cannot resolve reference to bean 'persistenceService' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'persistenceService' defined in file [D:\PROGRAMAS\jboss-eap-6.2\bonita\server\platform\conf\services\cfg-bonita-persistence-hibernate.xml]: Cannot resolve reference to bean 'journalConfigurationProvider' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'journalConfigurationProvider' defined in file [D:\PROGRAMAS\jboss-eap-6.2\bonita\server\platform\conf\services\cfg-bonita-persistence-hibernate.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.bonitasoft.engine.persistence.HibernateConfigurationProviderImpl]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException

      Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException from [Module "deployment.bonita-all-in-one-6.3.7.ear:main" from Service Module Loader]
      at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final-redhat-2]
      at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final-redhat-2]
      at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final-redhat-2]
      at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final-redhat-2]
      at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final-redhat-2]
      ... 63 more

      Any idea? Thanks

      ResponderEliminar