This page describes an older version of the product. The latest stable version is 16.1.1.

# Processing Unit

XAP allows to configure, package and deploy a Processing Unit. The OpenSpaces Mule integration allows you to run a pure Mule application (with or without OpenSpaces special extension points and transports) as a Processing Unit.

# Configuration

In order to run Mule as a Processing Unit within the `pu.xml` file (which is a Spring application context), the following needs to be defined:

``````<bean class="org.openspaces.esb.mule.pu.OpenSpacesMuleContextLoader">
<property name="location" value="/META-INF/spring/mule.xml"/>
</bean>
``````

In the example above, the `OpenSpacesMuleContextLoader` loads a Mule application as defined in the `mule.xml` configuration file. The `location` parameter is optional and defaults to the value specified in the example above.

# Packaging

Packaging of the Processing Unit should follow the Processing Unit structure.

Note

When deploying a Processing Unit into the SLA-driven container, Mule JAR files should be “installed” into the XAP installation (on each node). The following minimum set of JARs need to be copied into `<XAP Root>\lib\platform\mule` (if the Mule directory does not exists, create it).

• Download Mule 3.7 distribution from mule’s website and extract the file.

• Copy the following JAR files from `<Mule Root>\lib\mule` to `<XAP Root>\lib\platform\mule`: `mule-commons`, `mule-core`, `mule-core-tests`, `mule-module-annotations`, `mule-module-client`, `mule-module-jbossts`, `mule-module-spring-config`, `mule-module-spring-extras`, `mule-mvel2-2.1.9-MULE-003`, `mule-transport-http`, `mule-transport-quartz`, `mule-transport-stdio`, `mule-transport-vm` . Other transports (if used) should be copied as well.

• Copy the following JAR files from `<Mule Root>\lib\opt` to `<XAP Root>\lib\platform\mule`: `commons-beanutils`, `commons-io`, `commons-lang`, `dom4j`, `guava`, `jaxen`, `quartz`, `uuid`, `jgrapht-jdk1.5`. Other required JAR files can be copied as well (or they can be put in the Processing Unit `lib` directory).

• Copy the following JAR files from `<Mule Root>\lib\boot` to `<XAP Root>\lib\platform\mule`: `commons-cli`, `log4j`, `mule-module-logging`, `wrapper`. Other required JAR files can be copied as well (or they can be put in the Processing Unit `lib` directory).

Note

The required mule jar files can also be placed within the processing unit `lib` directory, without “installing” mule into each GSC node installation.

#### Packaging for Mule example

In the Mule ESB example, the following jars are required and should be placed under \lib\platform\mule

``````commons-beanutils-1.8.0.jar
commons-cli-1.2.jar
commons-io-1.4.jar
commons-lang-2.4.jar
dom4j-1.6.1.jar
guava-16.0.1.jar
jaxen-1.1.1.jar
jgrapht-jdk1.5-0.7.3.jar
log4j-1.2.16.jar
mule-common-3.7.0.jar
mule-core-3.7.0.jar
mule-core-3.7.0-tests.jar
mule-module-annotations-3.7.0.jar
mule-module-client-3.7.0.jar
mule-module-jbossts-3.7.0.jar
mule-module-logging-3.7.0.jar
mule-module-spring-config-3.7.0.jar
mule-module-spring-extras-3.7.0.jar
mule-mvel2-2.1.9-MULE-003.jar
mule-transport-http-3.7.0.jar
mule-transport-quartz-3.7.0.jar
mule-transport-stdio-3.7.0.jar
mule-transport-vm-3.7.0.jar
quartz-1.8.5.jar
uuid-3.4.0.jar
wrapper-3.2.3.jar
``````

# Running/Deploying

Once the Processing Unit is packaged, it can be run using the different options that come with OpenSpaces: