`
天空之城
  • 浏览: 404892 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SOAP介绍【二】

    博客分类:
  • SOAP
阅读更多

 

SOAP(Simple Object Access Protocol),即简单对象访问协议,是在分布式的环境中交换数据的简单协议,以XML作为数据传送语言。

SOAP有两种工作模式,一种是RPC(Remote Procedure Call),另一种是Message-OrientdMO可以利用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服务。

搭建环境需要的软件包括:

TomcatApache AXISmail.jaractivation.jarxerces.jar3jar文件可以在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.jarmail.jarxerces.jar复制到tomcat主目录下的common/lib目录下;

2 把前述Apache-AXIS web应用(axis子目录)复制到tomcat主目录的webapps目录下。

3 通过访问http://localhost:8080/axis,选择”Validate”可以验证安装,不能出现error

 

创建基于RPCSOAP服务

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&parameter=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服务

JWSJava 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&parameter=test来访问该服务,得到的结果与步骤4一样。

分享到:
评论

相关推荐

    介绍Soap基本语法

    #### 二、SOAP消息的构建模块 一条SOAP消息本质上是一个标准的XML文档,它由以下几个关键部分组成: 1. **必需的Envelope元素**:这个元素将XML文档标记为一条SOAP消息。 2. **可选的Header元素**:包含头部信息,...

    VB.NET/JAVA 采用SOAP 与Webservice发送/接收数据

    #### 一、基础知识介绍 - **SOAP (Simple Object Access Protocol)**: 是一种轻量级协议,用于交换结构化的信息。它定义了用于构造消息以及进行信息传输的规则。SOAP消息通常使用XML格式编码。 - **WebService**: ...

    SOAP over JMS Protocal

    本文档旨在详细介绍SOAP/JMS客户端与服务器组件如何利用此协议进行SOAP请求和响应消息的交互。 对于那些需要自定义实现客户端或服务器组件,并确保其能与IBM Web服务引擎提供的组件正常协同工作的客户而言,理解这...

    SOAP MML BIN(下).rar

    这些二进制数据在通过SOAP发送时,会被转换成XML格式,便于在网络上传输。接收端再将接收到的XML数据解析回原始的二进制格式,用于更新设备或读取配置。 4. **安全性考虑**:由于涉及敏感的医疗数据,SOAP MML通信...

    soap文档

    本文通过对gSOAP 2.7.10用户指南的解读,全面而深入地介绍了SOAP开发的相关知识和技术要点。对于希望深入了解SOAP协议及其开发实践的读者来说,这是一份宝贵的资源。无论是从理论还是实践的角度来看,都能为读者提供...

    SOAP Performer 0.1演示及介绍

    其二可以实现对发送的内容的加密能力。 Basic Function: 1.Script Creator通过解析WSDL方式生成脚本,对WSDL中定义的各类消息进行选择并生成所需要的消息内容 2.Script Creator通过在客户端监听网络通信方式...

    简单介绍soap

    简单介绍SOAP:一种基于XML的协议,用于在分布式环境中交换结构化信息 SOAP(Simple Object Access Protocol)是一种轻量级的、简单的、基于XML的协议,用于在分布式环境中交换结构化信息。它允许应用程序在不同...

    Delphi编写soap服务器与客户端程序

    在本文中,我们将详细介绍使用 Delphi 编写 SOAP 服务器与客户端程序的过程。SOAP(Simple Object Access Protocol)是一种基于 XML 的协议,用于在不同平台之间交换结构化的信息。Delphi 作为一款功能强大的开发...

    programming web service with soap

    本书是一本全面介绍如何使用SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(统一描述、发现与集成)标准来构建分布式Web应用的专业指南。 #### 二、Web服务概述 - **2.1 什么是Web服务?** - Web服务...

    SoapToolkit3.0

    **Microsoft_Soap_Toolkit_PChome下载介绍.txt** 文件可能包含了关于SoapToolkit3.0在PCHome网站上发布的具体信息,包括下载说明、软件特性、系统要求等内容,对初次使用者来说是非常有用的资源。 总的来说,Soap...

    axis2 soap技术

    #### 二、SOAP技术介绍 SOAP(Simple Object Access Protocol)是一种轻量级协议,用于交换结构化的和与平台无关的信息。SOAP消息通常被封装在XML文档中,并通过HTTP或SMTP等协议进行传输。SOAP具有良好的跨平台性...

    android利用SOAP实现天气预报

    本教程将详细介绍如何在Android应用中利用SOAP来获取并显示天气预报。 一、SOAP基础 SOAP是一种轻量级的消息协议,它的主要特点是基于XML,允许数据以自描述的方式传输。SOAP消息通常包含三个主要部分:Envelope、...

    SOAP学习手册-豆丁网上花币下载的

    通过以上对SOAP的详细介绍,我们可以看到,尽管SOAP存在一定的复杂性和性能开销,但其标准化、安全性以及可扩展性等特点,使其在企业级应用中占据着不可替代的地位。随着技术的发展,虽然RESTful API等新的Web服务...

    soap服务器配制和WSDL文件的生成,生成WSDL文件的bat命令的编写,加soap相关的包

    本文将详细讲解如何配置SOAP服务器以及生成WSDL(Web Services Description Language)文件,同时会提及如何编写生成WSDL文件的批处理命令,并介绍所需的相关包。 第一步:理解SOAP服务器配置 SOAP服务器是提供Web...

    dsmp.rar_c soap _dsmp_dsmpsync_soap

    - "dsmp":这可能是dsmp库的源代码文件或者编译后的二进制文件,包含了SOAP协议的具体实现。如果它是源代码,可能包括头文件、实现文件以及相关的构建脚本。 综上所述,"dsmp.rar_c soap _dsmp_dsmpsync_soap"是一...

    基于SOAP的一卡通充值查询系统(axis2)

    一、SOAP(Simple Object Access Protocol)协议介绍 SOAP,简单对象访问协议,是一种轻量级的、基于XML的协议,用于在Web服务中交换结构化和类型化的信息。SOAP允许应用程序通过HTTP等传输协议进行通信,使得不同...

    CXF打印SOAP报文,记录WebService日志

    本文将详细介绍如何利用CXF来打印SOAP报文以及记录WebService的日志。 #### 一、背景介绍 在实际开发过程中,对于WebService的请求和响应信息进行日志记录是非常必要的。这有助于我们在出现问题时能够快速定位问题...

Global site tag (gtag.js) - Google Analytics