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服务
本文采用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。
创建基于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等属性。
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;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class HelloClient {
public static void main(String[] args) {
try{
String name="Guest";
String endpoint = "http://localhost:8080/axis/services/helloservice";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName(new QName("urn:helloservice","sayHello"));
String ret = (String)call.invoke(new Object[]{name});
System.out.println(ret);
}catch(Exception e){
e.printStackTrace();
}
}
}
除了在命令行调用SOAP RPC服务外,也可以直接通过:http://localhost:8080/axis/services/urn:helloservice?method=sayHello¶meter=test来调用,运行结果为:
<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>
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一样。
分享到:
相关推荐
#### 二、SOAP消息的构建模块 一条SOAP消息本质上是一个标准的XML文档,它由以下几个关键部分组成: 1. **必需的Envelope元素**:这个元素将XML文档标记为一条SOAP消息。 2. **可选的Header元素**:包含头部信息,...
#### 一、基础知识介绍 - **SOAP (Simple Object Access Protocol)**: 是一种轻量级协议,用于交换结构化的信息。它定义了用于构造消息以及进行信息传输的规则。SOAP消息通常使用XML格式编码。 - **WebService**: ...
本文档旨在详细介绍SOAP/JMS客户端与服务器组件如何利用此协议进行SOAP请求和响应消息的交互。 对于那些需要自定义实现客户端或服务器组件,并确保其能与IBM Web服务引擎提供的组件正常协同工作的客户而言,理解这...
这些二进制数据在通过SOAP发送时,会被转换成XML格式,便于在网络上传输。接收端再将接收到的XML数据解析回原始的二进制格式,用于更新设备或读取配置。 4. **安全性考虑**:由于涉及敏感的医疗数据,SOAP MML通信...
本文通过对gSOAP 2.7.10用户指南的解读,全面而深入地介绍了SOAP开发的相关知识和技术要点。对于希望深入了解SOAP协议及其开发实践的读者来说,这是一份宝贵的资源。无论是从理论还是实践的角度来看,都能为读者提供...
其二可以实现对发送的内容的加密能力。 Basic Function: 1.Script Creator通过解析WSDL方式生成脚本,对WSDL中定义的各类消息进行选择并生成所需要的消息内容 2.Script Creator通过在客户端监听网络通信方式...
简单介绍SOAP:一种基于XML的协议,用于在分布式环境中交换结构化信息 SOAP(Simple Object Access Protocol)是一种轻量级的、简单的、基于XML的协议,用于在分布式环境中交换结构化信息。它允许应用程序在不同...
在本文中,我们将详细介绍使用 Delphi 编写 SOAP 服务器与客户端程序的过程。SOAP(Simple Object Access Protocol)是一种基于 XML 的协议,用于在不同平台之间交换结构化的信息。Delphi 作为一款功能强大的开发...
本书是一本全面介绍如何使用SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(统一描述、发现与集成)标准来构建分布式Web应用的专业指南。 #### 二、Web服务概述 - **2.1 什么是Web服务?** - Web服务...
**Microsoft_Soap_Toolkit_PChome下载介绍.txt** 文件可能包含了关于SoapToolkit3.0在PCHome网站上发布的具体信息,包括下载说明、软件特性、系统要求等内容,对初次使用者来说是非常有用的资源。 总的来说,Soap...
#### 二、SOAP技术介绍 SOAP(Simple Object Access Protocol)是一种轻量级协议,用于交换结构化的和与平台无关的信息。SOAP消息通常被封装在XML文档中,并通过HTTP或SMTP等协议进行传输。SOAP具有良好的跨平台性...
本教程将详细介绍如何在Android应用中利用SOAP来获取并显示天气预报。 一、SOAP基础 SOAP是一种轻量级的消息协议,它的主要特点是基于XML,允许数据以自描述的方式传输。SOAP消息通常包含三个主要部分:Envelope、...
通过以上对SOAP的详细介绍,我们可以看到,尽管SOAP存在一定的复杂性和性能开销,但其标准化、安全性以及可扩展性等特点,使其在企业级应用中占据着不可替代的地位。随着技术的发展,虽然RESTful API等新的Web服务...
本文将详细讲解如何配置SOAP服务器以及生成WSDL(Web Services Description Language)文件,同时会提及如何编写生成WSDL文件的批处理命令,并介绍所需的相关包。 第一步:理解SOAP服务器配置 SOAP服务器是提供Web...
- "dsmp":这可能是dsmp库的源代码文件或者编译后的二进制文件,包含了SOAP协议的具体实现。如果它是源代码,可能包括头文件、实现文件以及相关的构建脚本。 综上所述,"dsmp.rar_c soap _dsmp_dsmpsync_soap"是一...
一、SOAP(Simple Object Access Protocol)协议介绍 SOAP,简单对象访问协议,是一种轻量级的、基于XML的协议,用于在Web服务中交换结构化和类型化的信息。SOAP允许应用程序通过HTTP等传输协议进行通信,使得不同...
本文将详细介绍如何利用CXF来打印SOAP报文以及记录WebService的日志。 #### 一、背景介绍 在实际开发过程中,对于WebService的请求和响应信息进行日志记录是非常必要的。这有助于我们在出现问题时能够快速定位问题...