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 "Essai" method name "tryHolder" 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 "Essai" method name
"tryHolder" tried argument types: java.lang.String

at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:2
56)
at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:242)&#x
d;
at
org.apache.axis.handlers.JWSProcessor.invokeImpl(JWSProcessor.java:246)
at
org.apache.axis.handlers.JWSProcessor.invoke(JWSProcessor.java:107)
at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:253)
at
org.apache.axis.server.AxisServer.invoke(AxisServer.java:288)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:485)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)&#
xd;
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)&#x
d;
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&
#xd;
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011)
at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
)
at java.lang.Thread.run(Thread.java:484)
</ns2:stackTrace>
</soap:detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
"
Thanks,
Cédric Chabanois