Hi All,

Axis2-WSDL2java doesn't seem to properly handle WSDLs with multiple
service/port definitions referring to the 'SAME' binding.

Axis-1.2 generates multiple services in the above case with the same
service impl. And a single server-config.wsdd carries all the service
definitions.

To fix the above issue may be we can generate a service.xml with
multiple service definitions or can we have multiple 'service.xml's or
does this point us to the service groups that was discussed sometime
back?

More generally how should multiple 'port' definitions be handled when
they are referring to different 'bindings'?

I have attached a sample wsdl.

Thanks,
-- 
Ruchith
<definitions xmlns:s1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
             xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
             xmlns:s="http://www.w3.org/2001/XMLSchema";
             xmlns:tns="http://xmlsoap.org/Ping";
             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
             xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/";
             xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
             targetNamespace="http://xmlsoap.org/Ping";
             xmlns="http://schemas.xmlsoap.org/wsdl/";>
    <types>
        <s:schema elementFormDefault="qualified" targetNamespace="http://xmlsoap.org/Ping";>
            <s:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>
            <s:element name="Ping" nillable="true" type="tns:ping"/>
            <s:complexType name="ping">
                <s:sequence>
                    <s:element minOccurs="0" maxOccurs="1" name="ticket" type="tns:ticketType"/>
                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>
                </s:sequence>
            </s:complexType>
            <s:complexType name="ticketType">
                <s:simpleContent>
                    <s:extension base="s:string">
                        <s:attribute ref="s1:Id"/>
                    </s:extension>
                </s:simpleContent>
            </s:complexType>
            <s:element name="PingResponse" nillable="true" type="tns:pingResponse"/>
            <s:complexType name="pingResponse">
                <s:sequence>
                    <s:element minOccurs="1" maxOccurs="1" name="text" nillable="true" type="s:string"/>
                </s:sequence>
            </s:complexType>
        </s:schema>
        <s:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";>
            <s:attribute name="Id" type="s:string"/>
        </s:schema>
    </types>
    <message name="PingRequest">
        <part name="ping" element="tns:Ping"/>
    </message>
    <message name="PingResponse">
        <part name="pingResponse" element="tns:PingResponse"/>
    </message>
    <portType name="PingPort">
        <operation name="Ping">
            <input message="tns:PingRequest"/>
            <output message="tns:PingResponse"/>
        </operation>
    </portType>
    <binding name="PingBinding" type="tns:PingPort">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="Ping">
            <soap:operation soapAction="Ping" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="PingService">
        <port name="Ping1" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping1"/>
        </port>
        <port name="Ping2" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping2"/>
        </port>
        <port name="Ping2a" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping2a"/>
        </port>
        <port name="Ping3" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping3"/>
        </port>
        <port name="Ping4" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping4"/>
        </port>
        <port name="Ping5" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping5"/>
        </port>
        <port name="Ping6" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping6"/>
        </port>
        <port name="Ping7" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/Ping7"/>
        </port>
        <port name="STPing1" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/STPing1"/>
        </port>
        <port name="STPing3" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/STPing3"/>
        </port>
        <port name="STPing4" binding="tns:PingBinding">
            <soap:address location="http://localhost:9080/pingservice/STPing4"/>
        </port>
        
    </service>
</definitions>

Reply via email to