Data Binding Classes for Abstract and Concrete WSDL Files

Using an abstract WSDL and its generated concrete WSDL in services and references of the same component requires special consideration if the WSDL contains an embedded schema. When a concrete WSDL file is generated from an abstract WSDL file that has an embedded schema, the resulting concrete WSDL file will also contain the same embedded schema. When you generate data binding classes for both WSDL files, the code generator generates duplicate classes for the embedded schema.

The impact of this is two-fold:
  • Generating the data binding classes for the abstract and concrete WSDL files into a single JAR is not supported.
  • When you generate the data binding classes for the two WSDL files into different bean JARs, both JARs will contain the same classes.
For correct operation, you must manually remove one of the resulting bean JARs from the bundle containing the bean JARs as follows:
  1. Open the component implementation bundle's manifest in the Manifest Editor.
  2. Click the Runtime tab, and delete one of the JARs containing the duplicate bean classes from the Classpath area.
  3. Save the manifest.
To avoid having to manually edit the manifest, the recommended method for using abstract and concrete WSDL files in the same composite is to use only abstract WSDL files for the component services and references and use the concrete WSDL only for the corresponding promoted references as follows:
  1. Delete the wire between component references and promoted references.
  2. Configure the component reference with the abstract WSDL.
  3. Configure the promoted reference with the concrete WSDL.
  4. Wire the component reference to the promoted reference using the Wire tool in the Palette.