You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Michael Fecina <fe...@psu.edu> on 2002/11/18 07:52:27 UTC

Axis fault - please help ...

All,

I created a web service, jarred it and deployed it through use of deploy.wsdd.
Everything worked fine and it shows up under Axis as a deployed web service (through
the web, and the WSDL is visible).

The problem comes in when trying to run a client to the service.
The client compiles and essentially works, however, depending on which method I call within the web service, I get
a bunch of errors.  For example, my web service has the following methods available:

 public ProductTree getProductTree()
 public Product searchProductList(String gName, String bName)
 public void refreshProducts()
 public void populateTree()

Note that only the two methods which return objects of my defined classes (Product and ProductTree) give me errors when called from the client.

The exact errors are:

1.  This error is created when I try to call the searchProductList() function:

[root@mdf161 gws2]# java groceryWebService1.GroceryWebServiceClient
AxisFault
 faultCode: {http://xml.apache.org/axis/}Server.userException
 faultString: java.lang.reflect.InvocationTargetException
 faultActor: null
 faultDetail:
        stackTrace: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:372)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:292)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:276)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:437)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:316)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:701)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:335)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)        at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
        at java.lang.Thread.run(Thread.java:536)
Caused by: java.lang.StackOverflowError
        at groceryWebService1.ws.Gws1SoapBindingImpl.searchProductList(Gws1SoapBindingImpl.java:24)
   <****NOTE:  THE ABOVE LINE IS REPEATED 1023 times****>


java.lang.reflect.InvocationTargetException
        at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:135)
        at org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:942)
        at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1528)
        at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
        at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
        at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
        at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
        at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
        at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
        at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)        at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
        at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:232)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:546)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2132)
        at org.apache.axis.client.Call.invoke(Call.java:2102)
        at org.apache.axis.client.Call.invoke(Call.java:1851)
        at org.apache.axis.client.Call.invoke(Call.java:1777)
        at org.apache.axis.client.Call.invoke(Call.java:1315)
        at groceryWebService1.ws.Gws1SoapBindingStub.searchProductList(Gws1SoapBindingStub.java:160)
        at groceryWebService1.GroceryWebServiceClient.main(GroceryWebServiceClient.java:19)

2.  The second error is exactly the same thing with a few line changes and the different method call (getProductTree()).

The only thing I could think that may be going wrong is the fact that Axis does not know how to serialize/deserialize my classes, Product and ProductTree.
The reason for this is because when I call a function like 'refreshProducts()' that does not need to return anything, I do not get back any faults/exceptions.

I read on the web that in deploy.wsdd (generated by Axis) is where you may have to specify extra serialization stuff.  My file seems to contain type mappings for my classes, well actually
it only contains type mappings for those classes used.  For example, it has the following lines:
    <typeMapping
        xmlns:ns="urn:gws1"
        qname="ns:ProductTree"
        type="java:groceryWebService1.ws.ProductTree"
        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      />
      <typeMapping
        xmlns:ns="urn:gws1"
        qname="ns:Node"
        type="java:groceryWebService1.ws.Node"
        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      />
      <typeMapping
        xmlns:ns="urn:gws1"
        qname="ns:Product"
        type="java:groceryWebService1.ws.Product"
        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      />
But my service also depends on classes such as Category, which is also of type Node, but I never return it anywhere so I guess that's why it doesn't need to know how to serialize/deserialize it, correct?

Finally, what the heck is going on?  How can I get this to work?  I feel so close.  I've searched for this fault /exception on the web with no avail ..

Any help is greatly appreciated.

Thanks,
M. Fecina