You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Cédric Chabanois <CC...@cognicase.fr> on 2001/12/13 11:43:46 UTC

Holder parameters

Hi,

I have a problem with holders.
I use 12/12/2001 axis version.

My jws file is this one :
"
import javax.xml.rpc.holders.*;

public class Essai {
 
  public void tryHolder(StringHolder theString)
  {
	  theString._value = "hello world";
  }
}
"

The ?wsdl generated is the following :
"
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://localhost:8080/axis/Essai.jws"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:impl="http://localhost:8080/axis/Essai.jws-impl"
xmlns:intf="http://localhost:8080/axis/Essai.jws"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:message name="tryHolderResponse">
    <wsdl:part name="inOut0" type="xsd:string"/>
  </wsdl:message>
  <wsdl:message name="tryHolderRequest">
    <wsdl:part name="inOut0" type="xsd:string"/>
  </wsdl:message>
  <wsdl:portType name="Essai">
    <wsdl:operation name="tryHolder">
      <wsdl:input message="intf:tryHolderRequest"/>
      <wsdl:output message="intf:tryHolderResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="Essai.jwsSoapBinding" type="intf:Essai">
    <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="tryHolder">
      <soap:operation soapAction="" style="rpc"/>
      <wsdl:input>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost:8080/axis/Essai.jws" use="encoded"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost:8080/axis/Essai.jws" use="encoded"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="Essai.jwsService">
    <wsdl:port binding="intf:Essai.jwsSoapBinding" name="Essai.jws">
      <soap:address location="http://localhost:8080/axis/Essai.jws"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
"
This seems to be correct.

I used C# to call tryHolder
"
EssaijwsService client = new EssaijwsService();
string myString = "nothing";
client.tryHolder(ref myString);
Console.WriteLine(myString);
"

But an exception occurs.
"
An unhandled exception of type 'System.Web.Services.Protocols.SoapException'
occurred in system.web.services.dll

Additional information: java.lang.IllegalArgumentException: argument type
mismatchOn object "Essai" method name "tryHolder" tried argument types:
java.lang.String
"


I used TCPMon to see why :

"
POST /axis/Essai.jws HTTP/1.1 
[...]
<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://tempuri.org/"
xmlns:types="http://tempuri.org/encodedTypes"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
     <q1:tryHolder xmlns:q1="http://localhost:8080/axis/Essai.jws">
       <inOut0 xsi:type="xsd:string">nothing</inOut0>
     </q1:tryHolder>
   </soap:Body>
</soap:Envelope>
"
This seems correct too.

But I get :
"
<soap:Envelope
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://tempuri.org/"
xmlns:types="http://tempuri.org/encodedTypes"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <soap:Fault>
   <soap:faultcode
xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</soap:fault
code>
   <soap:faultstring>java.lang.IllegalArgumentException: argument type
mismatchOn object &quot;Essai&quot; method name &quot;tryHolder&quot; tried
argument types: java.lang.String
</soap:faultstring>
   <soap:detail>
    <ns2:stackTrace
xmlns:ns2="http://xml.apache.org/axis/">java.lang.IllegalArgumentException:
argument type mismatchOn object &quot;Essai&quot; method name
&quot;tryHolder&quot; tried argument types: java.lang.String
&#xd;
	at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:2
56)&#xd;
	at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:242)&#x
d;
	at
org.apache.axis.handlers.JWSProcessor.invokeImpl(JWSProcessor.java:246)&#xd;
	at
org.apache.axis.handlers.JWSProcessor.invoke(JWSProcessor.java:107)&#xd;
	at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:253)&#xd;
	at
org.apache.axis.server.AxisServer.invoke(AxisServer.java:288)&#xd;
	at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:485)&#xd;
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)&#xd;
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)&#xd;
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)&#xd;
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)&#
xd;
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)&#xd;
	at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)&#xd;
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)&#xd;
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)&#x
d;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011)&#xd;
	at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
)&#xd;
	at java.lang.Thread.run(Thread.java:484)&#xd;
</ns2:stackTrace>
   </soap:detail>
  </soap:Fault>
 </soap:Body>
</soap:Envelope>
"

Thanks,

Cédric Chabanois