The following sections discuss prerequisites that must be performed before Infinity Process Platform can be deployed within a WebLogic application server.

A basic understanding of WebLogic Administration, Enterprise Application Archive (EAR), and Web Application Archive (WAR) files is required from this point forward.

We we recommend to enable 2nd-level caching for production deployments to optimize the performance of a secure JCR deployment. For details refer to section Tuning by using Hazelcast and to chapter Optimizing the Performance of secure JCR Deployments accordingly.

Download and Installation

Before any activities can be done, download WebLogic from the WebLogic Download Site. Once downloaded, install WebLogic onto the host server. The WebLogic installation directory is referred to as %WEBLOGIC_HOME% from this point forward.

Additional WebLogic system properties can be set in the startup script. Refer to the WebLogic Documentation for more information regarding system properties.

Before you can configure the application server you have to create your server domain. For details on that, refer to the application server manual. Additionally, make sure that you have configured your domain to be able to start the server and you are running in development mode for the hot deployment functionality.

To achieve the carnot.ear file or needed war files provided by Infinity Process Platform, download one of the Maven archetype templates from the Infinity Process Platform artifactory matching your requirements. The following deployment configurations for WebLogic are provided as archetypes:

Please refer to chapter Creating a Runtime Environment with Apache Maven in the Installation Guide section Other Archetypes of our Infinity Process Platform Wiki Maven/Basic Setup page for details on how to retrieve these configurations.

JDBC Drivers

WebLogic provides many third party JDBC libraries. If you plan to use a third-party JDBC driver that is not installed with a WebLogic Server, you must update the WebLogic Server's classpath to include the location of the JDBC driver classes. In order to do this create a new %DOMAIN_HOME%/bin/setUserOverrides.cmd file with the following content for Windows environments:

set PRE_CLASSPATH=<path to drivers>\mysql-connector-java-5.1.34-bin.jar;<path to drivers>\derbyclient.jar

Please note that in case you use a WebLogic version earlier than 12, edit the existing setDomainEnv.cmd file instead and extend it with this content.

For Unix environments you have to create a ${DOMAIN_HOME}/setUserOverrides.sh file (or edit the existing setDomainEnv.sh file in case you use a WebLogic version earlier than 12) with the following content:

export PRE_CLASSPATH=<path to drivers>\mysql-connector-java-5.1.34-bin.jar:<path to drivers>\derbyclient.jar

Please note that if you plan to use the JDBC drivers in more domains we recommend to use the approach described in section Modifying the Classpath of the WebLogic documentation.

Modifications required for using Python in Infinity

In case you use Python in Infinity, you need to perform the following steps:

  1. Either copy the jython-standalone-2.7-b1-infinity02.jar file to folder %DOMAIN_HOME%/python-lib or extract the content of the lib folder that is within this JAR to the same folder.
    You can download this jar file from https://infinity.sungard.com/repository/simple/ipp-3rd-party:org/python/jython-standalone/2.7-b1-infinity02/jython-standalone-2.7-b1-infinity02.jar.

    To download this jar file you need to register here for a trial account:
    After registration of a new account it takes a while until it has been processed. Compliance with US export regulations needs to be ensured. Once you have an account you can procure a free 90 day trial license. As part of the procurement you will be granted access to our Maven repository https://infinity.sungard.com/repository from where you can download the jar.

  2. Create file %DOMAIN_HOME%/bin/setUserOverrides.cmd in a Windows environment with the following content:
       set EXTRA_JAVA_PROPERTIES=-Dpython.path=%DOMAIN_HOME%\python-lib\jython-standalone-2.7-b1-infinity02.jar\Lib
       rem Uncomment the following line if the python files was extracted from jython-standalone-2.7-b1-infinity02.jar\Lib to %DOMAIN_HOME%\python-lib
       rem set EXTRA_JAVA_PROPERTIES=-Dpython.path=%DOMAIN_HOME%\python-lib
  3. If you are using a Unix environment the same should be done in ${DOMAIN_HOME}/setUserOverrides.sh:
        export EXTRA_JAVA_PROPERTIES=-Dpython.path=${DOMAIN_HOME}/python-lib/jython-standalone-2.7-b1-infinity02.jar/Lib
        # Uncomment the following line if the python files was extracted from jython-standalone-2.7-b1-infinity02.jar\Lib to ${DOMAIN_HOME}/python-lib
        # export EXTRA_JAVA_PROPERTIES=-Dpython.path=${DOMAIN_HOME}/python-lib

