W tworzenia usługa (CXF oparte) napędzany przez klasę Java (Java2WS) z następującą metodą:Webservice z CXF: Jak korzystać z 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);
}
korzystać z owijki do określenia elementów żądanie wzgl. odpowiedź bardziej szczegółowo: poprawne nazwy elementów (zaczynające się wielkimi literami), wymagane i opcjonalne elementy ...). Ale nie jestem pewien, czy jest to właściwy sposób, żeby to zrobić (nie ma dokumentacji pogłębione o owijarki, prawda?)
Klasa MyResponse:
public class MyResponseWrapper {
private String result;
private ModeEnum status;
// getters and setters
}
Klasa 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
}
Obecnie nie rozumiem opakowania. Kiedy zwracam instancję MyReponse, w jaki sposób dane z MyResponse są wstrzykiwane do MyResponseWrapper w odpowiedni sposób do treści SOAP odpowiedzi?
Testując ten serwis widzę, że instancja MyResponseWrapper jest instancjonowana, a treść SOAP zawiera poprawne elementy, ale z danymi domyślnymi (na przykład: result = "fu" zamiast "Hello"). Spodziewałem się, że CXF wstrzyknie pasujące dane z MyResponse do MyResponseWrapper. Czy to źle?
Jeśli jest to niewłaściwy sposób, aby to zrobić: Wat jest właściwą metodą określenia wynikowego xml SOAP podczas korzystania z Java2WS?
Przy okazji: powyższe fragmenty kodu źródłowego są przykładami zaczerpniętymi z bardziej złożonych (więcej pól) klas.