我编写了一个 Jersey 客户端应用程序,它与两个 Web 服务交互,一个是 REST,另一个是 SOAP。我使用 REST 服务提供的员工数据通过 SOAP 服务创建一个新用户。
REST 服务是一个返回 Employee 实体的 JAX-RS (Jersey) 应用程序:
@Entity
@Table(name = "EMPLOYEE_TABLE")
@XmlRootElement
public class Employee implements Serializable {
...
}
我没有为实体类明确创建模式定义。
GET 请求返回 Employee 实体的表示:
GET /employees/100
<Employee id='100' providerId='3345'>
<Link type="application/xml" href="/employees/100" rel="self"/>
<Name>Doe, Dr. John</Name>
<Departments>
<Department id='10'><Name>Emergency Medicine</Name></Department>
<Department id='56'><Name>Behavioral Medicine</Name></Department>
</Departments>
</Employee>
SOAP 服务(BusinessObjects Enterprise Web 服务 SDK)提供 Java 客户端以简化其使用。
虽然我可以解析 Employee 实体的 XML 表示并将其分配给 User 类的适当设置器,但在我的 Jersey 客户端应用程序中创建一个 Employee 代理类(带有适当的注释)可能会更容易。
问题:
- JAX-RS(特别是泽西岛,在我的例子中)是否有一种机制来公开实体的模式定义(XSD 格式)?WADL 文档不包含此类信息。
- 虽然我可以手动创建一个模仿 Employee 资源类的 POJO 类表示,但我可能应该使用“工具”。我有什么选择?
- 随着时间的推移,我可能需要向 Employee 实体添加其他元素。这是否意味着需要创建新版本的 RESTful 服务?
- 假设 Jersey 可以配置为自动生成和公开模式定义,并且对 Employee 的更改会改变模式定义,那么 Employee 实体是否应该实现一个接口来防止未经授权的更改?