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
> -- 
> 
> 

Reply via email to