The Wsdl generated by Tuscany is:
<wsdl:definitions name="CrmServiceService" targetNamespace="http://interfaces/">
<wsdl:types>
<xs:schema targetNamespace="http://jaxb.dev.java.net/array"
version="1.0">
<xs:complexType final="#all" name="stringArray">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0"
name="item" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema attributeFormDefault="qualified"
elementFormDefault="unqualified" targetNamespace="http://interfaces/">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0"
name="arg0" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="testResponse">
<xs:complexType/>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="test">
<wsdl:part name="test" element="test"> </wsdl:part>
</wsdl:message>
<wsdl:message name="testResponse">
<wsdl:part name="testResponse" element="testResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="CrmService">
<wsdl:operation name="test">
<wsdl:input message="test"> </wsdl:input>
<wsdl:output message="testResponse"> </wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CrmServiceBinding" type="CrmService">
<SOAP:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="test">
<SOAP:operation/>
<wsdl:input>
<SOAP:body use="literal"/>
</wsdl:input>
<wsdl:output>
<SOAP:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CrmService">
<wsdl:port name="CrmServiceSOAP11Port"
binding="CrmServiceBinding">
<SOAP:address
location="http://localhost:8087/CrmComponent/CrmService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I use eclipse to generate the web service client and a simple call to
the service cause the exception
public static void main(String[] args) {
CrmServiceProxy p=new CrmServiceProxy();
String [] stringArray=new String[2];
stringArray[0]="a";
stringArray[1]="b";
try {
p.test(stringArray);
} catch (RemoteException e) {
e.printStackTrace();
}
}
On mer., 2011-07-20 at 12:18 +0100, Mike Edwards wrote:
> Antonio,
>
> 2 questions:
>
> 1) what does the WSDL for the service look like?
> 2) how are you calling the service?
>
> Yours, Mike
>
> On 20/07/2011 11:08, Antonio De Berardis wrote:
> > Hi,
> > I have a service with a Object array as input like this:
> >
> > @Remotable
> > public interface CrmService {
> >
> > public void test(String[] arr);
> >
> > }
> >
> > the service is exposed as web service and the WSDL is generated by Tuscany.
> >
> > I can generate a Java client, but when I call the service the server says:
> >
> > GRAVE: java.lang.IllegalArgumentException: Argument is not an array
> > org.apache.tuscany.sca.databinding.TransformationException:
> > java.lang.IllegalArgumentException:
> > Argument is not an array
> > at
> > org.apache.tuscany.sca.core.databinding.transformers.Array2ArrayTransformer.transform(Array2ArrayTransformer.java:100)
> > at
> > org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)
> > at
> > org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)
> > at
> > org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:232)
> > at
> > org.apache.tuscany.sca.core.databinding.transformers.Input2InputTransformer.transform(Input2InputTransformer.java:46)
> > at
> > org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint$LazyPullTransformer.transform(DefaultTransformerExtensionPoint.java:209)
> > at
> > org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediate(MediatorImpl.java:116)
> > at
> > org.apache.tuscany.sca.databinding.impl.MediatorImpl.mediateInput(MediatorImpl.java:444)
> > at
> > org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.processRequest(DataTransformationInterceptor.java:69)
> > at
> > org.apache.tuscany.sca.core.invocation.InterceptorAsyncImpl.invoke(InterceptorAsyncImpl.java:57)
> > at
> > org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:125)
> > at
> > org.apache.tuscany.sca.core.invocation.RuntimeInvoker.invoke(RuntimeInvoker.java:108)
> > at
> > org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl.invoke(RuntimeEndpointImpl.java:298)
> > at
> > org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:207)
> > at
> > org.apache.tuscany.sca.binding.ws.jaxws.JAXWSBindingProvider.invoke(JAXWSBindingProvider.java:61)
> > at
> > com.sun.xml.internal.ws.api.server.InstanceResolver$1.invokeProvider(InstanceResolver.java:245)
> > at
> > com.sun.xml.internal.ws.server.InvokerTube$2.invokeProvider(InvokerTube.java:145)
> > at
> > com.sun.xml.internal.ws.server.provider.SyncProviderInvokerTube.processRequest(SyncProviderInvokerTube.java:67)
> > at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
> > at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
> > at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
> > at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
> > at
> > com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:232)
> > at
> > com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:460)
> > at
> > com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:233)
> > at
> > com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:95)
> > at
> > com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:80)
> > at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:83)
> > at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
> > at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:86)
> > at
> > sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:589)
> > at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:83)
> > at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:561)
> > at
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> > at
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> > at java.lang.Thread.run(Thread.java:679)
> > Caused by: java.lang.IllegalArgumentException: Argument is not an array
> > at java.lang.reflect.Array.getLength(Native Method)
> > at
> > org.apache.tuscany.sca.core.databinding.transformers.Array2ArrayTransformer.transform(Array2ArrayTransformer.java:89)
> > ... 35 more
>
>