Cedric,

Thanks, actually in identifying the difference between the parameter names
that I had you made me take a closer look at the WSDD which as it turns out
had a typo (nane instead of name). So with those changes everthing worked
ok. Thanks again.

I have however one quick question which you may be able to answer for me,
according to the API getOuputParameters() returns a map with the parameter
names as strings. However the map I was returned had the parameter names as
QName types, is this correct or is it a bug in my version v1.0 of axis ?

Thanks,

Brian

-----Original Message-----
From: C�dric Chabanois [mailto:[EMAIL PROTECTED]]
Sent: 28 November 2002 15:38
To: '[EMAIL PROTECTED]'
Subject: RE: INOUT / OUT parameters



> 
> Cedric,
> 
> At the moment I have a WSDD which defines;
> 
>       <operation name="myTestCall">
>         <parameter nane="myStr" type="tns:string"
>         xmlns:tns="http://www.w3.org/2001/XMLSchema"; mode="INOUT"/>
>       </operation>
> 
> In my Implementation code I have a method with signature;
> 
>     public String myTestCall(StringHolder in0) throws
> java.rmi.RemoteException;
> 
> This seems to deploy ok (and the WSDL looks ok i.e. it has a 
> response type
> which contains an extra String for the INOUT parameter).
> 
>   <wsdl:message name="myTestCallResponse">
>     <wsdl:part name="myTestCallReturn" type="xsd:string"/>
>     <wsdl:part type="xsd:string"/>
>   </wsdl:message>
> 
> My problem is, since I am not using generated stubs and 
> skeletons how should
> my client call the service ?
> 
> This is what I am using;
> 
>            cll.addParameter("testParam",
>                              org.apache.axis.Constants.XSD_STRING,
>                              javax.xml.rpc.ParameterMode.INOUT);
>            cll.setReturnType(org.apache.axis.Constants.XSD_STRING);
>            String strXmlOid = "Some arbitrary string";
>            javax.xml.rpc.holders.StringHolder xmlOid = new
> javax.xml.rpc.holders.StringHolder(strXmlOid);
>            String ret = (String) cll.invoke( new Object[] {xmlOid} );
> 

Don't put the holder as the parameter but the value itself :
String ret = (String) cll.invoke( new Object[] {strXmlOid} );
then get the output parameters :
java.util.Map output = cll.getOutputParams();
xmlOid.value = (java.lang.String) output.get("testParam");

But why in your sample, your parameter is named "testParam" but in your wsdd
myStr ?

C�dric Chabanois


**************************************************************************
The information contained in this e-mail is confidential,
may be privileged and is intended only for the use of the
recipient named above. If you are not the intended
recipient or a representative of the intended recipient,
you have received this e-mail in error and must not copy,
use or disclose the contents of this email to anybody
else. If you have received this e-mail in error, please
notify the sender immediately by return e-mail and
permanently delete the copy you received. This email has
been swept for computer viruses. However, you should
carry out your own virus checks.


Registered in Ireland, No. 205721. http://www.FINEOS.com
**************************************************************************

Reply via email to