You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Simon Nash <na...@hursley.ibm.com> on 2008/01/02 22:12:42 UTC
Re: web service problem (and configuration)
I don't think you can pass or return an interface type across
the Web Service binding, only a class type.
This is a rather nasty limitation. I believe there is some deep
JAXB magic ("factory" annotations) that could work around this
limitation, but I haven't got far enough into this to know how
to use it or whether it currently works in Tuscany.
Simon
Mariano Kohan wrote:
> hello,
>
> this is an example that shows the problem.
> listSalePointCodesOA and listSalePointCodesIA return an array and works
> well, but listSalePointCodes return a List and have the commented
> problems.They are defined in.Services and implemented in
> ServicesImplementation.
> Runner is the class that start the application.
> The web services are published in http://localhost:8887/Services?wsdl.
>
> thanks,
> Mariano
>
> Source classes:
>
> package application.services.interfaces;
>
> import java.rmi.Remote;
> import java.rmi.RemoteException;
> import java.util.List;
>
> import org.osoa.sca.annotations.Remotable;
>
>
> /**
> * @author Mariano Kohan
> * @version 1.0
> *
> */
> @Remotable
> public interface Services
> extends Remote
> {
>
> //prueba de retorno de un listado con tipos basicos
> public List listSalePointCodes() throws RemoteException, Exception;
> //se prueba retornando un arreglo de objetos
> public Object[] listSalePointCodesOA() throws RemoteException,
> Exception;
> //se prueba retornando un arreglo de objetos basicos
> public Integer[] listSalePointCodesIA() throws RemoteException,
> Exception;
>
> }
>
> import application.services.interfaces.Services;
>
> //@Service(Services.class)
> public class ServicesImplementation
> implements Services
> {
>
> public ServicesImplementation()
> throws RemoteException
> {
> }
>
> public List listSalePointCodes() throws RemoteException, Exception {
> //shows only the first and last elements
> // List codes = new LinkedList();
> //shows no elements
> List codes = new ArrayList();
> codes.add(new Integer(1));
> codes.add(new Integer(2));
> codes.add(new Integer(14));
> codes.add(new Integer(61));
> codes.add(new Integer(1));
> codes.add(new Integer(8));
> codes.add(new Integer(33));
> return codes;
> }
>
> public Object[] listSalePointCodesOA() throws RemoteException, Exception
> {
> List codes = this.listSalePointCodes();
> return codes.toArray();
> }
>
> public Integer[] listSalePointCodesIA() throws RemoteException,
> Exception {
> List codes = this.listSalePointCodes();
> Integer[] codesArray = new Integer[codes.size()];
> int i = 0;
> for (Iterator iterator = codes.iterator(); iterator.hasNext();) {
> Integer code = (Integer) iterator.next();
> codesArray[i++] = code;
> }
> return codesArray;
> }
>
> }
>
> package application.server;
>
> import org.apache.tuscany.sca.host.embedded.SCADomain;
>
> public class Runner {
>
> public Runner(){
>
> }
>
> /**
> * inicializacion del dominio SCA
> */
> public void initialize(String xmlFileNameString)
> throws Exception
> {
>
> System.out.println("Starting of the SCA Application exposed as RMI
> and Web Services ...");
> SCADomain scaDomain = SCADomain.newInstance(xmlFileNameString);
> System.out.println("... Press Enter to Exit...");
> System.in.read();
> scaDomain.close();
> System.out.println("Exited...");
> System.exit(0);
>
> }
>
> public static void main(String[] args)
> throws Exception
> {
> Runner applicationServicesRunner = new Runner();
> applicationServicesRunner.initialize(args[0]);
> }
>
> }
>
> Configuration Files:
>
> -composite
>
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
> xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
> targetNamespace="http://application"
> name="application">
>
> <component name="ApplicationServiceComponent">
> <implementation.spring location="test.app\src\resource"/>
> <service name="Services" type="
> application.services.interfaces.Services"
> target="SERVICES">
> <binding.ws uri="http://localhost:8887/Services"/>
> </service>
>
> </component>
>
> -spring beans
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:sca="http://www.springframework.org/schema/sca"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://www.springframework.org/schema/sca
> http://www.springframework.org/schema/sca/spring-sca.xsd">
>
> <sca:service name="Services"
> type="application.services.interfaces.Services" target="SERVICES"/>
>
> <!-- services -->
> <bean id="SERVICES"
> class="application.services.implementation.ServicesImplementation">
> </bean>
>
> </beans>
>
> 2007/12/20, Simon Laws <si...@googlemail.com>:
>
>>On Dec 20, 2007 5:44 PM, Mariano Kohan <ma...@gmail.com> wrote:
>>
>>
>>>hello,
>>>
>>>I have a problem when I expose a service with ws binding.
>>>When I want to return a collection of elements, if I use a List type the
>>>web
>>>service invocation return only 2 elements of the list (when I use
>>>LinkedList) or an empty collection (when I use Array).
>>>I suppose the problem is in the implementation of the web service with
>>>axis2. It's that right? How can I change the configuration of axis to
>>>return
>>>all the elements of the List?
>>>
>>>thanks,
>>>Mariano
>>>
>>
>>Hi Mariano
>>
>>Can you provide a example of this problem. If you can't provide the whole
>>thing then the service interface that you are using would be good (or a
>>sample interface that has the same types)? It sounds like it could be
>>something wrong with either the way interface definitions are being
>>generated or in the way that data is transformed and marshalled across the
>>wire. The easiest thing is if you can provide an example that doesn't work
>>that can be debugged.
>>
>>Thanks
>>
>>Simon
>>
>>Simon
>>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org