如何使用axis构建SOAP应用程序
来源:互联网 发布:unity3d抗锯齿设置 编辑:程序博客网 时间:2024/05/24 05:17
本文档的所有源码:http://download.csdn.net/detail/feichenwangyalin/7911159
你可以根据将其中的SoapServer和SoapClient导入Eclipse,将axis放入tomcat的webapps中。
1.基本概念
1.1 SOAP的概念
SOAP即简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议。简单的说,SOAP也是web service的一种实现形式,是一个系统对外发布的一种服务,但其数据的交换形式是XML。
SOAP的三大重要的部件是:接口程序(即服务端代码)、WSDL(即web servicedescription language)、WSDD(web servicedeploy description),不是很清楚基本概念的读者可以先百度下这些基本概念。
1.2 为什么要使用SOAP
实现webservice的形式的有多重多样,而SOAP也只是实现接口的其中一种形式。首先我们得明白,我们的系统为什么要对外发布接口,就拿电信软件来说吧,我们知道一个电信运行商需要支撑其各种业务需要各种系统,虽然都是一个运行商,但其内的各个系统并不一定是一个软件厂家开发,比如BOSS(运营支撑系统)有A公司开发,而彩铃业务系统有B公司开发,某营销系统有C公司开发,虽然这些系统同属一个公司,但很明显A公司的BOSS系统得源码是不可能对其他系统开放的,因此这些系统之间的交互就需要通过相互调用接口来实现,而这个接口各个系统发布的接口包括HTTP接口、SOAP接口等等。
2.使用axis开发SOAP应用程序
2.1 axis简介
Axis是对Java官方提供的Javawebservice的一种封装,axis最大的优点在于可以根据服务端提供的wsdl直接生成客户端代码,作为调用者可以透明地调用服务端接口,就如同服务器端接口在本地一样。
2.2 服务端接口开发
下面我们将做一个实验,开发一个简单的接口,并描述如何通过ant脚本构建项目,生成服务器端接口代码、wsdl、wsdd以及客户端用jar包,这几个就是我们在1.1中提过的SOAP应用程序的四个要素。
构建过程如下图所示:
下面给出最为重要的build.xml源码,这个构建过程是完全按照上图的构建顺序进行构建的,其中有注解,读者可以查阅理解:
<?xml version="1.0"?><project name="SoapServer" basedir="."><!-- 定义各种路径 --><property name="srcDir" location="src" /><property name="outputDir" location="output" /><property name="classDir" location="output/classes" /><property name="jarDir" location="output/lib" /><property name="srcJarFile" location="${jarDir}/SoapServer.jar" /><property name="java2wsdlDir" location="output/wsdl" /><property name="genwsddDir" location="output/wsdd" /><property name="wsdl2javaDir" location="output/java" /><property name="wsdl2classDir" location="output/class" /><property name="wsdl2jarFile" location="${jarDir}/SoapServer_axis.jar" /><!-- 定义axis支持包 --><property name="axisHome" location="lib" /><property name="name" value="TestSoap" /><property name="version" value="1.0" /><property name="author" value="author:Martin" /><!-- 指定axis classpath --><path id="axis.classpath"><fileset dir="${axisHome}"><include name="**/*.jar" /></fileset></path><taskdef resource="axis-tasks.properties" classpathref="axis.classpath" /><!-- 一些基本信息--><echo message="----------- ${name} ${version} [${author}] ------------" /><!-- 文件目录初始化 --><target name="init"><delete dir="${outputDir}" /><delete dir="${classDir}" /><delete dir="${jarDir}" /><delete dir="${java2wsdlDir}" /><delete dir="${wsdl2javaDir}" /><delete dir="${wsdl2classDir}" /> <delete dir="${genwsddDir}" /><mkdir dir="${outputDir}" /><mkdir dir="${classDir}" /><mkdir dir="${jarDir}" /><mkdir dir="${java2wsdlDir}" /><mkdir dir="${genwsddDir}" /><mkdir dir="${wsdl2javaDir}" /><mkdir dir="${wsdl2classDir}" /></target><!-- 开始编译,生成classes文件 --><target name="compile" depends="init"><javac srcdir="${srcDir}" destdir="${classDir}" /></target><!-- 根据生成的classes, 打包生成jar --><target name="makeJar" depends="init,compile"><jar destfile="${srcJarFile}" basedir="${classDir}" /></target><!-- 生成wsdl --><target name="buildJava2Wsdl"><axis-java2wsdl classname="com.martin.intrefaces.SoapiSayHello" location="http://localhost:8080/axis/services/SoapiSayHello" namespace="http://intrefaces.martin.com" output="${java2wsdlDir}/SoapiSayHello.wsdl" style="RPC"><classpath><pathelement path="${classDir}" /></classpath></axis-java2wsdl></target><!-- 根据生成的wsdl生成对应的java代码以及wsdd文件 --><target name="buildWsdl2Java"><axis-wsdl2java all="true" url="${java2wsdlDir}\SoapiSayHello.wsdl" deployscope="Request" output="${wsdl2javaDir}" serverside="true" testcase="false" noimports="false" typemappingversion="1.2"></axis-wsdl2java><!-- 将生成的deploy.wsdd移动至指定位置,并重命名 --><move tofile="${genwsddDir}/SoapiSayHello.wsdd" file="${wsdl2javaDir}/com/martin/intrefaces/deploy.wsdd"></move></target><!-- 将wsdl生成的Java代码编译打包 --><target name="compileWsdl2Jar"><!--编译成class文件 --><javac srcdir="${wsdl2javaDir}" destdir="${wsdl2classDir}"><!-- 编译时 引用axis的jar包 --><classpath><fileset dir="${axisHome}"><include name="**/*.jar" /></fileset></classpath></javac><!--将class文件打包成jar --><jar destfile="${wsdl2jarFile}" basedir="${wsdl2classDir}" /></target></project>
构建完毕后,我们来查看构建出来的产物,如下图所示:
classes文件夹:server端接口编译后的class文件;
java文件夹:根据wsdl生成的客户端用Java代码;
class文件夹:客户端代码编译后的class文件;
lib文件夹:SoapServer_axis.jar为客户端调用接口的接口包,该包用于放置在客户端工程的引用包下;
SoapServer.jar为服务器端用的接口实现包,改包用于放置在axis下lib包下;
wsdl和wsdd包:生成的wsdl和wsdd文件
3.测试SOAP接口
注:本文提供的源码中已经做了如下步骤,你可以根据以下步骤来自己做测试
3.1部署接口
部署服务器端有两步:1 将对应的服务器端实现包放置在axis对应的lib下;
2 将生成的wsdd文件中的service节点的内容添加进axis的wsdd文件中,此时需要注意的是,需要手动将:
<parameter name="className"value="com.martin.intrefaces.SoapiSayHelloSoapBindingImpl"/>替换成:
<parameter name="className"value="com.martin.intrefaces.SoapiSayHello"/>
因为前者是axis生成时默认的类名,如果我们不是这么取名的,需要手动更改。
3.2 测试接口
1、首先我们访问如下地址,来查看服务是否发布成功:
http://ip:port/axis/servlet/AxisServlet,如果服务列表中存在SoapiSayHello服务,说明我们的服务发布成功了。
2、我们将构建出的SoapServer_axis.jar放入SoapClient工程中,并添加引用。
3、运行CientTester.java测试接口能不能请求成功。如果输出:“调用SOAP接口:hello, 丁祥勇, 返回码为:000000 “,那么说明接口调用成功了。
- 如何使用axis构建SOAP应用程序
- 如何使用Axis开发Webservice应用程序
- [SOAP] AXIS
- AXIS soap 检测工具使用的问题解决
- 使用SOAP开发WebService 服务--Axis解决方案
- crm使用soap发布应用程序
- 如何记录Axis 1.4 的WebService SOAP消息?
- 使用SOAP开发java web服务--Axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- [转]使用SOAP开发java web服务--Axis开发方案
- 使用soap开发java-web--axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- 使用AXIS进行webservice开发-添加SOAP Header
- 使用SOAP开发java web服务--Axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- java 使用Axis开发Webservice应用程序
- Axis --SOAP引擎
- scanf函数的返回值问题
- Unable to locate package错误解决办法
- 超级简单的 AngularJS 应用 —— 实时创建 vCard
- [腾讯笔试] 2015腾讯校园招聘笔试题(西安站)
- 面试题28 字符串的全排列
- 如何使用axis构建SOAP应用程序
- 121221
- 使用sar工具进行cpu/mem/io/network等性能分析
- WCF学习笔记—Overview
- 2015腾讯软开类笔试题(回忆版)
- 数据挖掘、数据分析、海量数据处理的面试题(总结july的博客)
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- cadence16.5中总线拓扑的设置方法
- Java反射机制研究