Nous créons un service web (basé CXF-) entraîné par une classe Java (Java2WS) avec la méthode suivante:Webservice avec CXF: Comment utiliser le 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);
}
J'utilise les enveloppes pour définir les éléments de la demande de resp. réponse plus en détail: les noms d'éléments corrects (qui commencent par une majuscule), les éléments obligatoires et optionnels, ...). Mais je ne suis pas sûr que ce soit la bonne façon de le faire (il n'y a pas de documentation approfondie sur les emballages, est-ce pas?)
La MyResponse classe:
public class MyResponseWrapper {
private String result;
private ModeEnum status;
// getters and setters
}
La classe 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
}
Actuellement, je ne comprends pas les wrappers. Lorsque je retourne une instance de MyReponse, comment les données de MyResponse sont-elles injectées dans MyResponseWrapper respectivement au corps SOAP de la réponse? En testant ce webservice, je peux voir qu'une instance de MyResponseWrapper est instanciée et que le corps SOAP contient les éléments corrects mais avec des données par défaut (par exemple: result = "fu" au lieu de "Hello"). Je m'attendais à ce que CXF injecte des données correspondantes de MyResponse à MyResponseWrapper. Est-ce faux?
Si c'est la mauvaise façon de le faire: Wat est le bon moyen de spécifier le xml SOAP résultant lors de l'utilisation de Java2WS? A propos: Les extraits de sources ci-dessus ne sont que des exemples tirés de nos classes plus complexes (plus de champs).