Help

Controls

PermLinkWikiLink

Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

Forum: Seam Users Forum ListTopic List
11. Jul 2008, 11:41 CET | Link

Hi all.

Im new with WS. I want to pass a list of objects from the server to the client. The server run on Seam and the client is a Swing application. But I think I have some conceptual problems about WS. Anyone knows a good tutorial about Seam and WS?. My WS is register in the JBossWS/Services panel. This is what Im doing :

In the server side I wrote the local interface :


@Local
public interface DriveService extends Remote
{
        public List<Vehicle> performOperation(String driveIdentifier, int queryQuantity); 
}

Also, I wrote a service that implements the local interface :

interface Vehicle{
        public void run ();
}

class Car implements Vehicle {
        public void run() {;}   
}

class Bike implements Vehicle {
        public void run() {;}   
}

@Name("ws.driveService")
@Stateless
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class DriveServiceBean implements DriveService
{  
        @In EntityManager entityManager;
          
        @WebMethod
        public List<Vehicle> performOperation(String driveIdentifier, int queryQuantity)
        { 
                List<Vehicle> list = new ArrayList<Vehicle>();
                list.add(new Car());
                list.add(new Bike());
                list.add(new Bike());
                list.add(new Car());
                return list;
        } 
}

In the client, I have a facade like this.


@WebService(name = "DriveServiceBean", targetNamespace = "....")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface DriveServiceBean { 
    /**
     * 
     * @param arg1
     * @param arg0
     * @return
     *     returns java.lang.Object
     */
    @WebMethod
    @WebResult(partName = "return")
    public Object performOperation(
        @WebParam(name = "arg0", partName = "arg0")
        String arg0,
        @WebParam(name = "arg1", partName = "arg1")
        int arg1);

}

and a simple client :

public class ClientApplication
{  
        private static Logger logger = Logger.getLogger(ClientConfiguration.class.getName());  
        
        public static void main(String args[])
        {
                // Setup the driverService and get the 
                DriveServiceBean driveService = (DriveServiceBean) new DriveServiceBeanService().getDriveServiceBeanPort();
                Object list = driveService.performOperation(ClientApplication.getDriveIdentifier(5), queryQuantity);

                System.out.println(list.getClass());
                System.out.println(list.toString());
        }
        
        private static String getDriveIdentifier(int index)
        {
                String identifier = driveIdentifierPrefix + (10000 + index);
                return identifier;
        } 
 
}

The output for this program is :

run:
     [java] class org.apache.xerces.dom.ElementNSImpl
     [java] [return: null]

Thanx for your time