SOAP介绍
SOAP(Simple Object Access Protocol),即简单对象访问协议,是在分布式的环境中交换数据的简单协议,以XML作为数据传送语言。
SOAP有两种工作模式,一种是RPC(Remote Procedure Call),另一种是Message-Orientd。MO可以利用XML来交换结构更复杂的数据,通常以SMTP作为传输协议。
RPC模式的SOAP可以理解为这样一个开发协议:SOAP=RPC+HTTP+XML,具有以下特点:
采用HTTP作为通信协议,采用客户/服务模式;
RPC作为统一的远程方法调用途径;
传送的数据使用XML语言,允许服务提供者和客户经过防火墙在Internet上进行通信。
SOAP RPC的工作流程如下图所示:
<!----><!----><!---->
搭建SOAP服务
本文采用Apache-AXIS Web应用作为SOAP服务的容器,使用Tomcat作为Apache-AXIS web应用的容器。SOAP客户程序可以通过Apache-AXIS API来访问SOAP服务。
搭建环境需要的软件包括:
Tomcat、Apache AXIS、mail.jar、activation.jar、xerces.jar。3个jar文件可以在sun的网站上下载,Apache AXIS的下载网址为:http://apache.mirror.phpchina.com/ws/axis。
Apache-AXIS web应用:把axis下载解压后,在lib子目录下包含了AXIS的所有JAR文件,在其webapps子目录下有个axis子目录,这个目录是一个用于发布SOAP服务的Web应用,可以称之为Apache-AXIS web应用。
在Tomcat上发布Apache-AXIS Web应用的步骤如下:
1 把activation.jar、mail.jar、xerces.jar复制到tomcat主目录下的common/lib目录下;
2 把前述Apache-AXIS web应用(axis子目录)复制到tomcat主目录的webapps目录下。
3 通过访问http://localhost:8080/axis,选择”Validate”可以验证安装,不能出现error。
<o:p> </o:p>
创建基于RPC的SOAP服务
1 创建提供SOAP服务的java类:
Package mypack;
Public class HelloService{
Public String sayHello(String name){
Return “Hello”+name;
}
}
编译完成后,将类文件放到<TOMCAT_HOME>/webapps/axis/WEB-INF/classes/mypack下。
2 创建SOAP服务的发布描述符文件
Apache AXIS使用Web服务发布描述文件WSDD(Web Service Deployment Descriptor)来发布SOAP服务。以下是HelloService的发布描述符文件,名为deploy.wsdd:
<deployment name=”test” xmlns=”http://xml.apache.org/axis/wsdd”
xmlns:java=”http://xml.apache.org/axis/wsdd/providers/java”>
<service name=”urn:helloservice” provider=”java:RPC”>
<parameter name=”className” value=”mypack.HelloService”/>
<parameter name=”allowedMethods” value=”sayHello”/>
</service>
</deployment>
以下是HelloService的删除WSDD文件,undeploy.wsdd文件:
<undeployment name=”test” xmlns=”http://xml.apache.org/axis/wsdd/”>
<service name=”urn:helloservice”/>
</undeployment>
注意:在上述描述符文件中,需要正确书写xmlns等属性。
<o:p> </o:p>
3 发布SOAP
有两种方式可以发布SOAP服务,命令行方式与web方式。在发布或删除SOAP服务时需要启动Tomcat。
发布命令:
Java org.apache.axis.client.AdminClient deploy.wsdd
删除命令:
Java org.apache.axis.client.AdminClient undeploy.wsdd
4 创建SOAP客户程序
SOAP RPC客户程序可以通过Apache AXIS API发出RPC请求,调用SOAP服务的方法,以下是访问前面发布的helloservice服务的sayHello方法的客户程序。
package Soap;<o:p></o:p>
import javax.xml.namespace.QName;<o:p></o:p>
import org.apache.axis.client.Call;<o:p></o:p>
import org.apache.axis.client.Service;<o:p></o:p>
public class HelloClient {<o:p></o:p>
public static void main(String[] args) {<o:p></o:p>
try{<o:p></o:p>
String name="Guest";<o:p></o:p>
<o:p></o:p>
String endpoint = "http://localhost:8080/axis/services/helloservice";<o:p></o:p>
Service service = new Service();<o:p></o:p>
Call call = (Call)service.createCall();<o:p></o:p>
call.setTargetEndpointAddress(endpoint);<o:p></o:p>
call.setOperationName(new QName("urn:helloservice","sayHello"));<o:p></o:p>
String ret = (String)call.invoke(new Object[]{name});<o:p></o:p>
System.out.println(ret);<o:p></o:p>
}catch(Exception e){<o:p></o:p>
e.printStackTrace();<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
除了在命令行调用SOAP RPC服务外,也可以直接通过:http://localhost:8080/axis/services/urn:helloservice?method=sayHello¶meter=test来调用,运行结果为:<o:p></o:p>
<soapenv:Envelope>
−
<soapenv:Body>
−
<sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sayHelloReturn xsi:type="soapenc:string">Hellozhoulb</sayHelloReturn>
</sayHelloResponse>
</soapenv:Body>
</soapenv:Envelope>
<o:p> </o:p>
5 发布JWS服务
JWS即Java Web Service 。将Java源文件改扩展名为jws,然后复制到<CATALINA_HOME>/webapps/axis目录下,AXIS会自动编译JWS文件,并把它加入到JWS服务中。
在本例中,可以把HelloService.java改名为HelloService.jws(需要去掉package,使用默认的包),再把改后的文件放在<CATALINA_HOME>/webapps/axis,然后可以通过URL:http://localhost:8080/axis/HelloService.jws?method=sayHello¶meter=test来访问该服务,得到的结果与步骤4一样。
<o:p> </o:p>
分享到:
相关推荐
在"soap学习笔记(四)---Tomcat5下的Axis2开发Web Service应用实例_风平浪子_新浪博客.mht"这篇笔记中,可能会详细讲述如何在Tomcat服务器上部署和配置Axis2,以及如何创建和发布SOAP服务。读者可能能从中了解到...
接下来,`soap学习笔记(四)---Tomcat5下的Axis2开发Web Service应用实例_风平浪子_新浪博客.mht`文件可能是一个网页存档,详细介绍了在Tomcat5服务器上使用Axis2开发Web服务的过程。这包括安装配置Tomcat、部署...
在本学习笔记中,我们将深入探讨Web服务的核心概念、技术栈以及实际案例。 一、Web服务的核心概念 1. **SOAP (Simple Object Access Protocol)**:SOAP是一种基于XML的协议,用于交换结构化信息,是Web服务的基础...
公司开会并分给我一个任务:写一个程序从福建移动的BOSS...这里面有两个关键字:XML、HTTP,再加上老大说用SOAP,我想这个BOSS系统和外界的信息交换技术也是基于SOAP实现的吧。于是我上网搜索了一些资料,始有此文。
当绑定到SOAP时,WSDL将定义如何通过SOAP消息进行通信。一端的WSDL可以支持多种绑定,比如绑定到SOAP协议,或者直接绑定到HTTP协议。 XMLSchema是用于描述XML文档结构的一种机制,它是DTD(文档类型定义)的继任者...
在本篇WebService学习笔记中,我们将探讨几个关键的概念和技术,包括SOAP协议、JAX-WS、WSDL文档以及一些常用的Web服务框架。 首先,SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境...
WebService学习笔记 Web Service 是一种软件系统,为了支持跨网络的机器间相互操作交互而设计。它通常被定义为一组模块化的 API,它们可以通过网络进行调用,来执行远程系统的请求服务。在传统的程序编码中,存在...
这个压缩包包含十七本详细的学习笔记,旨在帮助初学者和有一定经验的开发者深入理解这些关键的技术。 1. **CXF学习笔记**:CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)和RESTful应用程序。笔记会...
学习笔记(T_SQL)总结的主要是关于T_SQL的一些语句的用法和作用以及一些新的内容包含在内
【WebService学习笔记0001】 在IT领域,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的互操作性技术,它允许不同系统间的应用程序通过网络进行通信。本学习笔记将围绕WebService的核心概念、工作原理...
本学习笔记涵盖了JavaEE的核心技术,帮助学习者深入理解和掌握javaweb的各项技能。 1. **Servlet与JSP** - **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能。在JavaEE中,Servlet处理...
在本学习笔记中,主要介绍了使用Apache Axis2框架来开发和测试Web Service的过程。Apache Axis2是Apache SOAP栈的一个实现,提供了简单且高效的Web Service开发工具。 首先,开发者需要在Eclipse集成开发环境中搭建...
本压缩包“Flex学习笔记.rar”显然是一份针对初学者的教程资料,旨在帮助新接触Flex的开发者快速上手。 在“FlexBeginner.pdf”这份文档中,你可以期待找到以下关键知识点: 1. **Flex概述**:介绍Flex技术的基本...
- PB9的学习笔记通常包括基本概念、实例教程、问题解决策略等内容,旨在帮助初学者快速上手。 - 可以通过在线论坛、社区和官方文档获取更多的学习资源和解决方案。 10. **实践应用** - PB9广泛应用于金融、电信...
【WebService学习笔记】 WebService是一种基于互联网的、标准化的、跨平台的、跨语言的通信机制,使得不同系统间的应用程序可以互相交互数据和服务。它的核心理念是服务导向架构(SOA),即通过服务的方式实现应用...
这份"Java-J2EE全部学习笔记 培训结构的学习资料"涵盖了从基础到高级的Java编程和J2EE应用开发的知识点,对于想要深入理解Java EE技术的人来说是一份宝贵的资源。 1. **Java基础知识**:这部分可能包括Java语言的...
本学习笔记旨在深入探讨Spring 2.0的核心特性,帮助开发者更好地理解和运用这个强大的框架。 1. **依赖注入(Dependency Injection, DI)**:Spring 2.0加强了DI,允许开发者通过XML配置或注解来管理对象间的依赖...
《MLDN李兴华视频教程学习笔记》是针对J2EE Web开发的一份详细学习资料,结合了李兴华老师的教学视频,旨在帮助学习者深入理解J2EE平台下的Web应用开发技术。J2EE(Java 2 Platform, Enterprise Edition)是Java语言...
**J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专门针对企业级应用开发。它提供了一个全面的框架来构建、部署和管理多层、分布式、跨平台的企业应用程序。J2EE学习笔记...