It's true that, based on the WSDL definition for the getAll Products operation, Axis should send an empty body: <soapenv:Body/>. I would call this a bug.
But, it's also true that this WSDL is not WS-I compliant becuase you have multiple operations with the same wire signature (an empty body). Systinet is able to distinguish the requests based on the SOAPAction header, but WS-I BP requires that each operation must have a unique wire signature. Not all SOAP engines are as forgiving as Systinet. Anne On Thu, 17 Feb 2005 13:18:51 +0000, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > 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 > >