Using the List<String> as the return type is tricky for SOAP WS as the XML
always requires to have a root element. Do you mind trying to create a wrapper
JAXB for the List<String>, such as:
public class Messages {
protected List<String> items;
…
// setter and getters
}
Thanks,
Raymond
On Jan 12, 2012, at 8:16 AM, ESSOUSSI Mohamed Habib wrote:
> Simo Nash wrote:
>> Hi Mohamed,
>> Please can you post the generated WSDL file here. Thanks.
>>
>> Simon
> Hello,
>
> Thank you for your help sir.
>
> The service interface:
>
> package chatserver;
>
> import java.util.List;
>
> import org.osoa.sca.annotations.Remotable;
>
> @Remotable
> public interface ChatServer {
> List<String> checkMessages(int received);
> }
>
>
> The wsdl file:
>
> <wsdl:definitions name="ChatServerService"
> targetNamespace="http://chatserver/" xmlns:tns="http://chatserver/"
> xmlns:wsdl=MailScanner soupçonne le lien suivant d'être une tentative de
> fraude de la part de "schemas.xmlsoap.org" "http://schemas.xmlsoap.org/wsdl/"
> xmlns:xs=MailScanner soupçonne le lien suivant d'être une tentative de fraude
> de la part de "www.w3.org" "http://www.w3.org/2001/XMLSchema"
> xmlns:SOAP=MailScanner soupçonne le lien suivant d'être une tentative de
> fraude de la part de "schemas.xmlsoap.org"
> "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP11=MailScanner soupçonne le
> lien suivant d'être une tentative de fraude de la part de
> "schemas.xmlsoap.org" "http://schemas.xmlsoap.org/wsdl/soap/">
> <wsdl:types>
> <xs:schema attributeFormDefault="qualified"
> elementFormDefault="unqualified" targetNamespace="http://chatserver/"
> xmlns:tns="http://chatserver/" xmlns:xs=MailScanner soupçonne le lien suivant
> d'être une tentative de fraude de la part de "www.w3.org"
> "http://www.w3.org/2001/XMLSchema"><xs:element
> name="checkMessages"><xs:complexType><xs:sequence><xs:element minOccurs="0"
> name="arg0"
> type="xs:int"/></xs:sequence></xs:complexType></xs:element><xs:elementname="checkMessagesResponse"><xs:complexType><xs:sequence><xs:element
> minOccurs="0" name="return" nillable="true"
> type="xs:anyType"/></xs:sequence></xs:complexType></xs:element></xs:schema>
> </wsdl:types>
> <wsdl:message name="checkMessages">
> <wsdl:part name="checkMessages" element="tns:checkMessages">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="checkMessagesResponse">
> <wsdl:part name="checkMessagesResponse"
> element="tns:checkMessagesResponse">
> </wsdl:part>
> </wsdl:message>
> <wsdl:portType name="ChatServer">
> <wsdl:operation name="checkMessages">
> <wsdl:input message="tns:checkMessages">
> </wsdl:input>
> <wsdl:output message="tns:checkMessagesResponse">
> </wsdl:output>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="ChatServerBinding" type="tns:ChatServer">
> <SOAP:binding style="document" transport=MailScanner soupçonne le lien
> suivant d'être une tentative de fraude de la part de "schemas.xmlsoap.org"
> "http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="checkMessages">
> <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="ChatServerService">
> <wsdl:port name="ChatServerPort" binding="tns:ChatServerBinding">
> <SOAP:address location="http://localhost:9000/server"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
> My java client:
>
> package sca.client;
>
> import java.util.List;
>
> import org.osoa.sca.annotations.Reference;
> import org.osoa.sca.annotations.Service;
>
> import chatserver.ChatServer;
>
> @Service(Runnable.class)
> public class ChatClient implements Runnable {
>
> @Reference
> protected ChatServer cs;
>
> @Override
> public void run() {
>
> List<String> arr = (List<String>) cs.checkMessages(0);
> for (String str : arr) {
> System.out.println(arr);
> }
>
> }
>
> }
>
> The exception:
> Exception in thread "main" java.lang.ClassCastException:
> org.apache.xerces.dom.ElementNSImpl cannot be cast to java.util.List
> at sca.client.ChatClient.run(ChatClient.java:20)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at
> org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:156)
> at
> org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(SCABindingInvoker.java:61)
> at
> org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:349)
> at
> org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:193)
> at $Proxy32.run(Unknown Source)
> at sca.client.launcher.ChatLauncher.main(ChatLauncher.java:17)
>
>
>
> --
>
> ESSOUSSI Mohamed Habib
> TELECOM SudParis
> --
>
>