Here's a quick overview to deploy ODE on a JBI container (e.g. ServiceMix)
Check our download page and get the latest JBI-based distribution. Unzip it in a directory of your choice. We'll now refer to this directory as ODE_HOME.
For example, with ServiceMix you can use file-system deployment:
(from ode/jbi directory) cp ODE_HOME/ode-jbi-1.1.zip SERVICEMIX_DIR/install
The above will result in ODE being installed with the default settings. You may wish to first modify the
ode-jbi.properties file found in the root of the installer ZIP.
We are assuming that the reader is familiar with JBI deployment concepts. Deploying a process consists of the following steps:
.xsdfiles into the temporary directory
[deploy.xml](deploy.xml.html)) and place it in the temporary directory
Some JBI examples are available under the examples directory of the ODE distro:
Extract the distro-jbi-2.0-SNAPSHOT.zip created in the build instructions above.
To compile the examples, you may wish to define the ODE_HOME environment variable. The build script does a good job of figuring this out without ODE_HOME set, however.
# On Linux/Unix export ODE_HOME=/path/to/ode/distribution # On Windows set ODE_HOME=C:\Path\To\ODE\Distribution
and run Ant in the example's directory:
cd %ODE_HOME%/examples/PingPong ant
This will create a JBI service assembly in the "build" subdirectory. With ServiceMix you can simply copy it to the file-system hot deployment directory:
(from PingPong directory) cp build/PingPing-sa.zip SERVICEMIX_DIR/deploy
Finally, you can test the example by typing:
(from PingPong directory) ant test
ODE now relies strictly on abstract web service definitions (i.e., without binding/service/port definitions), meaning that you only need abstract WSDLs when compiling processes. Since JBI uses normalized messages (in theory, at least), there is no need to define bindings for the BPEL service engine.
In deploy.xml, you simply define the JBI internal endpoints invoked or provided by your partnerLinks,
<?xml version="1.0" encoding="UTF-8"?> <deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:process="urn:/Ping.bpel" xmlns:ping="urn:/Ping.wsdl" xmlns:pong="urn:/Pong.wsdl"> <process name="process:Ping"> <active>true</active> <provide partnerLink="PingPartnerLink"> <service name="ping:PingService" port="PingPort"/> </provide> <invoke partnerLink="PongPartnerLink"> <service name="pong:PongService" port="PongPort"/> </invoke> </process> </deploy>
One may use JBI binding components to make services externally available and therefore providing concrete bindings to those binding components. An example of exposing process services via SOAP/HTTP can be found in the PingPong ping-http service unit.
The generated installer will use an internally-managed embedded Derby database. No configuration is required. To use an external database one needs to modify
ode-jbi.properties found in the component installer zip.
Many binding components are not very good about delivering messages in the correct format for WSDL11 services.
ServiceMix' so-called lightweight components make it difficult to properly expose process services since they do not fully implement the JBI contract and do not allow the process engine to enquire about its external endpoints. * SoapHelper needs to properly resolve the WSDL operation name (patch available) https://issues.apache.org/activemq/browse/SM-488