Hi Anne,

Each operation must have a unique signature, i.e., you must specify a
different qname for your two input parameters. (They can be the same
type, but they must have different names.)

I'm not sure I understand, sorry. Each operation in my WSDL has a different name, but some of them take the same argument (I didn't see a reason to define a bunch of different data types to encapsulate the same information). According to my WSDD file, the operations do have unique signatures/qnames:

>> <operation name="articleUpdateNotification"
>>      qname="ArticleUpdateNotification" mep="oneway" >

>> <operation name="requestFileDetails" qname="RequestFileDetails" ...

Likewise, the server implementation has fully unique methods implementing each of these operations.

I think the confusion is something to do with actually sending the request, rather than the server end. So for some reason the client code is not making it clear what the operation being requested is. Unfortunately, I don't understand the way that Axis produces the request in the first place, and none of the tools that should help me monitor it seem to work at my end (e.g. SOAPMonitor).

Cheers,

Richard

Hi Folks,

I am starting to really get to grips with my web services now, with much
thanks to Axis.  This morning, though, I have encountered a problem
which I can't work out whether is my fault (likely) or a potential problem.

I have two requests defined (in the scope of this problem):

public void requestFileDetails(String guid)
   throws ServiceException, RemoteException
{
   // make the request
   SpiralTestSoapService service = getService();
   SingleGUID sguid = new SingleGUID(guid);
   RequestFileDetailsResponse response =
     service.requestFileDetails(sguid);
}

public void articleUpdateNotification(String guid)
   throws ServiceException, RemoteException
{
   // make the request
   SpiralTestSoapService service = getService();
   SingleGUID sguid = new SingleGUID(guid);
   service.articleUpdateNotification(sguid);
}

these in turn call the relevant operations on the port type (The
xxx_BindingImpl class).

When either of the above methods are called in the client, the server
/always/ processes the request to "requestFileDetails".  I discovered
that I could fix this so that it always processed the request to
"articleUpdateNotification" by reversing the order that these two
operations are specified in the server-config.wsdd:

<operation name="articleUpdateNotification"
     qname="ArticleUpdateNotification" mep="oneway" >
   <parameter qname="pns:SingleGUID"
       xmlns:pns="http://[...]/SpiralWebService/"; type="tns:>SingleGUID"
       xmlns:tns="http://[...]/SpiralWebService/"/>
</operation>
<operation name="requestFileDetails" qname="RequestFileDetails"
     returnQName="retNS:RequestFileDetailsResponse"
     xmlns:retNS="http://[...]/SpiralWebService/";
     returnType="rtns:>RequestFileDetailsResponse"
     xmlns:rtns="http://[...]/SpiralWebService/"; >
   <parameter qname="pns:SingleGUID"
       xmlns:pns="http://[...]/SpiralWebService/";
       type="tns:>SingleGUID"
       xmlns:tns="http://[...]/SpiralWebService/"/>
</operation>

I upped log4j to DEBUG, and observed that the body of the request seems
only to contain the data type, not the operation name:

2006-08-11 12:39:00,795 DEBUG org.apache.axis.providers.java.RPCProvider
@ body is <SingleGUID xmlns="http://[...]/SpiralWebService/";><guid
xmlns="">1234567890</guid></SingleGUID>

The two above methods both take the SingleGUID data type as an argument,
so I defined this type in the WSDL and re-used it all over the place.
My current guess (and it is only a guess) is that Axis is just looking
for the first operation that takes this data type, and executing it, no
matter which operation it was intended for.

Can anyone see what I might have done wrong?  Am I misappropriating the
data types and the way that axis uses them, or have I missed something
in the way to call the web service, or is there something else?

Any help much appreciated,

Cheers

--
Richard
-------
Richard Jones
Web and Database Technology Specialist
Imperial College London
t: +44 (0)20 759 41815
e: [EMAIL PROTECTED]


--
Richard
-------
Richard Jones
Web and Database Technology Specialist
Imperial College London
t: +44 (0)20 759 41815
e: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to