Special considerations with components

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Process wizard > Integrate > Application integration > Integrating APIs and extending Bizagi > Custom components > Bizagi JEE example >

Special considerations with components

applies_JEE

 

 

When using the Component library feature in Bizagi, there are some scenarios in which additional configuration is required at the JEE Application Server.

Such scenarios involve sophisticated use of third-party APIs (external libraries or common jar files), which are:

When my component references to jar files which are already contained by the JEE Application Server.

If this is your case, note that the important thing here is that the Application Server may produce conflicts when having a similar jar file.

When my component references an API, which in turn relies on additional APIs.

If this is your case, note that you would need to have those additional APIs at the JEE Application Server and include a manual reference to them.

 

This article describes how to register components which meet with the scenarios above, when using the Component library feature Bizagi and the JEE edition.

Note that these steps do not apply for scenarios in which you develop your own component and it does not use any additional APIs.

To view more information and a simpler example on the Component library use in the JEE edition, refer to JEE Component library example.

 

 

Special consideration

In order to use the Component library for the 2 scenarios mentioned above, you need to:

 

1. Make sure that you build your component's class library without explicitly including the referenced jar files.

2. Only register in the Component Library your component's class library (that one which is the entry point from business rules in Bizagi).

 

3. Include additional jar files in the JEE Application server's library.

 

If you are using WebSphere or Weblogic, you just need to include the additional jar files into their library paths:

For WebSphere:

Include them at <WEBSPHERE_HOME>\lib\ext\.

If these or a similar version of them are already contained, make sure there are no conflicts reported by the server when starting up its service.

 

For Weblogic:

Include them at <WEBLOGIC_HOME>\wlserver_10.3\server\lib\.

If these or a similar version of them are already contained, make sure there are no conflicts reported by the server when starting up its service.

 

If you are using JBoss, there is an additional step which is to register these additional files in JBoss configuration files.

 

Follow the example below for the procedure in JBoss.

 

 

Example for JBoss

A typical example to better illustrate the special considerations, is when we use a developed component to connect to Web services, and that component uses a WS client relying on AXIS.

 

Within this client, we rely on the following libraries:

 

JEE_externalrefs

 

This needs additional configuration because Web services invocations inside JBoss are handled by the wsimport.jar utility that java provides.

 

 

Therefore, our first step is to make sure that we first build our component without including these 6 references, and we upload only this component in the Component library in Bizagi.

 

Next, we copy our component, plus the other 6 libraries it uses into the project's repository at:

<BIZAGI_HOME>\jboss-eap-6.2\modules\system\layers\base\com\bizagi\clibrary\main

 

Consider:

<BIZAGI_HOME>: It is the installation path where you have the JEE Console Manager.

In a development (authoring) environment, this path represents the installation directory of Bizagi JEE edition which is by default set as

C:/BizagiJEE/.

 

 

In this way, and for these libraries' registration, a first step is performed by the JEE management console during the execution of the publish and the predeploy commands in which the basic structure for further configuration is provided.

When you carry out the deployment of your Work portal in JBoss (test or production environments), or when you are working with Bizagi Studio, Bizagi will generate a modules configuration file.

 

Before executing the publish or predeploy, you may want to ensure that you delete the folder clibrary from any previous generation, inside <JBOSS_HOME>\modules\system\layers\base\com\bizagi\.

 

Once you have run Publish or the predeploy command, you will need to edit this modules.xml configuration file found at

<JBOSS_HOME>\modules\system\layers\base\com\bizagi\clibrary\main\

 

ComponentLibraryJEE02

 

To edit this file, carry out the following:

 

Include the module element to refer to libraries used directly or indirectly by your component, by adding the following:

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.1" name="com.bizagi.clibrary">

 <resources>

   <resource-root path="[YOUR_COMPONENT].jar"/>

   <resource-root path="[USED_LIBRARY1].jar"/>

   <resource-root path="[USED_LIBRARY2].jar"/>

 </resources>

 <dependencies>

    <module name="[JEE_USED_LIBRARIES_PACKAGE]"/>

 </dependencies>

</module>

 

In our AXIS example, the configuration file will finally look like:

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.1" name="com.bizagi.clibrary">

  <resources>

   <resource-root path="axis.jar"/>

   <resource-root path="jaxrpc.jar"/>

   <resource-root path="commons-discovery-0.2.jar"/>

   <resource-root path="commons-logging.jar"/>

   <resource-root path="saaj.jar"/>

   <resource-root path="wsdl4j.jar"/>

   <resource-root path="activation-1.1.jar"/>

   <resource-root path="log4j-1.2.17.jar"/>

   <resource-root path="MyComponent.jar"/>

  </resources>

  <dependencies>

      <module name="javax.api"/>

  </dependencies>

</module>

 

Our component is called MyComponent.jar, and it uses these other components which we need to include in the module's definition as well:

Axis.jar

Jaxrpc.jar

Commons-discovery-0.2.jar

Commons-logging.jar

Saaj.jar

Wsdl4j.jar

Activation-1.1.jar

Log4j-1.2.17.jar

 
Similarly, AXIS referenced libraries found under the javax.api package need to be defined under <dependencies> (meaning, these afore mentioned libraries use this package from the JEE framework).

 

Once you are done, save changes in the file and close it.

 

For more information about JBoss architecture and the vendor's detail on class loading and modules (to handle reference to jar classes), refer to: https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.2/html/Development_Guide/chap-Class_Loading_and_Modules.html