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>