Returning lists on jbossws-1.2.1.GA
burakbayramli Nov 12, 2007 10:00 AMHi all,
How can we return lists using @WebMethod, @WebService annotations
I have used the following code but I received the error below:
Exception in thread "main" org.jboss.ws.WSException: Cannot obtain java type mapping for: {http://service.gg.com/}arrayList at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCMetaDataBuilder.buildOutputParameter(JAXRPCMetaDataBuilder.java:346) at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCMetaDataBuilder.buildParameterMetaDataRpc(JAXRPCMetaDataBuilder.java:592) at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCMetaDataBuilder.setupOperationsFromWSDL(JAXRPCMetaDataBuilder.java:210) at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaDataInternal(JAXRPCClientMetaDataBuilder.java:216) at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaData(JAXRPCClientMetaDataBuilder.java:133) at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaData(JAXRPCClientMetaDataBuilder.java:85) at org.jboss.ws.core.jaxrpc.client.ServiceImpl.<init>(ServiceImpl.java:111) at org.jboss.ws.core.jaxrpc.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:157) at org.jboss.ws.core.jaxrpc.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:128) at com.gg.service.Client.main(Client.java:21)
Code:
@WebService @SOAPBinding(style=Style.RPC) public interface ProductDb extends Remote { @WebMethod ArrayList<Product> getProducts(); }
@Stateless @WebService(endpointInterface="com.gg.service.ProductDb") @WebContext(contextRoot="/ggServices") public class ProductDbBean { @PersistenceContext(unitName="GGLocal") EntityManager em; public ArrayList<Product> getProducts() { List<Product> l = em.createQuery("from Product").getResultList(); ArrayList<Product> list = new ArrayList<Product>(); for (Product p : l) { list.add(p); } return list; } }
public class Client { public static void main(String[] args) throws Exception { URL url = new URL("http://localhost:8080/ggServices/ProductDbBean?wsdl"); QName qname = new QName("http://service.gg.com/", "ProductDbBeanService"); ServiceFactory factory = ServiceFactory.newInstance(); Service service = factory.createService(url, qname); ProductDb s = (ProductDb) service.getPort(ProductDb.class); ArrayList<Product> list = s.getProducts(); }
Thanks in advance,