[jboss-user] [JBossWS] - SessionBean as WebService - again complex data structures

CarstenRudat do-not-reply at jboss.com
Tue Oct 16 08:58:27 EDT 2007


Hi all,

I have a SLSB and want it to be accessable through a webservice. So I write


  | package com.genloop.ejb.beans.service;
  | 
  | import javax.ejb.Remote;
  | import javax.jws.WebMethod;
  | import javax.jws.WebService;
  | import javax.jws.soap.SOAPBinding;
  | 
  | @WebService
  | @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)   
  | @Remote
  | public interface PartnerWebService extends java.rmi.Remote{
  | 
  |   @WebMethod
  |   public String sayHello(String hello);
  | 	
  | }
  | 

and


  | package com.genloop.ejb.beans.service;
  | 
  | import java.util.Date;
  | 
  | import javax.ejb.Remote;
  | import javax.ejb.Stateless;
  | import javax.interceptor.Interceptors;
  | import javax.jws.WebService;
  | 
  | import org.jboss.annotation.ejb.RemoteBinding;
  | import org.jboss.annotation.security.SecurityDomain;
  | 
  | import com.genloop.ejb.commons.SecurityInterceptor;
  | import com.genloop.ejb.commons.UserInterceptor;
  | 
  | @Stateless
  | @Remote(PartnerWebService.class)
  | @SecurityDomain("...")
  | @org.jboss.annotation.ejb.Clustered
  | @RemoteBinding(jndiBinding="test/PartnerWebService/remote")
  | @Interceptors({UserInterceptor.class, SecurityInterceptor.class})
  | @WebService(endpointInterface="com.genloop.ejb.beans.service.PartnerWebService", serviceName="PartnerService")
  | public class PartnerWebServiceBean implements PartnerWebService {
  | 
  |   public String sayHello(String hello) {
  |     return hello;
  |   }
  | 	
  | }
  | 	


My Client works well:


  | public class PartnerWSClient {
  | 
  |   public static void main(String[] args) {
  |     try {
  |       URL url = new URL("http://localhost:8080/test-ea-test-service/PartnerWebServiceBean?wsdl");
  |       QName qname = new QName("http://service.beans.ejb.genloop.com/", "PartnerService");
  | 
  |       ServiceFactory factory = ServiceFactory.newInstance();
  |       Service service = factory.createService(url, qname);
  | 
  |       PartnerWebService partnerService = (PartnerWebService)service.getPort(PartnerWebService.class);
  | 			
  |       System.out.println(partnerService.sayHello("test"));
  |     } catch (MalformedURLException e) {
  |        e.printStackTrace();
  |     } catch (ServiceException e) {
  |        e.printStackTrace();
  |     }
  |   }
  | }
  | 



But now, I add another mehtod:


  | public ComplexObject getComplexObject() {
  |   return new ComplexObject(new Date(), "test");
  | }
  | 
  | ...
  | 
  | @WebMethod
  | public ComplexObject getComplexObject();
  | 
  | ...
  | 
  | public class ComplexObject implements Serializable {
  | 
  |   protected Date date;
  | 	
  |   protected String string;
  | 
  |   public ComplexObject() {
  |   }
  | 
  |    getter/setter
  | }
  | 	

No, I just get this exception:


  | Cannot obtain java/xml type mapping for: {http://service.beans.ejb.genloop.com/}complexObject
  | 


I use JBoss 4.2.1 and updated JBoss Web Services to version 2.0.

And my question is: What am I doing wrong? Is there any way to get user datastructures work?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4095598#4095598

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4095598



More information about the jboss-user mailing list