Clustering your Web Application with Hazelcast

We recommend to cluster your Web application with the data distribution platform Hazelcast as described in section Tuning by using Hazelcast.

WebLogic Setup

This section contains the following information regarding setting up the transactional resources required by Infinity Process Platform in the WebLogic server.

Configuring WebLogic

This section describes the configuration of resources required to use Infinity Process Platform with WebLogic. Refer to the Release Notes for details on the currently supported WebLogic versions.

Create a WebLogic domain for Infinity Process Platform. Please refer to the WebLogic manual for instructions.

Data Source

  1. Login into WebLogic Administration console.
  2. Navigate to <your_domain> > <your_server> > Services > JDBC > Data Sources and click on datasources.

  3. In the Summary of JDBC Data Sources view and in the Data Sources table section, click New.

  4. In Create a New JDBC Data Source view, make sure the JNDI name match
    Name: AuditTrail
    JNDIName: AuditTrail.DataSource
    Database Type: <select database_type from drop down>
    Name: AuditTrail


  5. Click Next and select relevant database driver (XA.)

  6. Click Next and fill in the below details in the Connection Properties dialog.

  7. Click Next and select Test Configuration button to test.

  8. Click Next and select target server where the datasource is going to be deployed and click finish.

  9. Navigate to my server > Services > JDBC > Data Sources. Select the AuditTrail datasource and navigate to the Connection Pool tab. Set Maximum Capacity to 50.
  10. Save.


JMS Server

  1. Navigate to <your_domain> -> <your_server> -> Services -> Messaging -> JMS Servers.


  2. Click the New button in the summary of JMS Servers page.
  3. Enter the name of the JMS Server.

In case you need a persistent store for JMS messaging, create a non-xa datasource first and add a JDBC persistent store with the created datasource. Select this persistent store while creating JMS Server.

JMS Modules

  1. Navigate to <your_domain> -> <your_server> -> Services -> Messaging -> JMS Modules.

  2. Click New.

  3. Fill module name in Create JMS System Module and leave the Descriptor File Name and Location in Domain fields empty to assign to the default values.

  4. Select the target server.

  5. Leave the checkbox unchecked and click finish and click activate changes.



This links the JMS Module to the JMS Server.

  1. Click on <your_domain> -> <your_server> -> Services -> Messaging -> JMS Modules and click on JmsModuleCarnot to edit its settings.

  2. In the Subdeployments tab, click New.

  3. Fill in your subdeployment name and click Next.

  4. Check the target JMS server and click Finish.

JMS Queue Connection Factory

Create the JMS Queue Connection Factory that is used for the Infinity Process Platform JMS queues that are created later.

  1. Click on <your_domain> -> <your_server> -> Services -> Messaging ->JMS Modules.
  2. Select the just created JMS Module from the JMS Modules list.
  3. Select New within the Summary of Resources table located in the Configuration page.
  4. Select Connection Factory as the resource type.

  5. Click Next and in the connection factory dialog fill in the below name and JNDI name.

  6. Click Advanced Targeting and fill in targets for the subdeployment.

  7. Finish and activate the changes.
  8. Select the just created JMS Module from the JMS Modules list.
  9. Select the just created JMS Connection Factory from the Resources list.
  10. Select the Configuration tab. Select the Transactions tab. In the Transaction tab, enable XA transactions:

  11. Select Save.

JMS Queues

The following, provides instructions for creating the JMS queues required by Infinity Process Platform within a EJB deployment.

  1. Click on <your_domain> -> <your_server> -> Services -> Messaging -> JMS Modules.
  2. Select the just created JMS Module from the JMS Modules list.
  3. Select New within the Summary of Resources list located in the Configuration page
  4. Select Queue as the type of resource to create.

  5. Click Next and fill in Name and JNDI name fields as CarnotDaemonQueue.

  6. Click Next and select the created JMS subdeployment from the subdeployment drop-down list.

  7. Select the created JMS server from the list of JMS Servers.
    WebLogic 9 - JMS Queue Subdeployment
  8. Select Finish.
  9. Select the just created Queue From the Configuration tab, select the Delivery Failure tab.
  10. Set the Redelivery Delay Override field to 1000 and the Redelivery Limit field to 10:

  11. Select Save
  12. Repeat the steps and create the two other Infinity Process Platform JMS queues: CarnotApplicationQueue and CarnotSystemQueue.

