2012-12-03 71 views
1

我一直在使用Metro,並且遇到了一個問題,wsgen似乎忽略了我放在Web方法響應類上的任何JAXB註釋。wsgen無法忽略JAXB註釋

我試圖返回一組實體類,我想通過一個Web服務向外部客戶端公開,但是我只想讓某些類的屬性和方法對外部客戶端可見,所以設置了類的訪問權限類型爲PROPERTY,並已使用@XmlElement註解了我希望成爲該類的XML版本的一部分的所有屬性。

我可以使用schemagen ant任務爲實體類創建XML模式,該任務正確忽略了我沒有使用@XmlElement註釋的任何屬性或方法,但是當我運行wsgen爲Web服務創建wsdl時有一個方法返回一組實體類,然後我得到一個java.lang.NoClassDefFoundError。這似乎是因爲wsgen並沒有忽略它應該做的實體類的公共方法,異常引用的類是此方法的參數。

我試着用@XmlTransient註解該方法,以便wsgen忽略它,但無濟於事。如果任何人都可以建議我應該怎麼做才能讓wsgen注意我的註釋,那麼這將非常棒。

回答

0

無論訪問者類型如何,註釋字段/屬性將始終處理。如果您只想將註釋字段/屬性視爲映射對象,則需要指定@XmlAccessorType(XmlAccessType.NONE)

更多信息

+0

感謝您的建議布萊斯,但即使我改變訪問類型爲NONE,然後運行WSGEN仍會報告關於類,這是一個參數一種應該忽略的方法,但由於某種原因不是。我有點困惑,因爲運行schemagen爲實體類生成了一個有效的xml模式,它關注了我的註釋,但似乎wsgen必須有自己的方法來創建模式,這似乎忽略了我的註釋 – user1872413