JAX-WS data handler

The Enterprise JavaBeans (EJB) import binding uses the JAX-WS data handler to turn request business objects into Java™ object parameters and to turn the Java object return value into the response business object. The EJB export binding uses the JAX-WS data handler to turn request EJBs into request business objects and to turn the response business object into a return value.

This data handler maps data from the SCA-specified WSDL interface to the target EJB Java interface (and vice versa) using the Java API for XML Web Services (JAX-WS) specification and the Java Architecture for XML Binding (JAXB) specification.
Note: Current support is restricted to the JAX-WS 2.1.1 and JAXB 2.1.3 specifications.
The data handler specified at the EJB binding level is used to perform request, response, fault, and runtime exception processing.
Note: For faults, a specific data handler can be specified for each fault by specifying the faultBindingType configuration property. This overrides the value specified at the EJB binding level.

The JAX-WS data handler is used by default when the EJB binding has a WSDL interface. This data handler cannot be used to transform a SOAP message representing a JAX-WS invocation to a data object.

The EJB import binding uses a data handler to transform a data object into a Java Object array (Object[]). During outbound communications, the following processing takes place:
  1. The EJB binding sets the expected type, expected element, and targeted method name in the BindingContext to match those specified in the WSDL.
  2. The EJB binding invokes the transform method for the data object requiring data transformation.
  3. The data handler returns an Object[] representing the parameters of the method (in the order of their definition within the method).
  4. The EJB binding uses the Object[] to invoke the method on the target EJB interface.
The binding also prepares an Object[] to process the response from the EJB invocation.

This is required to support the In/Out and Out types of parameters.

For parameters of type Out, the values must be returned in the response data object.

The data handler processes and transforms values found in the Object[] and then returns a response to the data object.

The data handler supports xs:AnyType, xs:AnySimpleType, and xs:Any along with other XSD data types. To enable support for xs:Any, use the @XmlAnyElement (lax=true) for the JavaBeans property in the Java code, as shown in the following example:
public class TestType {
	private Object[] object;

	@XmlAnyElement (lax=true)
	public Object[] getObject() {
		return object;
	)

	public void setObject (Object[] object) {
		this.object=object;
	)
)
This makes the property object in TestType an xs:any field. The Java class value used in the xs:any field should have the @XmlAnyElement annotation. For example, if Address is the Java class being used to populate the object array, the Address class should have the annotation @XmlRootElement.
Note: To customize the mapping from the XSD type to Java types defined by the JAX-WS specification, change the JAXB annotations to fit your business need. The JAX-WS data handler supports xs:any, xs:anyType, and xs:anySimpleType.
The following restrictions are applicable for the JAX-WS data handler: