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

发布于 2024-11-02 13:41:55 字数 792 浏览 1 评论 0原文

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

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

这可能吗?

I am new to web service and I am exploring one particular idea regarding this topic.

Supposed I have a java class like below

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

I want to create a Web Service method and I wanted it to expose the data
to follow a certain schema when I call this web service. This will basically
be the SOAP response schema.

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

The web service method will just find a department given a department id input parameter.
The output should follow the schema above

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

Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓦然回首 2024-11-09 13:41:55

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

You need to annotate your POJO class with proper JAXB annotations.

Here is an example :

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


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

    // +accessor methods

} 

Also annotate your Employee class in the same manner.

And use

@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);
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文