我有服务器端类: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