如何使用axis构建SOAP应用程序

webservice soap协议 JAX-WS提供了一组用于开发SOAP协议的Web服务的API,可以轻松地创建和部署SOAP Web服务。总的来说,JAX-WS和Axis是用于开发SOAP协议的Web服务的工具和框架,它们可以与HTTP+SOAP协议一起使用,以实现在Web服务中进行结构化的信息交换。HTTP+SOAP:HTTP+SOAP是一种基于HTTP协议的SOAP Web服务。当您使用 JAX-WS 构建 Web 服务时,您实际上是在使用 SOAP 协议,因为 JAX-WS 是 SOAP 协议的一种 Java 实现。 阅读详情

本文档的所有源码:http://download.youkuaiyun.com/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调用Webservice添加SoupHeader Axis全称Apache eXtensible Interaction System,是apache组织下的一个开源项目,用来做webservice开发的,有java版的实现,也有c++版的实现,其前身最早是IBM的SOAP4J,后来捐给Apache后改名Apache SOAP,也就是支持SOAP1.1的那个版本,到现在的AXIS已经是第三代了,AXIS对Apache SOAP的改进有很多,比如用SAX代替以前的DOM,增加对WSDL的支持,支持SOAP1.2等等。Body元素由特定于消息的数据构成。 阅读详情

相关推荐

构建基于Apache Axis1.3的SOAP应用程序

Apache Axis1.3是一个成熟的SOAP(Simple Object Access Protocol)引擎,它允许开发者创建、部署和管理基于SOAP的Web服务。Axis1.3支持Java和C++等语言开发,并且能够处理复杂的通信模式,如异步通信和单向消息传输。它的模块化设计允许轻松集成其他协议,如REST、XML-RPC等。本章将详细介绍Axis1.3的核心概念,帮助开发者理解其工作原理。Axis1.3的架构由多个组件构成,主要分为客户端组件、服务器端组件和服务组件。

weixin_35459464的博客 794

基于AXIS的WebService编程

一、服务端代码 1.需要引入axis的相关包 2、在web.xml中配置axis的servlet <servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet&...

Sw_479的博客 829

Axis框架入门教程:构建和部署SOAP Web服务

本文还有配套的精品资源,点击获取 简介:本文档详细介绍了Axis框架,一款Apache旗下的开源工具,用于构建和部署基于SOAP的Web服务。内容包括Axis的核心概念、安装与配置、Web服务的创建与调用流程,以及数据绑定和安全性等技术细节。本文档旨在为Web服务开发人员提供全面的学习和实践指导,以熟练掌握Axis框架并构建高效、安全的Web服务系统。 1. Ax...

weixin_42583683的博客 1833

axis开发webservice

摘要:本节主要用于介绍使用axis开发webservice,包括服务端的创建、webservice的部署、客户端的调用。preparation:说明:相关的可能要了解SOAP(简单对象访问协议)、WSDL(web服务描述语言)、XML(可扩展标记语言)、axis(阿帕奇可扩展交互系统)等相关知识。1.下载axis的jar包,请到apache官网或者在百度自行下载,然后导入ja...

weixin_33971130的博客 323

基于AXIS与CXF的SOAP接口开发实战指南

WSDL 的一个重要设计理念是“分离抽象与实现”,即先定义服务做什么(what),再决定怎么做(how)。这种分层解耦使得同一服务可以在不同协议下暴露,例如同时支持 SOAP 和 REST。首先需要定义服务接口(SEI)和实现类(SIB)。这是JAX-WS的基本范式,也是生成WSDL文档的基础。// SEI 接口// SIB 实现类@Autowired@Override逻辑分析明确指定PortType名称;防止命名空间冲突,应与公司域名反写对应;

weixin_42522857的博客 781

从传统扫描到SSN:Tessent数据包技术如何减少90%测试时间

本文深入探讨了Tessent流式扫描网络(SSN)如何通过其核心的数据包技术,彻底改变芯片测试范式。该技术将测试数据封装成标准化数据包,在共享总线上进行智能路由与分发,实现了动态带宽分配与核心独立测试,从而将复杂SoC(如AI芯片)的总体测试时间大幅削减90%,并显著提升测试灵活性与可扩展性。