Client Configuration

For client configuration with WebLogic, build a client lib file called wlfullclient.jar.

Make sure your Java home and JVM home apply to the supported versions. Refer to the Infinity Release Notes for details on the supported platform version for the current release. To create the wlfullclient.jar file for a client Web application do the following:

  1. Navigate to the WL_HOME/server/lib folder.
  2. Use the following command to create the wlfullclient.jar in the server/lib directory:
    java -jar wljarbuilder.jar -profile wlfullclient
  3. You can now copy and bundle the wlfullclient.jar with client applications.
  4. Add the wlfullclient.jar to the client application's classpath.

Deactivating the Keepalives option

To avoid session timeouts when using principal login, deactivate the KeepAlive option. In the WebLogic Administration Console perform the following steps:

  1. Navigate to the server's HTTP settings page. Go to Home > Summary of Servers > AdminServer
  2. Click the Protocols tab.
  3. Click the HTTP tab.
  4. Deselect Enable Keepalives.  

  5. Click Save and Activate Changes.
  6. Restart the WebLogic server.


The following sections provide deployment instructions on using the predefined deployment configurations to deploy the Infinity Process Platform EAR file and deploying Infinity Process Platform in a WebLogic application server.

Deploying the EAR File

The following sections discuss the deployment of the Infinity Process Platform EAR file provided via the preconfigured deployment configuration into the WebLogic application server.

Deployment Steps

  1. Login into the WebLogic administration console.
  2. Navigate to <your_server_domain> > <your_server> > Deployments.

  3. Use the Install Application Assistant and select carnot.ear file:

  4. Click Next.
  5. Select Install this deployment as an application.

  6. Select the Server and click Next > Finish.

Standalone Jackrabbit Deployment on WebLogic

To prepare a Jackrabbit deployment on WebLogic, download the jackrabbit-jca-2.6.1-infinity02.rar file from the following location: https://infinity.sungard.com/repository/simple/ipp-3rd-party/org/apache/jackrabbit/jackrabbit-jca/2.6.1-infinity02/jackrabbit-jca-2.6.1-infinity02.rar.


In case you like to use DOCX files, e.g. for templating, and you have a local jackrabbit-jca-2.6.1.rar which was downloaded via the earlier jackrabbit-jca-2.6.1-infinity01.rar file version, do one of the following:

