2012-04-10 4 views
2

I次エンドポイント・インタフェースを持っている:JAX-WS:プレイスのArrayListラッパーが返される

@WebService 
public interface SEIWebService { 

    @WebMethod 
    @WebResult(name="CreateWorkOrderItemResponse") 
    CreateWorkOrderItemResponse createWorkItem(@WebParam(name = "CreateWorkOrderItemRequest")CreateWorkOrderItemRequest request); 
} 

実装:

@WebService(endpointInterface = "com.someCompany.SEIWebService", portName = "SEIWebServices") 
public class SEIWebServiceImpl implements SEIWebService{ 

    @Override 
    public CreateWorkOrderItemResponse createWorkItem(CreateWorkOrderItemRequest request) { 
     CreateWorkOrderItemResponse response = new CreateWorkOrderItemResponse(); 
     response.setResponseCode("Testing Create 2222"); 
     response.addError("Error 1"); 
     response.addError("Error 2"); 

     return response; 
    } 

そして最後に、応答オブジェクト

ためのコード
public class CreateWorkOrderItemResponse { 
    private String responseCode = null; 
    private ArrayList<String> errorList = new ArrayList<String>(); 

    public void setResponseCode(String responseCode) { 
     this.responseCode = responseCode; 
    } 

    public String getResponseCode() { 
     return responseCode; 
    } 

    public void addError(String error) { 
     errorList.add(error); 
    } 

    public void setErrorList(ArrayList<String> errorList) { 
     this.errorList = errorList; 
    } 

    public ArrayList<String> getErrorList() { 
     return errorList; 
    } 
} 

このコードを実行すると、SoapUIの応答が次のように表示されます。

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:createWorkItemResponse xmlns:ns2="http://someCompany.com/"> 
     <CreateWorkOrderItemResponse> 
      <errorList>Error 1</errorList> 
      <errorList>Error 2</errorList> 
      <responseCode>Testing Create 2222</responseCode> 
      <testList/> 
     </CreateWorkOrderItemResponse> 
     </ns2:createWorkItemResponse> 
    </S:Body> 
</S:Envelope> 

最後に、質問 ...上記のコードでは、私はerrorList応答を中心に「ラッパー」を追加することができ、それを変更する方法はありますか?私は、SOAPメッセージの応答は次のようになり持って探しています:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:createWorkItemResponse xmlns:ns2="http://someCompany.com/"> 
     <CreateWorkOrderItemResponse> 
      <Errors> 
       <errorList>Error 1</errorList> 
       <errorList>Error 2</errorList> 
      </Errors> 
      <responseCode>Testing Create 2222</responseCode> 
      <testList/> 
     </CreateWorkOrderItemResponse> 
     </ns2:createWorkItemResponse> 
    </S:Body> 
</S:Envelope> 

は助けありがとうございました!

+0

私は、もちろん、 "errorList"変数名を別のものに変更しています。 – Ascalonian

+0

ああ、 'testList'はちょうど私が何かを試していた。それは無視することができます。 – Ascalonian

答えて

8

私は答えを見つけました。これにはXmlElementWrapperアノテーションを使用しなければなりませんでした。コードは今のところ:

public class CreateWorkOrderItemResponse { 
    private String responseCode = null; 
    private ArrayList<String> errorList = new ArrayList<String>(); 

    public void setResponseCode(String responseCode) { 
     this.responseCode = responseCode; 
    } 

    public String getResponseCode() { 
     return responseCode; 
    } 

    public void addError(String error) { 
     errorList.add(error); 
    } 

    public void setErrorList(ArrayList<String> errorList) { 
     this.errorList = errorList; 
    } 

    @XmlElementWrapper(name="error_list") 
    @XmlElement(name="error") 
    public ArrayList<String> getErrorList() { 
     return errorList; 
    } 
} 
関連する問題