IBM BPM, V8.0.1, All platforms > Authoring services in Integration Designer > Advanced development topics > Adding Java to the application > Use Java in the assembly editor

SCA to Java bridge

You cannot directly wire a component with a Web Services Definition Language (WSDL) type of reference to another component that has a Java™ interface, but there is a utility that helps you create a bridge component to make a WSDL to Java connection. The component is generated, so you do not have to write conversion code.

Data that flows through IBM BPM is modeled as XML schemas and processed by the server as service data objects or business objects. A service data object is a runtime representation of business data that implements the data object interface, as described in the Service Data Objects Version 2 specification.

Types that are modeled as XML and whose runtime representations are data objects are referred to as WSDL types, where inputs , outputs, and faults are described as XML schemas. Existing Java and Java 2 Platform Enterprise Edition applications process data as Java types. Java types include Java primitives, classes defined by the J2SE API, and user-defined Java classes.

In an integration environment, components that are processing WSDL types sometimes need to invoke existing Java applications that expect data as Java types. An example is a SCA component that needs to invoke a session EJB. This invocation requires a conversion between WSDL types and Java types. The conversion is accomplished by an SCA to Java bridge component.

You can generate the bridge component for the following Java elements:

The system generates an SCA Java component, which has the target Java interface as its reference and an interface that matches the WSDL port type that was just generated. This component takes WSDL types as parameters, converts them to Java types, and delegates the call to the target Java interface. Any returns or exceptions are converted to WSDL types and returned to the caller. The utility generates code from the imported Java interface or class, and the generated files take part of their name from that interface. The utility generates the following files:

You can generate the files and wiring in the IBM Integration Designer assembly editor (see "Calling Java interfaces from WSDL references", which you can access from the related links below) or you can generate the files from IBM Process Server using the genMapper command. If you generate the files from the genMapper command, import those files into a module in IBM Integration Designer. You can then use the assembly editor to wire the WSDL reference and the Java interface to the generated component.

There are restrictions on the Java class or interface that you can drag onto the assembly editor canvas to generate a bridge component:

An interface consists of one or more operations, which in turn have parameters. When using an SCA-to-Java bridge component, you can pass these parameters only by value. The system uses the Java class name as the type name for the generated data object. When you need to pass parameters from the operations of a target Java interface that is a user-defined interface, you must override the code and provide a concrete class that the system can instantiate. If the runtime environment cannot find the type to create the concrete class, the system generates a runtime exception.

For some java.util container classes, the mapper generates complex types that are based on xsd:anyType as the WSDL type. These container classes include arrays, SortedMap, AbstractMap, BitSet, Dictionary, IdentityHashMap, LinkedHashMap, and TreeMap (see "Java to XML conversion" for more details). In some cases, you might need to override the generated code by writing custom conversion code.

Edit the generated code according to the commented instructions in the file, but do not change the file names. For links to topics that provide more details about editing that code, see the related tasks below.

If the Java interface changes after you have completed the mapping, you can update the mapper implementation by running Regenerate Implementation for the mapping component. This matches the WSDL interface to that of the updated Java interface, as well as updating the mapping code in the mapper's Java implementation.

Use Java in the assembly editor


Related tasks:
Create a Java component
Calling WSDL interfaces from Java references
Calling Java interfaces from WSDL references
Overriding the generated Service Component Architecture implementation
Overriding a Service Data Object (SDO) to Java conversion


Related reference:
Java to XML conversion