如何用WSDL4J构建Spring+AXIS自动创建的Web service对应客户端

简介:
如何用WSDL4J构建Spring+AXIS自动创建的Web service对应客户端
我的另一篇博文Spring集成AXIS2的Web service配置方法( http://dannyyuan.blog.51cto.com/212520/160504 )提过到如何用Spring+AXIS自动完成WSDL的定义和对象拆装/封装,简单地把Spring声明的bean所有公开方法转换成Web service方法。
而Apache项目WSDL4J则是根据WSDL的XML文档就可以自动生成Web service的客户端代码,这样的话,构建web service服务端和客户端都显得没有多少手工编码了。其实WSDL4J也是可以生成服务端代码的,可是手工编写WSDL还不如用AXIS自动生成来得快。
用WSDL4J创建客户端代码的命令如下:
java -cp %AXIS_CLASSPATH% java org.apache.axis.wsdl.WSDL2Java -o DIR_NAME -p PACKAGE_NAME  http://ws-server/proj-name/services/service-name?wsdl
其中AXIS_CLASSPATH应该包括axis.jar,commons-discovery.jar,commons-logging.jar,jaxrpc.jar,log4j.jar,saaj.jar,wsdl4j.jar,activation.jar,mail.jar。
该命令会在所指定目录下创建JAVA包,里面有[web_service]Locator.java, [web_service].java, [web_service]PortType.java, [web_service]SOAP11BindingStub.java,[web_service]SOAP12BindingStub.java,以及方法中所有涉及的参数bean等。
客户代码只需new [web_service]Locator实例,其实现了[web_service]接口,用get[web_service]SOAP11port_http(URL)方法取得方法实现对象[web_service]PortType实现,可以直接调用其方法像本地方法一样了。URL如果是HTTPS协议的,需要设SSL证书路径到系统属性配置中去(System.setProperty("javax.net.ssl.trustStore","ssl.cer");)
上面的都是简单的工具描述,可是如果不注意会出现一些意料不到的问题。
1、首先AXIS自动发布的WS方法参数会自动对应bean方法的参数名,结果在构建SOAP元素XML标签会映射过来,如果你用AOP想实现基本检验和类型检查之类的拦截的话,就要小心SOAP元素名与bean方法参数名的关系了;
2、其次WSDL2JAVA小工具好像不支持HTTPS(用户检验支持),这时可以用浏览器打开WSDL文档然后保存成文件被调用;
3、生成的JAVA代码会把URL写死(如果WSDL2JAVA工具用URL参数),所以默认创建PortType(不带参数)的方法会用到该URL;
4、如果Spring的ws 方法参数有通用类型如Object会导致序列化/反序列化去错,必须参数和返回类型保证为POJO对象或基本数据类型。

5、AXIS2有一些不同之处,需注意AXIS2基于JDK6。


本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/584466




相关文章
|
2月前
|
数据可视化 图形学 UED
从模型托管到交互开发:DataV 如何简化三维 Web 应用构建?
从模型托管到交互开发:DataV 如何简化三维 Web 应用构建?
|
3月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
113 20
|
4月前
|
存储 NoSQL Java
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
115 21
|
3月前
|
安全 Linux 开发工具
零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
OpenIM 为开发者提供开源即时通讯 SDK,作为 Twilio、Sendbird 等云服务的替代方案。借助 OpenIM,开发者可以构建安全可靠的即时通讯应用,如 WeChat、Zoom、Slack 等。 本仓库基于开源版 OpenIM SDK 开发,提供了一款基于 Electron 的即时通讯应用。您可以使用此应用程序作为 OpenIM SDK 的参考实现。本项目同时引用了 @openim/electron-client-sdk 和 @openim/wasm-client-sdk,分别为 Electron 版本和 Web 版本的 SDK,可以同时构建 PC Web 程序和桌面应用(Wi
166 2
|
3月前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
56 0
|
5月前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
5月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
318 5
|
6月前
|
监控 前端开发 JavaScript
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
122 6
|
6月前
|
存储 消息中间件 缓存
构建互联网高性能WEB系统经验总结
如何构建一个优秀的高性能、高可靠的应用系统对每一个开发者至关重要
59 2
|
12月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。