java - 给定一个 java 类的 Web 服务架构

标签 java web-services xsd

我是网络服务新手,我正在探索有关此主题的一个特定想法。

假设我有一个如下所示的 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
    }
}

这可能吗?

最佳答案

您需要使用正确的 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);
}

关于java - 给定一个 java 类的 Web 服务架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5726550/

相关文章:

java - Cassandra = 内存/编码- key 占用空间(哈希/字节[]=>十六进制=>UTF16=>字节[])

java - 对话框打开时检测后退按钮事件

web-services - java.lang.NoClassDefFoundError : javax/activation/DataSource on wsimport Intellij java 9

java - 在 RestTemplate 解码期间忽略 xml 命名空间

c# - 允许 XSD 日期元素为空字符串

java - 在 CXF 中使用 rpc/encoded 样式的方法

java - 我的 If 语句强制关闭

c# - 我如何获得 WSDL/描述以便我可以在另一个项目中添加 Web 引用?

java - 小程序的用户身份验证

.net - 在 .net 中使用 xsd 生成 XML