2012-10-12 70 views
2

我試圖在我的soap返回消息中設置返回類型的順序,但它仍然按字母順序打印。有沒有辦法可以改變我的返回類型的順序?是否可以在JAVA中以非字母順序返回SOAP消息?

我按照C,A,B的順序設置類型,但它總是打印出ABC。

Web方法

@WebMethod(operationName = "Method") 
    @WebResult(name="myType")  
    public MyType Method(@WebParam(name = "string1") String string1, @WebParam(name = "string2") String string2,@WebParam(name = "string3") String string3) { 

     MyType mt = new MyType(); 

     mt.setC(string3); 
     mt.setA(string1); 
     mt.setB(string2); 

     return mt; 
    } 

的MyType類

public class MyType { 

    private String a; 
    private String b; 
    private String c; 

    public String getA() { 
     return a; 
    } 

    public void setA(String a) { 
     this.a = a; 
    } 

    public String getB() { 
     return b; 
    } 

    public void setB(String b) { 
     this.b = b; 
    } 

    public String getC() { 
     return c; 
    } 

    public void setC(String c) { 
     this.c = c; 
    } 


} 

當前SOAP響應

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:MethodResponse xmlns:ns2="http://bbb/"> 
      <myType> 
       <a>one</a> 
       <b>two</b> 
       <c>three</c> 
      </myType> 
     </ns2:MethodResponse> 
    </S:Body> 
</S:Envelope> 

理想SOAP響應

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:MethodResponse xmlns:ns2="http://bbb/"> 
      <myType> 
       <c>three</c> 
       <a>one</a> 
       <b>two</b> 
      </myType> 
     </ns2:MethodResponse> 
    </S:Body> 
</S:Envelope> 
+1

爲什麼訂單importat? – 2012-10-12 09:45:37

+0

我正在用Java重寫一個delphi WS,我們想要部署新的java WS,而不必對連接的客戶端進行任何更改。所以我們試圖使Java WS響應與delphi完全一樣。我們從delphi WS得到的響應不是按字母順序排列的。 – user1737391

回答

0

更改bean中方法的順序,可能不是調用順序,這對於生成的XML肯定沒有影響。但更重要的是,使用WSDL可以正確指定響應的模式,然後使用wsdl2java從中生成bean。

+0

是的,我嘗試改變豆的順序,這也沒有幫助。好的,謝謝,我需要對你的其他建議做一些研究 - 在這方面還是很新的。謝謝! – user1737391

3

您可能能夠通過增加JAXB標註到MyType類做到這一點:

import javax.xml.bind.annotation.*; 

@XmlType(propOrder = {"c", "a", "b"}) 
public class MyType { 
    //... 

,但如果你想複製一個現有服務,則是迄今爲止最好的方法是使用wsimport產生與現有WSDL匹配的Java類。

相關問題