Hi,
I'm trying for a while now to get axis2 to accept incoming
application/json requests (JSONMessageFormatter/ JSONOMBuilder). I
always get a "java.lang.IllegalArgumentException: The MessageContext
does not have an associated SOAPFault" on the client side and a huge
json formatted soap error on the server side: "ERROR
http-9080-Processor24 org.apache.axis2.engine.AxisEngine - The endpoint
reference (EPR) for the Operation not found is
http://localhost:9082/sm62/services/echo/echo and the WSA Action = null".
The exact same service works fine when sending application/xml requests
though.
I've configured both the client axis.xml and the server axis.xml
according to the axis2.xml file that comes with
JSONIntegrationTest.java. The only difference is that I've disabled the
transportReceiver since axis runs within tomcat.
I'm using axis2 1.4.1 embedded in another web-app hosted by tomcat 5.5.
client code:
private static OMElement payload() throws Exception {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace ns = fac.createOMNamespace("", "");
OMElement request = fac.createOMElement("request", ns);
request.addAttribute("attr", "some data", ns);
return request;
}
private static void runAxisClient() {
try {
File configFile = new File("resources/axis2.xml");
ConfigurationContext cfgCtx =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(null,
configFile.getAbsolutePath());
ServiceClient client = new ServiceClient(cfgCtx, null);
Options options = new Options();
options.setTo(new
EndpointReference("http://localhost:9080/myapp/services/echo/echo"));
options.setProperty(Constants.Configuration.MESSAGE_TYPE,
"application/json");
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setProperty(Constants.Configuration.HTTP_METHOD,
Constants.Configuration.HTTP_METHOD_POST);
client.setOptions(options);
OMElement response = client.sendReceive(payload());
System.out.println("response: " + response);
}
catch (Exception e) {
e.printStackTrace();
}
}
Any pointers are much appreciated. Especially a hint why axis is telling
me that the endpoint is wrong although it's working ok for xml messages?
Thanks in advance,
Alex