Swordfish Documentation: Apache ODE integration
Deploying ODE and BPEL samples in Swordfish
By default you have ode samples in the form of a JBI component package zip file. You must have the OSGI bundle to deploy it to Swordfish .
To deploy ODE and BPEL samples:
- Change the extension from zip to jar
- Change the component archive:
- open archive for editing (or unpack it somewhere) and go to METAINF folder, you should see jbi.xml file here.
- Add MANIFEST.MF file in this folder with the following content:
Manifest-Version: 1.0 Bundle-SymbolicName: !!!!YOUR BUNDLE NAME!!!!! Bundle-Version: 0.0.0 DynamicImport-Package: javax.*,org.xml.*,org.w3c.*
- repack archive and you are ready to install bundle
- run swordfish and install bundle manually with osgi> install file:///c:/you-bundle-location
- start bundle with command osgi> start BUNDLE_ID (you can check bundle ID with osgi> ss command)
- alternatively you can add bundle statement to \org.eclipse.swordfish.bundles\config.ini file to automatic install and start on Swordfish startup.
IMPORTANT: Add 2 empty lines at the end of MANIFEST.MF file
Proposal for the JAX_WS-BPEL integration sample
The sample will cover both scenarios:
- calling a BPEL process from JAX-WS (BPEL as service provider)
- calling a JAX-WS service from BPEL (BPEL as service consumer)
The sample realizes the same flight reservation functionality as our standard JAX-WS sample, but uses a reservation storage, which instead implemented as internal hash table is implemented as a separate JAX-WS web service.
We realize the createReservation function as BPEL process calling a JAX-WS implemented reservationStorage.
So the java createReservation implemetation will call an ODE web service implementing this function. BPEL would construct a reservation from the input data and then call a reservationStorage.put web service function.
This way we cover both scenarios in one example, but will provide separate test cases for both scenarios (using a mock BPEL service and calling BPEL directly).
JAX_WS-BPEL demo implementation proposal
- simple java based web service client
- SWORDFISH instance with demo BPEL process deployed
- second SWORDFISH instance with JAX-WS services deployed (using separate SWORDFISH instance need for clear demonstation that we really invoke JAX-WS services from BPEL process)
The scenario is:
- Simple Client execute createReservation request to SWORDFISH 1, BPEL process start executing.
- After prepare needed info createReservation BPEL process invoke reservationStorage.put() deployed on SWORDFISH 2 and returns success confirmation and reservation ID to simple client.
- for additional check Simple Client invoke reservationStorage.find() service directly on SWORDFISH 2.