question about Seam and WS.
pdelgallego Jul 11, 2008 11:41 AMHi 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