Take the 2-minute tour ×

We are creating a webservice (CXF-based) driven by a java class (Java2WS) with the following method:

  @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);

I use the wrappers to define the elements of the request resp. response in more detail: the correct element names (which start with an uppercase character), required and optional elements, ...). But I am not sure if this is the right way to do it (there is no in-depth documentation about wrappers, isn't it?)

The class MyResponse:

public class MyResponseWrapper {

  private String result;   
  private ModeEnum status;

  // getters and setters

The class MyReponseWrapper

@XmlType(name = "myResponse")
public class MyResponseWrapper {

  private String result;

  @XmlElement(name = "Status")
  private StatusEnum status;

  public MyResponseWrapper() {
    result="fu"; // just for testing

  // getters and setters

Currently I don't understand the Wrappers. When I return an instance of MyReponse, how does the data from MyResponse be injected into MyResponseWrapper respectivly to the SOAP body of the response?

By testing this webservice I can see that an instance of MyResponseWrapper is instantiated and the SOAP body contains the correct elements but with default data (for example: result="fu" instead of "Hello"). I expected that CXF injects matching data from MyResponse to MyResponseWrapper. Is that wrong?

If this is the wrong way to do it: Wat is the right way to specify the resulting SOAP xml when using Java2WS?

By the way: The above source snippets are just examples taken from our more complex (more fields) classes.

share|improve this question

1 Answer 1

This is the right way to do it. The request and response wrappers just allow for overriding the xml namespace and element/attribute names for the request/response elements; respectively.

share|improve this answer

Your Answer


