如何用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




相关文章
|
5天前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
|
15天前
|
编解码 前端开发 JavaScript
构建高效响应式Web界面:现代前端框架的比较
【4月更文挑战第9天】在移动设备和多样屏幕尺寸盛行的时代,构建能够适应不同视口的响应式Web界面变得至关重要。本文深入探讨了几种流行的前端框架——Bootstrap、Foundation和Tailwind CSS,分析它们在创建响应式设计中的优势与局限。通过对比这些框架的栅格系统、组件库和定制化能力,开发者可以更好地理解如何选择合适的工具来优化前端开发流程,并最终实现高性能、跨平台兼容的用户界面。
|
16天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
146 0
|
6天前
|
JSON Java fastjson
Spring Boot 底层级探索系列 04 - Web 开发(2)
Spring Boot 底层级探索系列 04 - Web 开发(2)
15 0
|
10天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
13天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
21天前
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox与Grid布局的深度对比
【4月更文挑战第4天】 在现代前端开发中,构建灵活且响应式的用户界面是至关重要的。随着移动设备浏览量的增加,能够适应不同屏幕尺寸和分辨率的布局技术变得必不可少。Flexbox和Grid是CSS提供的两种强大的布局机制,它们各自以独特的方式解决了响应式设计的挑战。本文将深入探讨Flexbox和Grid的核心概念、使用场景和性能考量,为开发者提供在面对不同布局需求时做出明智选择的依据。
|
22天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
23天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。