【发布时间】:2011-05-13 00:41:11
【问题描述】:
我们正在使用以下方法创建由 java 类 (Java2WS) 驱动的 Web 服务(基于 CXF):
@WebMethod
@RequestWrapper(className = "com.myproject.wrapper.MyRequestWrapper")
@ResponseWrapper(className = "com.myproject.wrapper.MyResponseWrapper")
public MyResponse verifyCode(@WebParam(name = "code") String code) {
...
return new MyResponse("Hello",StatusEnum.okay);
}
我使用包装器来定义请求的元素。更详细的响应:正确的元素名称(以大写字符开头),必需和可选元素,...)。但我不确定这是否是正确的方法(没有关于包装器的深入文档,不是吗?)
MyResponse 类:
public class MyResponseWrapper {
private String result;
private ModeEnum status;
// getters and setters
}
MyReponseWrapper 类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "myResponse")
public class MyResponseWrapper {
@XmlElement(name="Result")
private String result;
@XmlElement(name = "Status")
private StatusEnum status;
public MyResponseWrapper() {
result="fu"; // just for testing
}
// getters and setters
}
目前我不了解 Wrappers。当我返回一个 MyReponse 的实例时,来自 MyResponse 的数据如何分别注入到 MyResponseWrapper 到响应的 SOAP 主体中?
通过测试这个 web 服务,我可以看到 MyResponseWrapper 的一个实例被实例化,并且 SOAP 主体包含正确的元素,但具有默认数据(例如:result="fu" 而不是 "Hello")。我希望 CXF 将匹配数据从 MyResponse 注入到 MyResponseWrapper。有错吗?
如果这是错误的做法: 在使用 Java2WS 时,Wat 是指定生成的 SOAP xml 的正确方法吗?
顺便说一句:上面的源 sn-ps 只是取自我们更复杂(更多字段)类的示例。
【问题讨论】:
标签: java web-services response wrapper cxf