Access Keys:
Skip to content (Access Key - 0)
community header community tab mule tab ibeans tab muleforge tab

I've received a "java.lang.IncompatibleClassChangeError"

Mule bundles an old version of WSDL4J from Axis 1.x and CXF requires WSDL4J 1.6.1. You must remove the axis-wsdl4j.jar from the classpath and have the newer wsdl4j-1.6.1.jar on your classpath instead. See the classpath guide for more information.

I've received a "java.lang.IllegalArgumentException: wrong number of arguments" when using the CXF outbound endpoint

The CXF outbound endpoint uses the CXF generated to client to send messages. Because of this, your message payload must match the signature of the operation being invoked. This error results when the payload does not match the signature.

Here's an example. If you have an operation on the client like this:

public void sendData(String data1, String data2, String data3);

Your message payload must be like this:

Object payload = new Object[] { "data1", "data2", "data3" };

I've received "javax.xml.soap.SOAPException: Unable to create SOAP Factory: Provider org.apache.axis.soap.SOAPFactoryImpl not found"

Mule bundles an old version of SAAJ and CXF/JAX-WS require the newer SAAJ implementation by Sun. You must remove the geronimo-saaj.jar from the classpath and have the saaj-api/saaj-impl jars bundled with CXF on the classpath to fix this error. See the classpath guide for more information.

My WSDL does not have the correct service address (i.e. its localhost instead of foo.com)

First, ensure that you're using an M3-SNAPSHOT or later which this bug was fixed in.

Second, if you are doing WSDL first development ensure that your @WebService annotation on your service implementation has the correct serviceName, targetNamespace, and portName attributes. If these are not correct, CXF cannot navigate your WSDL, find the address, and replace it with the address currently being used.

Your WebService annotation should look roughly like:

@WebService(serviceName = "YourServiceName",
            portName = "YourPortName",
            targetNamespace = "http://your-namespace",
            endpointInterface = "your.endpoint.Interface",
            wsdlLocation = "your.wsdl")
Adaptavist Theme Builder (3.3.3-conf210) Powered by Atlassian Confluence 2.10, the Enterprise Wiki.
Free theme builder license