2011-04-20 56 views
2

我是web服务新手,我正在探索关于此主题的一个特定想法。给定java类的Web服务架构

假设我有一个Java类,像下面

public class Department{ 
    private int id; 
    private String name 
    private List<Employee> employees; 
    //getters and setters 
} 

我想创建一个Web服务方法,我想它公开数据 遵循一定的模式,当我把这个Web服务。这基本上是 是SOAP响应模式。

<department> 
    <id /> 
    <name /> 
    <employees type="list"> 
     <employee> 
      <emp_id /> 
      <name /> 
     </employee> 
     . 
     . 
    </employees> 
</department> 

Web服务方法只会找到给定部门ID输入参数的部门。 输出应该遵循上面的架构

@WebService 
public class Service{ 
    @WebMethod 
    public Department getDepartment(int id){ 
     //code 
    } 
} 

这可能吗?

+1

的模式,你的意思是,你要忽略'id'和'部门name'领域? – 2011-04-20 06:59:22

+0

@Jigar感谢您的回答,但为了回答您的问题,我希望SOAP响应包含ID和名称字段以及复杂类型的员工对象 – 2011-04-20 07:05:02

回答

4

您需要使用适当的JAXB注释来注释POJO类。

下面是一个例子:

@XmlAccessorType(value = XmlAccessType.NONE) 
public class Department { 


    @XmlElement 
    private Long id 
    @XmlElement 
    private String name 
    @XmlElement 
    private List<Employee> employees; 

    // +accessor methods 

} 

而且注解你Employee类以同样的方式。

并使用

@WebService(name = "departmentServiceSOAP", targetNamespace = "/namespace") 
@javax.jws.soap.SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 
public interface DepartmentService { 
    @WebMethod 
    public Department getDepartment(Long id); 
}