axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "seppe@pandora.be" <se...@telenet.be>
Subject Axis sends weird SOAP requests
Date Thu, 17 Feb 2005 13:18:51 GMT
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



Mime
View raw message