2012-05-05 93 views
9

我正在使用JAXB綁定直接解組到我的域層對象,它們是生成的Web服務類型的子類。這是一個很好的解決方案,因爲我可以覆蓋方法並提供編寫自定義邏輯等。但是,XJC編譯器堅持要在所有生成的類上放置@XmlSeeAlso({MySubclass.class})註釋,這會導致它們成爲與我的域對象緊密耦合。這顯然是不受歡迎的,並且在我的項目之間引起各種參考問題,我不會介入。JAXB @XmlSeeAlso導致與域對象緊密耦合

是否有可能生成沒有@XmlSeeAlso註解的類?解組到子類的實際工作似乎發生在ObjectFactory類中。是否可以省略jaxb綁定,併爲每個應用程序替換自定義的ObjectFactory?這將允許我在共享util中自動生成webservice類型,而每個web項目可以解組到這些類型的不同子類。

<jaxb:bindings node="//xs:complexType[@name='AutogeneratedWebserviceType']"> 
    <jaxb:class implClass="my.project.CustomSubclass" /> 
</jaxb:bindings> 

這種結合將創造似乎做解編到我的子類的實際工作中的ObjectFactory的方法:通過提供客戶

public AutogeneratedWebserviceType createAutogeneratedWebserviceType() { 
    return new CustomSubclass(); 
} 

我想沒有@XmlSeeAlso註釋這種行爲的ObjectFactory , 如果可能的話。

回答

2

您是否嘗試使用參數-target 2.0運行XJC?我相信這會禁止生成@XmlSeeAlso註釋。

+0

用於螞蟻使用這樣的事情:

+0

非常感謝 「-target 2.0」解決了我的問題。我在OSGi環境中使用Webservices,這個愚蠢的運行時註解XmlSeeAlso導致了一個緊密的杯子到其他模塊是完全不必要的 – lostiniceland