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


Reply via email to