meat5的博客 490

Axis实现的WebService创建傻瓜教程

Axis实现的WebService创建傻瓜教程关于WebService与SOAP在网络上可以找到很多可学习的资源,本文将不对其作具体介绍。1.创建WSDL文件WSDL(Web Services Description Language)是一种基于IDL技术的服务描述语言。WSDL 定义了一套基于 XML的 语法,将Web服务描述为能够进行消息交换的服务访问点的集合,从而满足了这种需求。

pypy_lumin的专栏 2220

Transformer时序预测避坑指南:TFT在风电场的5个实战经验

本文分享了Temporal Fusion Transformer在风电场功率预测中的五个实战经验,涵盖数据预处理、模型调优、显存优化、注意力机制解读及在线部署。针对风电数据噪声大、概念漂移等挑战,提供了从构建数据质量标签到高效超参调优的具体方案,并强调利用Transformer架构的可解释性进行业务洞察,助力实现稳健的工业级时序预测。

bert9linguist的博客 462

AXIS全攻略(SOAP)

一:  Axis简介1. 什么是SOAPSimple Object Access Protocol (SOAP)SOA 面向服务体系结构设计 图 1. 简单的 SOAP 消息处理 引用 SOAP 提供一种简单的、可扩展并且功能丰富的 XML 消息处理框架,用于定义高级别的应用程序协议,从而在分布式异构环境中提供更高的互操作性。 ——微软的解释SOAP是一个基于XML的用于应用程序之间通信数据...

Night In Forest 584

保姆级教程:用NodeMediaClient在Android实现RTMP拉流播放(附避坑指南)

本文提供了一份详尽的Android平台RTMP拉流播放实现与深度调优指南。重点介绍了如何使用NodeMediaClient库进行集成,并针对视频卡顿、花屏等常见问题,从渲染引擎选择(SurfaceView与TextureView)、解码策略、缓冲区优化到高级网络自适应等方面提供了实战解决方案与避坑技巧。

weixin_29261711的博客 440

别再只盯着照片了!手把手教你用Python提取大疆照片里的GPS、姿态和RTK数据

本文详细介绍了如何使用Python提取大疆照片中的GPS、姿态和RTK数据,帮助用户解锁无人机拍摄照片中的隐藏元数据。通过实战代码示例,展示了如何解析EXIF格式的定位、姿态和RTK状态信息,并实现批量处理与数据分析,适用于测绘、农业巡检等专业领域。

weixin_30790841的博客 153

了解 Web 服务规范: 第 1 部分:SOAP

开始之前 本系列教程将说明构建一家假想的报社 Daily Moon 的基于 Web 访问的工作流系统的详细步骤。主要针对的是希望了解有关 Web 服务的更多信息的开发人员,以便他们能更为高效地创建应用程序。非技术用户也可以从中获得一些好处,因为在讨论如何编程前对相关概念进行了解释。 您应该具有基本编程知识,如果希望按照实际编程示例进行操作,还需要一定的 Java 知识。我们将讨论 XM

成长是一个持续的过程 1376

手把手教你用野火FPGA开发板资料包安装ModelSim 10.5se(附破解教程)

本文提供了一份详细的指南,手把手教你为野火FPGA开发板安装和配置ModelSim 10.5se仿真工具。内容涵盖从前期准备、软件安装、许可证激活(学习用途)到环境验证的全过程,并简要介绍了如何与Xilinx Vivado开发套件集成,帮助初学者快速搭建稳定的FPGA仿真环境。

lstm7chronicler的博客 250

【Axis】简介信息

Apache Axis 是Apache WebService项目中的子项目,其最初起源于IBM的"SOAP4J",应该属于最早的一批用于构造基于SOAP应用的Framework。 目前Apache Axis已经发展到了第三代,其核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。事实上Apache Axis在了1.0版后,其发行版本还包括了完整的J2EE服务...

