How do I invoke Java code from BPEL?
There are three basic strategies for incorporating Java code into your BPEL process:
1) Wrap your Java code as a Web service
2) Use Java binding to call Java code as if it were a Web service
3) Embed your Java code in a BPEL process with a Java extension for BPEL
Wrap Java code as a Web service:
Use a service publishing toolkit, e.g. Apache Axis and Systinet WASP. Add a partnerLinkType to your non-BPEL Web service WSDL to be able to call it from BPEL process. With this approach, only your service publishing toolkit needs access to your Java classes at design and run-time, since the actual protocol for communicating with the Web service will be standard SOAP and XML. Use Java binding to call a Web service:
A BPEL engine can make use of a framework such as WSIF (Web Services Invocation Framework, http://ws.apache.org/wsif) to invoke the Java class[es] directly from your BPEL process as if it were a Web service. This framework enables BPEL to invoke resources which aren't Web services, as if they were a Web service. The Java binding, specifically, has the benefit that you get the performance of a native Java call, however you will have to write a WSDL that describes the interface to your class[es].
Invoke Java code directly from a BPEL process: