HI all,

My question is about the way axis makes a service URL. Normally, you see a 
URL like the following :

http://host:unix-port/axis/services/PORT-NAME

where, PORT-NAME is a port defined in the service element.

Is it possible that the service URL be like this :

http://host:unix-port/axis/services/SERVICE-NAME/PORT-NAME

where SERVICE-NAME is the name of the service ? (attribute name of service 
element)

This would look more logical, especially when a service contains multiple 
ports. I tried specifying such URLs in the WSDL but axis overrides it. 
(please see the attached WSDL.)

WHen I deploy my service (service Primality, two ports, a) Prime - to 
check whether a number is prime, b) CoPrime - to check whether two numbers 
are coprime), and when I see the list of deployed services, I expected a 
listing like this

* Primality
   -    Prime
            -   isPrime
   -    CoPrime
            -   areCoPrime

But, what is displayed is as if there are two services, Prime and CoPrime.

* Prime
   - isPrime
* CoPrimes
   - areCoPrime

It seems as if axis elevates a PORT to a service. What's the 
design decision behind this ? (And if you tell me that AXIS expects 
developers to define one port per service, I would be pretty p***ed off)

thanks,
Deepak S Patwardhan.

--------------------------- WSDL -----------------------------
<definitions name="PrimeDef"
        targetNamespace="http://gridsolv.com/deepak/ws1/";
        xmlns:tns="http://gridsolv.com/deepak/ws1/";
        xmlns:xsd="http://www.w3.org/1999/XMLSchema";
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
        xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/";
        xmlns="http://schemas.xmlsoap.org/wsdl/";>

    <!--================================================-->
    <message name="aNumber">
        <part name="num" type="xsd:int"/>
    </message>

    <message name="twoNumbers">
        <part name="num1" type="xsd:int"/>
        <part name="num2" type="xsd:int"/>
    </message>

    <message name="aBool">
        <part name="boo" type="xsd:boolean"/>
    </message>

    <!--================================================-->
    <portType name="Prime">
        <!-- Tell if a given number is prime -->
        <operation name="isPrime">
            <input message="tns:aNumber"/>
            <output message="tns:aBool"/>
        </operation>
    </portType>

    <portType name="CoPrime">
        <!-- Tell if given numbers are co-prime -->
        <operation name="areCoprime">
            <input message="tns:twoNumbers"/>
            <output message="tns:aBool"/>
        </operation>
    </portType>

    <!--================================================-->
    <binding name="PrimeSOAPBinding" type="tns:Prime">
        <soap:binding style="rpc"
                transport="http://schemas.xmlsoap.org/soap/http"/>

        <operation name="isPrime">
            <soap:operation soapAction=""/>
            <input>
                <soap:body use="encoded" encodingStyle="soap-enc"/>
            </input>
            <output>
                <soap:body use="encoded" encodingStyle="soap-enc"/>
            </output>
        </operation>
    </binding>

    <binding name="CoPrimeSOAPBinding" type="tns:CoPrime">
        <soap:binding style="rpc"
                transport="http://schemas.xmlsoap.org/soap/http"/>

        <operation name="areCoprime">
            <soap:operation soapAction=""/>
            <input>
                <soap:body use="encoded" encodingStyle="soap-enc"/>
            </input>
            <output>
                <soap:body use="encoded" encodingStyle="soap-enc"/>
            </output>
        </operation>
    </binding>

    <!--================================================-->
    <service name="Primality">
        <port name="Prime" binding="tns:PrimeSOAPBinding">
            <soap:address 
location="http://localhost:8080/axis/services/Primality/Prime"/>
        </port>
        <port name="CoPrime" binding="tns:CoPrimeSOAPBinding">
            <soap:address 
location="http://localhost:8080/axis/services/Primality/CoPrime"/>
        </port>
    </service>

</definitions>

Reply via email to