Please refer to the following sections for instructions on how to setup WebLogic for a standalone Jackrabbit deployment.

  1. Copy (and remove) jackrabbit-api-2.6.1.jar from the RAR and place it into %DOMAIN_HOME%/lib.
  2. Create a META-INF/weblogic-ra.xml inside the RAR archive with the following content.
    <?xml version="1.0" encoding="UTF-8"?>
    <weblogic-connector xmlns="http://www.bea.com/ns/weblogic/90">
  3. In the META-INF/weblogic-ra.xml file inside the RAR archive, adapt the properties HomeDir and ConfigFile as per your repository locations.
  4. Copy the following jars from %CARNOT_HOME%/lib to %DOMAIN_HOME%/lib.
  5. Create a repository.xml in your classpath, e.g.:
    <?xml version="1.0"?>
       Licensed to the Apache Software Foundation (ASF) under one or more
       contributor license agreements.  See the NOTICE file distributed with
       this work for additional information regarding copyright ownership.
       The ASF licenses this file to You under the Apache License, Version 2.0
       (the "License"); you may not use this file except in compliance with
       the License.  You may obtain a copy of the License at
       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.
    <!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.2//EN"
    <!-- Example Repository Configuration File -->
            virtual file system where the repository stores global state
            (e.g. registered namespaces, custom node types, etc.)
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/repository"/>
            security configuration
        <Security appName="Jackrabbit">
                access manager:
                class: FQN of class implementing the AccessManager interface
            <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager">
                <!-- <param name="config" value="${rep.home}/access.xml"/> -->
            <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
               <!-- anonymous user name ('anonymous' is the default value) -->
               <param name="anonymousId" value="anonymous"/>
                  default user name to be used instead of the anonymous user
                  when no login credentials are provided (unset by default)
               <!-- <param name="defaultUserId" value="superuser"/> -->
            location of workspaces root directory and name of default workspace
        <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
            workspace configuration template:
            used to create the initial workspace if there's no workspace yet
        <Workspace name="${wsp.name}">
                virtual file system of the workspace:
                class: FQN of class implementing the FileSystem interface
            <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
                <param name="path" value="${wsp.home}"/>
                persistence manager of the workspace:
                class: FQN of class implementing the PersistenceManager interface
            <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
              <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
              <param name="schemaObjectPrefix" value="${wsp.name}_"/>
                Search index and the file system it uses.
                class: FQN of class implementing the QueryHandler interface
            <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                <param name="path" value="${wsp.home}/index"/>
            Configures the versioning
        <Versioning rootPath="${rep.home}/version">
                Configures the filesystem to use for versioning for the respective
                persistence manager
            <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
                <param name="path" value="${rep.home}/version" />
                Configures the persistence manager to be used for persisting version state.
                Please note that the current versioning implementation is based on
                a 'normal' persistence manager, but this could change in future
            <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
              <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
              <param name="schemaObjectPrefix" value="version_"/>
            Search index for content that is shared repository wide
            (/jcr:system tree, contains mainly versions)
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
            <param name="path" value="${rep.home}/repository/index"/>
  6. Create the following property files and add them to your classpath: In the users.properties file, add default entries, which can be one or more users as keys and their passwords as values: <ipp-jcr-user>=<ipp-jcr-password> You can leave the roles.properties file, which is a container for users, as keys and a comma-separated list of their roles as values, empty. The default values set in the users.properties file can be overwritten in the carnot.properties file by setting the following properties: which have the values <ipp-jcr-user> and <ipp-jcr-password> respectively per default.
  7. Deploy the downloaded jackrabbit-jca-2.6.1-infinity01.rar in the same way as a Web archive.
  8. Set deployment order to 90, so that it is always started before any other Infinity Process Platform related deployments.

Setting the JCR Connection Factory

You need to verify the JCR connection factory settings.

  1. Go to Settings for javax.jcr.Repository
  2. Click on the Transaction tab
  3. Check that XA Transaction is selected from the Transaction Support drop-down list


Deploying in Spring mode

To configure the Infinity Process Platform Workflow Execution Perspective in spring mode:

  1. Add the following files to the WEB-INF/config/ipp/spring folder:
  2. Extend your web.xml with the following entry:
        <description>Content Repository</description>
  3. Add the following entry to your weblogic.xml file:
    Please refer to the example weblogic.xml file.

Setting up additional Jackrabbit VFS Repositories

To set up additional Jackrabbit VFS repositories in WebLogic, you need to configure a new connection factory on the server using a different repository home and JNDI name.

This resource can then be bound using the DocumentManagementService#bindRepository API. Please refer to chapter Managing Document Repositories of the Programming Guide for details.

Preparing for a proper Portal WAR deployment Logging

If you perform a standard IPP portal WAR deployment on WebLogic, the produced log might miss some details like bootstrapping information from the Spring Framework or route tracing from the Camel Context.

To provide a proper logging, copy the slf4j-api-1.5.11.jar and slf4j-log4j12-1.5.11.jar libraries to the lib folder of your WebLogic domain.

Requirements in an EJB Tunneling Environment

If you like to connect to the engine in an EJB tunneling environment with WebLogic, use the TunnelingSessionFactory provided by Infinity to avoid connection issues. To use this session factory, set the following property in your client-side carnot.properties file:

Secure.Session.Factory = org.eclipse.stardust.engine.api.ejb2.TunnelingSessionFactory

Tuning by using Hazelcast

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 Infinity refer to chapter Retrieving Entities from In-Memory Cache in the Developer Handbook.

Example Use Case

The following examples demonstrates the usage of Hazelcast on WebLogic 10.3. TheInfinity Process Platform provides a prepared RAR file to be deployed with WebLogic.

Separate RAR deployment

