2012-11-09 28 views
2

我正在嘗試設置Web服務。Eclipse生成的WSDL中缺少的子類

我的做法是:

  • 創建動態Web項目
  • 創建一流 「爲MyService」:

    @WebService 
    @XmlSeeAlso({B.class}) 
    public class MyService { 
        public A method() { 
         return new B(); 
        } 
    } 
    
  • 創建 「A」 級:

    @XmlSeeAlso(B.class) 
    public class A { 
        public int propertyOfA=0; 
    } 
    
  • 創建類「B」:

    public class B extends A { 
        public int propertyOfB=1; 
    } 
    
  • 從MyService.java

    創建Web服務

有沒有錯誤,所有的文件被創建。但是,類B不會出現在WSDL的任何地方。因此,所有Web服務響應都不會包含propertyOfB的任何值,因爲它不在服務描述中。

如何將B轉換爲WSDL?

編輯:我不知道這有什麼差別,但我創造的Tomcat V7.0中的Web服務,Apache Axis的

回答

1

我覺得你的要求是向Web服務的用戶該B型對象也可以從method()操作返回。所以,你所要做的就是將這樣的條目您service.xml中,

<parameter name="extraClass">B</parameter> 

什麼,從而將條目添加到WSDL提的Web服務操作也返回這些類型的對象。所以當代碼生成時,這些也會生成。您可以通過檢查響應的xsi:類型來找到返回哪個類。請閱讀此博客以獲得進一步的瞭解,http://ssagara.blogspot.com/2011/07/how-to-get-best-use-of-axis2-object.html

+0

我不確定放置該行的位置。我的項目中沒有任何地方有service.xml文件。文件deploy.wsdd和server-config.wsdd的確看起來好像將線放在某處。這樣做不會導致錯誤,但不會更改服務器的響應。 – icke

+0

server-config.wsdd是放置它的地方。只是一個小拼寫錯誤:'<參數名稱=「extraClasses」值=「my.package.B」>'做了伎倆。非常感謝你! – icke

+0

還有一條評論。這並沒有改變Eclipse中生成的WSDL。但是在部署之後,由服務器生成的WSDL包含我想要的所有內容。 – icke