I have continued on my quest to try to get multiple services into one
WSDL.  I think I have the WSDL correct, there are simply multiple
service sections (see My WSDL at the bottom of the email).

I am running into a number of issues:

1: The WSDL2C only creates an invoke to handle one of the two
services, not both.
2: The WSDL2C does not generate the services.xml correctly, it does
not put both the service elements in the serviceGroup element.  The
generated file is actually not valid!
3: I cannot get the DLL to load.  Since I have have two services in
it, the DLL is called Pasadena.dll and the services.xml is below.

Is it possible to have multiple services in one DLL?  I am running
with a nightly build of Axis2/C that is about a week old now.

Sam
---------------------------------- My services.xml
----------------------------------

<serviceGroup>
        <service name="NodeManager" >
                <parameter name="ServiceClass">Pasadena</parameter>
                <description>NodeManager Service
            </description>
                <operation name="getNode">
                        <parameter 
name="wsamapping">urn:mmpp:NodeManager/getNode</parameter>
                </operation>
        </service>
        <service name="CartService">
                <parameter name="ServiceClass">Pasadena</parameter>
                <description>CartService Service
            </description>
                <operation name="getCarts">
                        <parameter 
name="wsamapping">urn:mmpp:CartService/getCarts</parameter>
                </operation>
        </service>
</serviceGroup>

---------------------------------- My WSDL ----------------------------------

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:tns="urn:mmpp:pasadena"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/";
name="NodeManager" targetNamespace="urn:mmpp:pasadena">
        <wsdl:types>
                <xsd:schema targetNamespace="urn:mmpp:pasadena">
                        <xsd:element name="getNode">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="nodeId" 
type="xsd:string"/>
                                                <xsd:element name="userId" 
type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="getNodeResponse">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="currentNode" 
type="tns:NodeType"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                        <xsd:complexType name="NodeType">
                                <xsd:sequence>
                                        <xsd:element name="objectId" 
type="xsd:string"/>
                                        <xsd:element name="name" 
type="xsd:string"/>
                                        <xsd:element name="parentNode" 
type="tns:NodeType" nillable="true"/>
                                        <xsd:element 
name="areChildrenGalleries" type="xsd:boolean"
nillable="true"/>
                                        <xsd:element name="children" 
type="tns:NodeType" minOccurs="0"
maxOccurs="unbounded"/>
                                </xsd:sequence>
                        </xsd:complexType>
                        <xsd:element name="getCarts">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="nodeId" 
type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="getCartsResponse">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="carts" 
type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:schema>
        </wsdl:types>

<!-- The Cart Service -->
        
        <wsdl:message name="getCartsRequest">
                <wsdl:part name="parameters" element="tns:getCarts"/>
        </wsdl:message>
        
        <wsdl:message name="getCartsResponse">
                <wsdl:part name="parameters" element="tns:getCartsResponse"/>
        </wsdl:message>
        
        <wsdl:portType name="CartService">
                <wsdl:operation name="getCarts">
                        <wsdl:input message="tns:getCartsRequest"/>
                        <wsdl:output message="tns:getCartsResponse"/>
                </wsdl:operation>
        </wsdl:portType>

        <wsdl:binding name="CartServiceSOAP" type="tns:CartService">
                <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
                <wsdl:operation name="getCarts">
                        <soap:operation 
soapAction="urn:mmpp:CartService/getCarts"/>
                        <wsdl:input>
                                <soap:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body use="literal"/>
                        </wsdl:output>
                </wsdl:operation>
        </wsdl:binding>
                
        <wsdl:service name="CartService">
                <wsdl:port name="CartServiceSOAP" binding="tns:CartServiceSOAP">
                        <soap:address 
location="http://localhost/axis2/services/CartService"/>
                </wsdl:port>
        </wsdl:service>
        
        <!-- The NodeManager -->
        
        <wsdl:message name="getNodeRequest">
                <wsdl:part name="parameters" element="tns:getNode"/>
        </wsdl:message>
        <wsdl:message name="getNodeResponse">
                <wsdl:part name="parameters" element="tns:getNodeResponse"/>
        </wsdl:message>

        <wsdl:portType name="NodeManager">
                <wsdl:operation name="getNode">
                        <wsdl:input message="tns:getNodeRequest"/>
                        <wsdl:output message="tns:getNodeResponse"/>
                </wsdl:operation>
        </wsdl:portType>
        
        <wsdl:binding name="NodeManagerSOAP" type="tns:NodeManager">
                <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
                <wsdl:operation name="getNode">
                        <soap:operation 
soapAction="urn:mmpp:NodeManager/getNode"/>
                        <wsdl:input>
                                <soap:body use="literal"/>
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body use="literal"/>
                        </wsdl:output>
                </wsdl:operation>
        </wsdl:binding>

        <wsdl:service name="NodeManager">
                <wsdl:port name="NodeManagerSOAP" binding="tns:NodeManagerSOAP">
                        <soap:address 
location="http://localhost/axis2/services/NodeManager"/>
                </wsdl:port>
        </wsdl:service> 

<!--    <wsdl:service name="Pasadena">
                <wsdl:port name="CartServiceSOAP" binding="tns:CartServiceSOAP">
                        <soap:address 
location="http://localhost/axis2/services/CartService"/>
                </wsdl:port>
                <wsdl:port name="NodeManagerSOAP" binding="tns:NodeManagerSOAP">
                        <soap:address 
location="http://localhost/axis2/services/NodeManager"/>
                </wsdl:port>
        </wsdl:service>-->

</wsdl:definitions>

Reply via email to