Search code examples
javaglassfishapache-axis

Own Service always leads to NullPointerException in Axis2


I am trying to create my own service from an Amazon WSDl. The step from wsdl to wsdl 2.0 to Java works fine. Even ant compiles the service without errors. After uploading the service to Axis2 all the operations are shown. But if I try to call one operation I always get the NullpointerException.

Here are the details:

Glassfish 3.1.2 with axis2 1.6.2 on Windows 7 64-Bit, Java 1.7.0_25 JDK

HTTP-Call

POST /axis2/services/SimpleQueueService/CreateQueue HTTP/1.1
Host: localhost:8080
X-Amz-Date: 20130715T220823Z
User-Agent: aws-sdk-java/1.4.7 Windows_7/6.1 Java_HotSpot(TM)_64-Bit_Server_VM/23.25-b01
Content-Type: application/x-www-form-urlencoded
Content-Length: 17
Proxy-Connection: Keep-Alive

QueueName=MyQueue

The answer is always Internal Server Error with the following error in the glassfish "server.log":

[#|2013-07-17T16:38:28.060+0200|WARNING|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=201;_ThreadName=Thread-2;|StandardWrapperValve[AxisServlet]: PWC1406: Servlet.service() for servlet AxisServlet threw exception
java.lang.NullPointerException
    at org.apache.axis2.builder.BuilderUtil.buildsoapMessage(BuilderUtil.java:142)
    at org.apache.axis2.builder.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:118)
    at org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:179)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:145)
    at org.apache.axis2.transport.http.util.RESTUtil.processXMLRequest(RESTUtil.java:65)
    at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processXMLRequest(AxisServlet.java:826)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:227)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:724)
|#]

I tried to compile the last axis2-snapshot, but glassfish did not accept it. (exceptions...)

Can anyone give me some hints?


Solution

  • It appears that all the remote calls on the SQS WSDL take text/xml as input, not application/x-www-url-encoded. Assuming I'm looking at the same WSDL as you.

    http://sqs.us-east-1.amazonaws.com/doc/2012-11-05/QueueService.wsdl