如何使用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与SOAP在网络上可以找到很多可学习的资源,本文将不对其作具体介绍。1.创建WSDL文件WSDL(Web Services Description Language)是一种基于IDL技术的服务描述语言。WSDL 定义了一套基于 XML的 语法,将Web服务描述为能够进行消息交换的服务访问点的集合,从而满足了这种需求。

pypy_lumin的专栏 2220

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

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

weixin_42522857的博客 781

大模型训练流程(四):PPO强化学习实战与调优指南

本文详细解析了大模型训练中PPO强化学习的实战应用与调优技巧,涵盖RLHF核心原理、PPO算法实现及显存优化策略。通过具体案例和代码示例,指导开发者有效提升模型回答质量与安全性,避免常见训练陷阱。

weixin_29051811的博客 437

axis开发webservice

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

weixin_33971130的博客 323

02-Cesium-实现天地图标记

首先天地图申请token,然后Cesium-实现天地图标记详细说明

m0_62785037的博客 1171

AXIS全攻略(SOAP)

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

Night In Forest 584

低速信号设计之 LPC 篇

摘要:LPC总线作为服务器低速信号设计的关键技术,在BIOS芯片连接、Super I/O芯片控制和嵌入式管理等方面发挥着重要作用。其采用33MHz时钟频率和4位并行传输机制,理论速率达16.5MB/s。设计时需重点关注布线长度(建议<10cm)、信号完整性(45°走线、合理层间隔离)和过孔优化等要点。典型应用案例表明,通过规范设计可确保在工业控制等复杂环境中稳定工作。LPC总线凭借低成本、低引脚数和良好兼容性,仍是服务器低速外设连接的重要解决方案。

qq_16237389的博客 1165

告别简陋行情!在Ubuntu24.04系统用Wine9.0跑同花顺远航版的全流程记录

本文详细记录了在Ubuntu 24.04系统上,通过Wine 9.0兼容层成功安装并流畅运行同花顺远航版的全过程。文章对比了该方案与官方简陋Linux原生版本的功能差异,重点解决了高分辨率屏幕下的字体与界面显示问题,并提供了关键配置调优与长期维护建议,为Linux用户提供了功能完备的专业金融行情解决方案。

weixin_29207533的博客 1074

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

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

成长是一个持续的过程 1376

CUDA详细安装及环境配置——环境配置指南 – CUDA+cuDNN+PyTorch 安装

本文详细介绍了如何确定显卡支持的CUDA版本、选择对应的cuDNN版本,并逐步安装CUDA、cuDNN和PyTorch。首先,通过命令行输入nvidia-smi.exe查看显卡支持的CUDA版本。接着,根据CUDA版本选择对应的cuDNN版本并下载。然后,从NVIDIA官方网站下载CUDA安装包,按照提示进行安装,并检查是否安装成功。同样地,下载cuDNN安装包,解压后将文件拷贝到CUDA安装目录中,并通过命令行验证安装是否成功。最后,根据PyTorch官网的指引,选择合适的安装命令进行PyTorch的安装

2501_90350274的博客 5098

【Axis】简介信息

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

美丽人生 218

STM8开发环境搭建(STVD + COSMIC)

一、STM8开发IDE 1. STVD + COSMIC ST Visual Develop (STVD)只支持汇编开发,C语言开发需要再安装COSMIC,配套起来使用。 2. IAR IAR也可以用来开发STM8 下面介绍STVD + COSMIC的搭建方式 二、环境搭建 1. STVD下载、安装 直接从官网下载:https://www.st.com/en/development-tools/stvd-stm8.html 安装很简单,基本下一步往下点。 2. COSMIC下载、安装 对于stm8可以使用3

a183635870的博客 1万+

北京大学MuMo多模态肿瘤分类模型复现与迁移学习

本项目复现了北京大学MuMo多模态肿瘤分类模型,并针对特定医学影像数据集进行迁移学习。MuMo模型通过整合CT、MRI、PET等多模态医学影像数据,显著提升了肿瘤分类准确性。项目内容包括环境配置(Python 3.8+、PyTorch 1.9+)、数据预处理(DICOM/NIfTI格式处理、强度归一化)、多模态数据集类实现,以及训练验证测试集划分。关键特点是采用MONAI医学影像处理库,实现三维医学影像的标准化预处理流程,并支持多种模态数据的并行加载与联合训练,为后续模型复现和迁移学习奠定基础。

max500600的博客 1241

Axis设置SOAP协议版本

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

dos_186的博客 2985

Y-Branch and a closed y-branch loop

双臂后面的区域,我们将它的双臂使用一个波导进行了连接,使得它本身形成了一个闭合回路,因此,该结构被称作。它们均是用来对经过它们的光束能量进行分割的一种器件。首先,我们知道一点,在光波导层面,今天给大家介绍一下,什么是。

u011699626的博客 630

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

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

我的世界我的梦 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Axis --SOAP引擎

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

bluenight专栏 1963

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

利用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、付费专栏及课程。

余额充值