我有服務器端類:ForumEntry,我必須返回ForumEntry列表的Web服務:如何在JAX-WS客戶端中重用服務器端類?
@WebService(name="ForumGeneral",serviceName="ForumGeneralService")
public class ForumGeneralService {
@WebMethod
public List<ForumEntry> getLatestTopics(String keyword,int count){
...
}
}
使用的wsimport生成Web服務客戶端,它完成罰款,而是一個新的ForumEntry類型的創建基於Web服務。這是有道理的,因爲Web服務的本質是客戶端和服務器端是分離的。
但是如果我想重用服務器端ForumEntry並避免創建客戶端虛擬類,該怎麼辦?我發現一個帖子:http://jamablog.blogspot.com/2007/08/how-to-make-jax-ws-client-reuse_22.html。
按照想法,我加了JAXB標註到我的服務器端ForumEntry類:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "forumEntry", propOrder = {
"forumId",
"forumName",
})
public class ForumEntry
然後使用schemagen生成情節文件,然後通過它使用-b參數的wsimport。但我的問題,因爲生成的事件文件具有條目「forumEntry」:
[ERROR] SCD "~forumEntry" didnt match any schema component
我猜它的意思是「forumEntry沒有顯示出來的WSDL,這是正確的:
<message name="getLatestTopics">
<part name="parameters" element="tns:getLatestTopics"></part>
</message>
<message name="getLatestTopicsResponse">
<part name="parameters" element="tns:getLatestTopicsResponse"></part>
</message>
那麼,如何做部件在這裏合在一起,重用服務器端類?
謝謝,但你能更具體嗎?我返回一個List,而FourmEntry是一個類型。雙方如何使用Forumentry課程?謝謝。 – Andrew 2011-05-15 14:50:52
你必須在客戶端生成ForumEntry類並使用它。 – 2011-05-15 18:13:12
雖然這個問題很老,但我也有類似的問題。問題是我已經有了一堆使用某些類作爲數據類型的服務器端代碼,以及這些類中的一些實用程序方法。如果服務器端更改爲使用客戶端生成的類,這將是一項重大工作。 – 2015-11-16 14:42:06