I'm using the wise SoapClient to call an external SOAP web service. The ESB service itself is exposed as web service as well, but using a different XSD, and only OneWay.
Smooks is used to transform the input XML SOAP message into the format that the external web service wants. Since wise wants it's message as JAXB-objects, the Smooks transformation is configured to instantiate the wise-generated JAXB classes.
When writing this as resource-config tags (smooks-1.0.xsd namespace), it works correctly. However, when using the much shorter and preferred jb:bean tags (javabean-1.2.xsd namespace), ClassNotFoundException occurs while deploying the .ESB service: Smooks can't find the generated classes. This makes sense, since Wise won't create them until the first request. Apparently the behaviour is quite different between the 1.0 and the 1.2 notation, while using the same Smooks runtime.
- During .ESB deployment, the configuration is only parsed. No classes are loaded.
- With the first request, Wise creates JAXB sources.
- While transforming, Smooks classloads the JAXB classes.
- During .ESB deployment, classes in the configuration are already classloaded. Hence, ClassNotFoundException.
This is the older version of the WISE SOAPClient, released pre Smooks
v1.1 (when the extended namespace configs were introduced). So, it
probably wouldn't have been tested against the newer features in the
newer versions of Smooks i.e. may not be forward compatible.