Chúng tôi đang tạo một webservice (CXF-based) được thúc đẩy bởi một lớp java (Java2WS) với phương thức sau:Dịch vụ web với CXF: Cách sử dụng ResponseWrapper?
@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);
}
tôi sử dụng giấy gói để xác định các yếu tố của resp yêu cầu. phản hồi chi tiết hơn: các tên phần tử chính xác (bắt đầu bằng ký tự chữ hoa), các phần tử bắt buộc và tùy chọn, ...). Nhưng tôi không chắc chắn nếu điều này là đúng cách để làm điều đó (không có chiều sâu tài liệu về hàm bao, phải không?)
Lớp MyResponse:
public class MyResponseWrapper {
private String result;
private ModeEnum status;
// getters and setters
}
Lớp 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
}
Hiện tại tôi không hiểu Trình bao bọc. Khi tôi trả về một thể hiện của MyReponse, dữ liệu từ MyResponse được tiêm vào MyResponseWrapper một cách tôn trọng đối với cơ thể SOAP của phản hồi như thế nào?
Bằng cách kiểm tra webservice này, tôi có thể thấy rằng một thể hiện của MyResponseWrapper được khởi tạo và phần tử SOAP chứa các phần tử chính xác nhưng với dữ liệu mặc định (ví dụ: result = "fu" thay vì "Hello"). Tôi hy vọng rằng CXF sẽ tiêm dữ liệu phù hợp từ MyResponse vào MyResponseWrapper. Là sai đó?
Nếu đây là cách sai để thực hiện: Wat là cách đúng để chỉ định kết quả Xml SOAP khi sử dụng Java2WS?
Nhân tiện: Đoạn mã nguồn ở trên chỉ là các ví dụ được lấy từ các lớp phức tạp hơn (nhiều trường khác) của chúng tôi.