Мы создаем веб-сервис (на основе CXF), управляемый классом Java (Java2WS), с помощью следующего метода:
@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
}
В настоящее время я не понимаю оболочки. Когда я возвращаю экземпляр MyReponse, как данные из MyResponse вводятся в MyResponseWrapper, соответственно, в тело SOAP-ответа?
При тестировании этого веб-сервиса я вижу, что создается экземпляр MyResponseWrapper, а тело SOAP содержит правильные элементы, но с данными по умолчанию (например: result = "fu" вместо "Hello"). Я ожидал, что CXF внедрит соответствующие данные из MyResponse в MyResponseWrapper. Это неправильно?
Если это неправильный способ: как данные из MyResponse вводятся в MyResponseWrapper в соответствии с телом SOAP ответа?
При тестировании этого веб-сервиса я вижу, что создается экземпляр MyResponseWrapper, а тело SOAP содержит правильные элементы, но с данными по умолчанию (например: result = "fu" вместо "Hello"). Я ожидал, что CXF внедрит соответствующие данные из MyResponse в MyResponseWrapper. Это неправильно?
Если это неправильный способ: как данные из MyResponse вводятся в MyResponseWrapper в соответствии с телом SOAP ответа?
При тестировании этого веб-сервиса я вижу, что создается экземпляр MyResponseWrapper, а тело SOAP содержит правильные элементы, но с данными по умолчанию (например: result = "fu" вместо "Hello"). Я ожидал, что CXF внедрит соответствующие данные из MyResponse в MyResponseWrapper. Это неправильно?
Если это неправильный способ: Wat - это правильный способ указать результирующий XML-код SOAP при использовании Java2WS?
Между прочим: приведенные выше фрагменты исходного кода - это просто примеры, взятые из наших более сложных (с большим количеством полей) классов.