为 JAX-RPC Web 服务生成 JAX-WS 客户端存根?

Posted

技术标签:

【中文标题】为 JAX-RPC Web 服务生成 JAX-WS 客户端存根?【英文标题】:Generating JAX-WS client stubs for JAX-RPC web service? 【发布时间】:2012-09-11 05:46:10 【问题描述】:

我能否使用 JAX-WS (wsimport) 生成的客户端存根连接到 JAX-RPC Web 服务?使用 JAX-WS 客户端使用 JAX-RPC Web 服务有什么影响?有什么优点和缺点吗?

【问题讨论】:

【参考方案1】:
    工具wsimport 处理WSDL 文件,该文件是描述Web 服务的XML 文档。 工具wsimport 不关心WSDL 中描述的服务(RPC/DOCUMENT)的样式。 如果 WSDL 具有 RPC 样式,它将生成用于使用 RPC 样式 Web 服务的客户端存根,类似地用于文档样式。 JAX-WS(提供wsimport)提供(或者更确切地说能够生成)Web 服务的样式(RPC/文档),并且两者都可以与各自类型的服务端点一起很好地工作。 Here is an example of 使用 wsimport 生成 JAX-RPC 客户端。

希望这会有所帮助。

【讨论】:

嗨!感谢您的回复!这是否意味着我使用 wsimport 生成的客户端存根或 wscompile 生成的客户端存根都没有关系,因为最后我仍然可以使用两者中的任何一个进行连接?我的困境是这样的:我有一组 WSDL 文件。由于我在收到 WSDL 文件时还不知道如何生成客户端存根,所以我请人为我生成客户端存根。生成客户端存根的人使用 IBM 的 RAD。有些文件是使用 JAX-RPC 生成的,而有些是使用 JAX-WS 生成的。 现在这是我感到困惑的部分:如果他可以使用 JAX-WS 生成所有 WSDL 文件,那么他为什么要使用 JAX-RPC 生成其他文件?使用 JAX-RPC 生成的相关性是什么?我知道 JAX-WS 比较新,那么他为什么选择使用 JAX-RPC 生成其他的呢?你能告诉我这个吗? 嗯,wsimport 是生成 Web 服务工件的最新方法,并且更好,因为 wscompile 是做同样事情的早期方法。 Check this link。理想情况下,正如您所说,您使用wsimport 还是wscompile 都没有关系。但是,在您的特定情况下,为什么其他人使用JAX-RPC 而不是JAX-WS?老实说,我无法弄清楚这一点。他本人更适合回答这个问题。 不确定,但可能是 WSDL 过于复杂而无法由普通wsimport 处理的情况,因此他不得不使用wscompile。但这是一个遥远的可能性,我很想知道那个案例。 谢谢!是的,我也不确定他为什么选择在其他人身上使用 JAX-RPC。事实上,我还能够从他生成 JAX-RPC 客户端的 WSDL 文件中生成 JAX-WS 客户端。所以 WSDL 文件应该没有问题。但是我无法测试生成的客户端,因为我无法访问实际的 Web 服务。 :|也许我应该直接问他为什么这样做。感谢您的澄清!

以上是关于为 JAX-RPC Web 服务生成 JAX-WS 客户端存根?的主要内容,如果未能解决你的问题,请参考以下文章

真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService

编写 jax-ws web 服务并在没有 XSD 的情况下生成 WSDL

如何避免在CXF或JAX-WS生成的Web服务客户端中指定WSDL位置?

Java开发中所涉及的常用远程调用

带有 Axis 服务的 JAX-WS 客户端

如何从 JAX-WS Web 服务中访问 ServletContext?