DX Application Performance Management

Installing on Tibco Active Matrix BPM 3.0

  • 1.  Installing on Tibco Active Matrix BPM 3.0

    Broadcom Employee
    Posted Feb 03, 2016 10:43 PM

    Hi All, today myself and Srikant Noorani cracked the Tibco Active Matrix BPM nut..  Installing the agent on this OSGI based app is not straight forward, so here is the record of what worked for us.

     

    Before you start

     

    Understand, Tibco Active Matrix BPM (TBPM), is a different product to Tibco Business Works, and Tibco EMS.  The last two are more message bus, TBPM is a process server, hosting custom business process workflows.

     

    TBPM is an OSGI application (and seems to be based on Spring).  OSGI apps divide an application into OSGI bundles (packages) enforce class isolation between bundles.  Every class or package used outside the bundle needs to be declared specifically in an OSGI configuration file.  This is kinda similar to package specification in Node.js, or Ruby.

     

    This creates a problem, because the agent will inject code into classes, with dependencies on the agent packages.  The agent packages will not be declared in the app, and this will result in class-load errors.  Fortunately, OSGI allows you to define what is called a "bootdelegation", which is a list of packages that are available to all OSGI bundles.

     

    The second thing to understand is that the Tibco java products use a proprietary launcher app, "tibcohost.exe".  To launch their java processes, don't expect any "java.exe", or shell launcher scripts here!  We will be doing things the Tibco way!

     

    The key thing to understand is that the tibco install has 2 pieces... a "home directory" where all the Tibco product files are deployed, and a "deploy directory" where the instances of tibco nodes are deployed.

     

    Ok, enough words... from here on in I'll adapt the "stackoverflow" style of explanation... short and to the point...

     

    Find the tra file that launches the BPM node and add -javaagent to it...

     

    Locate your tibco "home" directory...  when you open it, you will see a amx-bpm directory.  Take note of the path.. in my case it as c:\tibco\amx-bpm

     

    Unzip your wily install into this directory.  I just used a base install, and default profile.

     

    Locate your tibco "deploy" directory, then locate the tra file that launches the node you want to instrument.

     

    In my case, this file was in

     

    C:\ProgramData\amx-bpm\tibco\data\tibcohost\BPMHost1\config\BPMNode1\bin\BPMNode1.tra

     

    Inside the tra file, find the property java.extended.properties= -Xmx4096m -Xms1024m -XX\:MaxPermSize\=1024m -XX\:+HeapDumpOnOutOfMemoryError -XX\:PermSize\=128m.....

     

    add this line above it...

     

    tibco.env.TIB_HOME=C:/tibco/amx-bpm  <= location of your tibco home

     

    Then prepend   -javaagent\:%TIB_HOME%/wily/Agent.jar -Dcom.wily.introscope.agentProfile\=%TIB_HOME%/wily/core/config/IntroscopeAgent.default.profile to the property.. like so...

     

    java.extended.properties=-javaagent\:%TIB_HOME%/wily/Agent.jar -Dcom.wily.introscope.agentProfile\=%TIB_HOME%/wily/core/config/IntroscopeAgent.default.profile -Xmx4096m -Xms1024m -XX\:MaxPermSize\=1024m -XX\:+HeapDumpOnOutOfMemoryError -XX\:PermSize\=128m.....

     

    Check your paths are all correct using dir/ls, then move on to deal with OSGI

     

    You will need to locate your node.xml file.. mine was in...

     

    C:\ProgramData\amx-bpm\tibco\data\tibcohost\BPMHost1\data_3.2.x\nodes\BPMNode1\configuration\node.xml

     

    Open it up, and and find the following...

     

      org.osgi.framework.bootdelegation

     

    You will see a name value pair like so...

     

    <kv-pair name="org.osgi.framework.bootdelegation" value="com.ibm.*,com.sun.activation.*,com.sun.awt,com.sun.beans,com.sun.codemodel.*,com.sun.corba.*,com.sun.crypto.*,com.sun.demo.*

    ......

     

    Add the below string to the value field...

     

    com.wily,com.wily.*,sun.*,org.w3c.*,org.xml.sax.*,org.apache.xerces.*,com.sun.org.apache.xalan.*,org.apache.xml,org.apache.xml.*,javax.xml,javax.xml.*,com.sun,com.sun.*org.apache.xalan,org.apache.xalan.*,

     

    The result looks like so...

     

    <kv-pair name="org.osgi.framework.bootdelegation" value="com.wily,com.wily.*,sun.*,org.w3c.*,org.xml.sax.*,org.apache.xerces.*,com.sun.org.apache.xalan.*,org.apache.xml,org.apache.xml.*,javax.xml,javax.xml.*,com.sun,com.sun.*org.apache.xalan,org.apache.xalan.*,com.ibm.*,com.sun.activation.*,com.sun.awt,com.sun.beans,com.sun.codemodel.*,com.sun.corba.*,com.sun.crypto.*,com.sun.demo.*....

    ......

     

    That's it, restart the process and you should be good to go!