2012-04-10 2 views
2

zurück Ich habe folgende Endpunkt-Schnittstelle:JAX-WS: Platz ein Wrapper um eine Arraylist wird

@WebService 
public interface SEIWebService { 

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

Die Umsetzung:

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

Und schließlich der Code für das Antwortobjekt

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; 
    } 
} 

Wenn ich diesen Code ausführen, kommt die Antwort zurück in SoapUI wie folgt aus:

<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> 

Schließlich die Frage ... Mit dem obigen Code, gibt es eine Möglichkeit, es zu ändern, so kann ich einen „Wrapper“ um die Fehlerliste Antworten hinzufügen? Ich suche die SOAP-Nachrichtenantwort wie folgt aussehen:

<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> 

Vielen Dank für die Hilfe!

+0

Ich werde natürlich ändern "ErrorList" Variablennamen auf etwas anderes. – Ascalonian

+0

Oh, und 'testList' war nur ich versuche etwas aus. Das kann ignoriert werden. – Ascalonian

Antwort

8

Ich fand die Antwort. Ich musste dafür die XmlElementWrapper Annotation verwenden. Also der Code ist jetzt:

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; 
    } 
} 
Verwandte Themen