美丽人生 218

[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记

最近开始学习网络安全相关知识,接触了好多新术语,感觉自己要学习的东西太多,真是学无止境,也发现了好几个默默无闻写着博客、做着开源的大神。接下来系统分享一些网络安全的自学笔记,希望读者们喜欢。 上一篇文章分享了看雪Web安全总结知识和一个异或解密的示例,本篇文章着重讲解Chrome浏览器保留密码功能渗透解析及登录加密入门笔记,结合实际例子一步步实现浏览器漏洞的挖掘。非常基础的文章,希望对入门的博友们有帮助,大神请飘过,谢谢各位看官!

杨秀璋的专栏 2万+

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 241

Axis设置SOAP协议版本

现在Axis、Axis2都是同时支持SOAP1.1和SOAP1.2的。即在服务器端发布一个WebService服务之后,客户端既可以通过SOAP1.1版本来访问服务器的服务,也可以通过SOAP1.2版本来访问服务器的服务。     如果客户端不指定SOAP版本,则无论是用Axis还是Axis2编写的客户端,默认使用的都是SOAP1.1版本,如果某个服务端仅支持SOAP1.2的,则在服务的交互

dos_186的博客 2985

QProgressBar:常用接口、样式表及自定义进度条实现

在Qt开发中,QProgressBar 是一个非常常用的控件,用于显示任务的进度。无论是文件下载、数据处理还是其他耗时操作,QProgressBar 都能直观地展示当前进度。本文将详细介绍QProgressBar 的使用方法,包括常用接口、样式表设置,并额外补充一个自定义进度条的C++实现。

u011186532的专栏 1012

SOAP与AXIS2入门教程(附带实例)

最近项目需要用到SOAP以及AXIS2的知识,在学习之余,将第一天学到的内容整理了一下,一来做为笔记做个记录,二来如果有需要的,可以做为参考,今天主要是完成了一下功能,通过一个SOAP请求消息(可以自己构造也可以通过指定一个xml文件),然后在Web Service中获取这个SOAP请求消息(一个OMElement对象),通过解析这个对象,获取需要的信息,然后对这些信息进行业务处理,最后返回一个S

我的世界我的梦 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

使用AXIS进行webservice开发-添加SOAP Header

webservice作为SOAP思想的核心,早已经广泛的应用了,但是仍然有很多人不了解webservice,甚至是没听过。WebService是B2B集成成功的关键,用WebService来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为WebService,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。使用a

左国党的优快云博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Axis --SOAP引擎

   1.  SOAP是一个基于XML的用于应用程序之间通信数据编码的传输协议。最初由微软和Userland Software提出,随着不断地完善和改进,SOAP很快被业界广泛应用,目前完全发布版本是1.1。在其发展过程中,W3C XML标准工作小组积极促成SOAP成为一个真正的开放标准。在写作此文档之时,SOAP1.2草案已经发布,1.2对1.1中相对混乱的部分做了改进。

bluenight专栏 1963

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

利用Axis实现基于SOAP的Web Service

简介这是一篇用Java不到2周的新手写的关于利用Axis实现基于SOAP的Web Service的纪实性文章,里面不敢介绍什么SOAP,Axis,Web Service之类的理论知识,因为我至今还不是很懂这些,其中涉及到的你可能感兴趣的问题是:   1.如何用JBuilder 9写Web Service的服务器端和客户端;   2.如何发布Web Service;   3.如何解决Web Serv

波波熊的专栏 1647

Axis2關於SOAP1.1和SOAP1.2

Axis2使用的SOAP默認版本是SOAP1.1,所以如果要使用SOAP1.2最後也會試圖將其轉換為SOAP1.1的格式,而一旦此時出現版本衝突就會發生異常。 解決方法: 在客戶端設置使用的SOAP版本,通過以下方法: Options options = new Options(); options.setSoapVersionURI(SOAP12Constants.SOAP_ENVE

yuan_yuan_0000的专栏 2526
上一篇: 在mysql workbench中建立存储过程
下一篇: Java实现Socket长连接和短连接
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值