java - 如何用 Java 制作一个无 stub 的 Web 服务客户端?

标签 java service

我们目前在我们的企业中使用 Axis2。我们的项目涉及调用多个 web 服务进行故障诊断。问题是,我们经常更改 WSDL(不会危及生命,因为新的数据类型和服务只是被添加,很少有东西被删除),因此我们也必须升级我们的应用程序。基本上,我们需要获取 WSDL 的新副本,通过 WSDL2java 运行它并使用新的 jar,运行我们的单元测试并将新的 jar 打包并在生产环境中安装。

虽然在编译团队中生成 stub 的能力为我们提供了 xmlbeans,我们可以使用它轻松地在我们的 java DAO 层代码中工作,但是由于 WSDL 导致的编译-部署周期消耗了团队的时间。我想知道是否有任何改变的可能?是否有任何 Java API 可以在运行时生成 stub 或提供无 stub Web 服务调用,但仍然使我们能够使用 Java 对象而不是手工制作请求文档?类似于 this soap test site .我应该只能够指定一个 WSDL 位置,我应该只得到一个对象,我可以用它访问文档(请求和响应)并且还能够在运行时更改 WSDL 位置?

不确定这种类型的运行时行为在 Java 中是否可能,因为在运行时生成的对象会有不同的类型等等?不确定...我已经看到一些接近我想要的 Groovy 示例,但是使用 Groovy 对我们来说意味着架构改变...这有点困难...是否有可用的 Java 库/API?

最佳答案

Eclipse Web Service Explorer 即时构建任意 WSDL 的 UI 客户端。因此,我想如果您准备好让您的应用使用一些反射来调用服务,那么您想要做的事情是可能的。

由于 Eclipse 是开源的,您或许可以研究一下 explorer 的实现方式和使用思路?

另一方面,您能否使用 ant 自动构建您的构建,以便在新的 WSDL 到达时自动处理它,而良性更改将默默地被吸收。我坚持认为这是一种更好的方法。

关于java - 如何用 Java 制作一个无 stub 的 Web 服务客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2018676/

相关文章:

java - 实体管理器提交的性能不佳 - 指数

c# - 您如何捕获 Web 服务抛出的 soap 异常?

android - Android中的服务与线程

service - 如何在领事(Hashicorp-consul)中将保险库(Hashicorp-vault)注册为服务,我使用的是kubernetes?

C# 从 Windows 服务检查系统是否为 64 位

java - 如何将二维数组的一行或一列传递给java中的函数

java - 如何检查输入流是否不包含数据?

java - Duration中的 'PT'前缀代表什么?

java - Documentum DFS : Working with symbolic labels without interfering with system labels

java - 从 Android 服务关闭屏幕