Hi all, I'm investigating how good/bad Axis and Systinet work together. And I think I found a fault at Axis' side. When I send a request with no parameters, Axis generates the following SOAP message:
POST /WholeSalerService HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.2RC2 Host: localhost:5050 Cache-Control: no-cache Pragma: no-cache SOAPAction: "http://www.apogado.com/ws/WholeSalerService/getAllProducts" Content-Length: 249 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getAllProducts xmlns=""/></soapenv:Body></soapenv:Envelope> When I send this request to a Systinet Service, I get the following error message from Systinet: HTTP/1.0 500 Internal Server Error Date: Thu, 17 Feb 2005 20:16:22 GMT Server: Systinet Server for Java/5.5 (Java/1.5.0_01; Windows XP/5.1; build SSJ-5.5-20041128-1204) SOAPAction: "" Content-type: text/xml;charset=UTF-8 Connection: close <?xml version="1.0" encoding="UTF-8"?> <e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/"><e:Body><e:Fault><faultcode>e:Server</faultcode><faultstring>Unknown element getAllProducts</faultstring><detail><ijm:idoox-java-mapping.org.idoox.xmlrpc.MessageProcessingException xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ijm="urn:idoox-java-mapping"><ijm:stack-trace>org.idoox.xmlrpc.MessageProcessingException: Unknown element getAllProducts at org.idoox.wasp.wsdl.SOAPMethodInfo$RequiredElements$Invocation.notNillElement(SOAPMethodInfo.java:1052) at com.systinet.wasp.server.adaptor.JavaInvoker.fillCallParamsXml(JavaInvoker.java:1144) at com.systinet.wasp.server.adaptor.JavaInvoker.beginInvoke(JavaInvoker.java:478) at com.idoox.wasp.server.adaptor.JavaAdaptorImpl.beginInvoke(JavaAdaptorImpl.java:63) at com.idoox.wasp.server.AdaptorTemplate.javaInvocation(AdaptorTemplate.java:510) at com.idoox.wasp.server.AdaptorTemplate.doDispatch(AdaptorTemplate.java:395) at com.idoox.wasp.server.AdaptorTemplate.dispatch(AdaptorTemplate.java:328) at com.idoox.wasp.server.ServiceConnector.dispatch(ServiceConnector.java:378) at com.systinet.wasp.ServiceManagerImpl.dispatchRequest(ServiceManagerImpl.java:625) at com.systinet.wasp.ServiceManagerImpl.dispatch(ServiceManagerImpl.java:461) at com.systinet.wasp.ServiceManagerImpl$DispatcherConnHandler.handlePost(ServiceManagerImpl.java:2525) at com.idoox.transport.http.server.Jetty$WaspHttpHandler.handle(Jetty.java:97) at com.mortbay.HTTP.HandlerContext.handle(HandlerContext.java:1087) at com.mortbay.HTTP.HttpServer.service(HttpServer.java:675) at com.mortbay.HTTP.HttpConnection.service(HttpConnection.java:457) at com.mortbay.HTTP.HttpConnection.handle(HttpConnection.java:317) at com.mortbay.HTTP.SocketListener.handleConnection(SocketListener.java:99) at com.mortbay.Util.ThreadedServer.handle(ThreadedServer.java:254) at com.mortbay.Util.ThreadPool$PoolThreadRunnable.run(ThreadPool.java:607) at java.lang.Thread.run(Thread.java:595) </ijm:stack-trace></ijm:idoox-java-mapping.org.idoox.xmlrpc.MessageProcessingException></detail></e:Fault></e:Body></e:Envelope> This is the SOAP message that SHOULD be sended by Axis: POST /WholeSalerService HTTP/1.1 Content-Length: 144 Content-Type: text/xml; charset="utf-8" SOAPAction: http://www.apogado.com/ws/WholeSalerService/getAllProducts User-Agent: Jakarta Commons-HttpClient/2.0.1 Host: localhost:5050 Expect: 100-continue <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body/> </SOAP-ENV:Envelope> When I send the SOAP message manually (with some SOAP debug tool), then I get the right response, and not the error I get when I send the generated SOAP message with Axis. Here is my WSDL file, I think it's correct .. if not so, please let me know: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="WholeSalerService" targetNamespace="http://www.apogado.com/ws/WholeSalerService.wsdl" xmlns:tns="http://www.apogado.com/ws/WholeSalerService.wsdl" xmlns:xsd1="http://www.apogado.com/ws/WholeSalerService.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema targetNamespace="http://www.apogado.com/ws/WholeSalerService.xsd" elementFormDefault="qualified"> <xsd:element name="Address" > <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="type" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="street" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="number" type="xsd:int"/> <xsd:element maxOccurs="1" minOccurs="1" name="zip" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="city" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Customer" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="name" type="xsd:string"/> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="xsd1:Address"/> <xsd:element maxOccurs="1" minOccurs="1" name="telephone" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="vtaNr" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="password" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Customers" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="xsd1:Customer"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Category" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="name" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="description" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Categories" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="xsd1:Category"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Product" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="name" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="1" name="price" type="xsd:double"/> <xsd:element maxOccurs="1" minOccurs="1" name="stock" type="xsd:int"/> <xsd:element maxOccurs="1" minOccurs="1" ref="xsd1:Category" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Products" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="xsd1:Product"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="OrderLine"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" ref="xsd1:Product" /> <xsd:element maxOccurs="1" minOccurs="1" name="amount" type="xsd:int" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Order" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="xsd1:OrderLine"/> <xsd:element maxOccurs="1" minOccurs="1" ref="xsd1:Customer" /> <xsd:element maxOccurs="1" minOccurs="1" name="date" type="xsd:date" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Orders" > <xsd:complexType > <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="xsd1:Order"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="created" type="xsd:boolean" /> </xsd:schema> </wsdl:types> <wsdl:message name="createCustomerRequest"> <wsdl:part name="CustomerPart" element="xsd1:Customer"/> </wsdl:message> <wsdl:message name="createCustomerResponse"> <wsdl:part name="created" element="xsd1:created"/> </wsdl:message> <wsdl:message name="getAllCustomersRequest"/> <wsdl:message name="getAllCustomersResponse"> <wsdl:part name="customerSeq" element="xsd1:Customers"/> </wsdl:message> <wsdl:message name="createProductRequest"> <wsdl:part name="ProductPart" element="xsd1:Product"/> </wsdl:message> <wsdl:message name="createProductResponse"> <wsdl:part name="created" element="xsd1:created"/> </wsdl:message> <wsdl:message name="getAllProductsRequest" /> <wsdl:message name="getAllProductsResponse"> <wsdl:part name="productSeq" element="xsd1:Products"/> </wsdl:message> <wsdl:message name="createCategoryRequest"> <wsdl:part name="CategoryPart" element="xsd1:Category"/> </wsdl:message> <wsdl:message name="createCategoryResponse"> <wsdl:part name="created" element="xsd1:created"/> </wsdl:message> <wsdl:message name="getAllCategoriesRequest" /> <wsdl:message name="getAllCategoriesResponse"> <wsdl:part name="categorieSeq" element="xsd1:Categories"/> </wsdl:message> <wsdl:message name="createOrderRequest"> <wsdl:part name="OrderPart" element="xsd1:Order"/> </wsdl:message> <wsdl:message name="createOrderResponse"> <wsdl:part name="created" element="xsd1:created"/> </wsdl:message> <wsdl:message name="getAllOrdersRequest" /> <wsdl:message name="getAllOrdersResponse"> <wsdl:part name="orderSeq" element="xsd1:Orders"/> </wsdl:message> <wsdl:portType name="WholeSalerPort"> <wsdl:operation name="createCustomer"> <wsdl:input message="tns:createCustomerRequest"/> <wsdl:output message="tns:createCustomerResponse"/> </wsdl:operation> <wsdl:operation name="getAllCustomers"> <wsdl:input message="tns:getAllCustomersRequest"/> <wsdl:output message="tns:getAllCustomersResponse"/> </wsdl:operation> <wsdl:operation name="createProduct"> <wsdl:input message="tns:createProductRequest"/> <wsdl:output message="tns:createProductResponse"/> </wsdl:operation> <wsdl:operation name="getAllProducts"> <wsdl:input message="tns:getAllProductsRequest"/> <wsdl:output message="tns:getAllProductsResponse"/> </wsdl:operation> <wsdl:operation name="createCategory"> <wsdl:input message="tns:createCategoryRequest"/> <wsdl:output message="tns:createCategoryResponse"/> </wsdl:operation> <wsdl:operation name="getAllCategories"> <wsdl:input message="tns:getAllCategoriesRequest"/> <wsdl:output message="tns:getAllCategoriesResponse"/> </wsdl:operation> <wsdl:operation name="createOrder"> <wsdl:input message="tns:createOrderRequest"/> <wsdl:output message="tns:createOrderResponse"/> </wsdl:operation> <wsdl:operation name="getAllOrders"> <wsdl:input message="tns:getAllOrdersRequest"/> <wsdl:output message="tns:getAllOrdersResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="WholeSalerBinding" type="tns:WholeSalerPort"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="createCustomer"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/createCustomer"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getAllCustomers"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/getAllCustomers"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="createProduct"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/createProduct"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getAllProducts"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/getAllProducts"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="createCategory"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/createCategory"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getAllCategories"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/getAllCategories"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="createOrder"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/createOrder"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="getAllOrders"> <soap:operation soapAction="http://www.apogado.com/ws/WholeSalerService/getAllOrders"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="WholeSalerService"> <wsdl:port binding="tns:WholeSalerBinding" name="WholeSalerService"> <soap:address location="http://localhost:6060/WholeSalerService"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Can anyone confirm that this is an Axis 'bug'? If not so, what am I doing wrong? Can anyone help me? Thanks in advance for your answer(s) Greetings Seppe Van Sande