To set up Hazelcast on WebLogic for a separate RAR deployment perform the following steps:

  1. Copy the hazelcast-2.4-stardust03.rar to the %DOMAIN_HOME%/lib folder ( https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.jar ) of your WebLogic application server.
  2. Add this artifact to the PRE_CLASSPATH variable in the setUserOverrides.cmd resp. setUserOverrides.sh residing in the %DOMAIN_HOME%/bin folder.
  3. Download the hazelcast-ra-2.4-stardust03.rar file from the repository: https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.rar
  4. Deploy the downloaded RAR file as an application via the WebLogic Administration console (due to the default weblogic-ra.xml in com.hazelcast:hazelcast-ra:2.4-stardust03:rar!META-INF/ the Hazelcast connection factory will be bound to java:/HazelcastCF).
    1. Go to WebLogic's console deployment screen and click Install

    2. Select the RAR file and click Next.

    3. In the Install Application Assistant select to install the deployment as application and click Next.

    4. Provide a name for the deployment, i.e. hazelcast-ra-1 and click Next.

    5. Finish the installation by choosing to Yes, take me to the deployment's configuration screen and click Finish.

    6. In the deployment's configuration screen, set the deployment order to 90 so that it is always started before any other Infinity Process Platform related deployments and click Save.

    7. On the Configuration tab select subtab Outbound Connection Pools.
    8. Expand the javax.resource.cci.ConnectionFactory entry and open the element.

    9. On the General tab choose a JNDI name, i.e. HazelcastCF. Note that this is used later in your carnot.properties file!

    10. On the Connection Pool tab choose an inital capacity of 10 and maximal capacity of 50. Click Save.

  5. Optional: Put an appropriate hazelcast.xml on the classpath of your EAR (or a default configuration will be taken from com.hazelcast:hazelcast:2.4).
  6. Add the following entries to your carnot.properties file to enable Hazelcast caching:
    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
  7. Redeploy the EAR.
  8. Optionally: deploy the Hazelcast Monitor Web Application
    1. Extract the hazelcast-monitor-2.4.war from the Hazelcast distribution ( http://www.hazelcast.com/files/hazelcast-2.4.zip).
    2. Deploy it to WebLogic, essentially only the context root might need adjustment.
    3. Start the application after deployment.
    4. Point your browser to the context root.
    5. Just press Add Cluster, accepting the defaults.
    6. Click on Maps > ipp-2nd-level-cache to inspect the cache.

The engine now uses Hazelcast as second level cache provider. This can be monitored as cache size and Hit Rate will change after logging into the Infinity Process Platform portal, for example.

The cache is configured to remove cached entries after at most 60 seconds for the time being. This is why Infinity will eventually hit the database again to repopulate the cache. The time to live can be adjusted in the hazelcast.xml configuration file (<time-to-live-seconds>). A default hazelcast.xml can be found in <Infinity Installation>/examples/hazelcast or downloaded here: hazelcast.xml.

Please note that with this setup there will be only one node. Hazelcast either detects or is explicitly told about additional node members. For details on this issue please refer to the Hazelcast documentation or the hazelcast.xml file.

RAR inside EAR deployment

To deploy the Hazelcast resource adapter inside your EAR, perform the following steps:

  1. Copy the hazelcast-2.4-stardust03.jar into the root folder of your EAR ( https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.jar ).
  2. Download the hazelcast-ra-2.4-stardust03.jar file from the repository: https://infinity.sungard.com/repository/ipp-3rd-party/com/hazelcast/hazelcast-ra/2.4-stardust03/hazelcast-ra-2.4-stardust03.rar
  3. Put this RAR file into the root folder of your EAR.
  4. Adapt your EAR file in the following way:
    1. The following lines need to be added to the application.xml of the EAR:
      <application [...]>
    2. Add a classpath entry for hazelcast-2.4.jar to the META-INF/MANIFEST.MF of the carnot-engine.jar as well as hazelcast-ra-2.4-stardust03.jar file.
  5. Deploy your EAR (due to the default weblogic-ra.xml in com.hazelcast:hazelcast-ra:2.4-stardust03:rar!META-INF/ the Hazelcast connection factory will be bound to java:/HazelcastCF).
  6. Optional: Put an appropriate hazelcast.xml on the classpath of your EAR (or a default configuration will be taken from com.hazelcast:hazelcast:2.4).