`
jamesfork
  • 浏览: 32762 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

SOAP学习笔记

    博客分类:
  • java
阅读更多

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 RPC的工作流程如下图所示:

<!----><!----><!---->

搭建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

<o:p> </o:p>

创建基于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等属性。

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

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一样。

<o:p> </o:p>

分享到:
评论

相关推荐

    SOAP的Client调用Axis服务

    在"soap学习笔记(四)---Tomcat5下的Axis2开发Web Service应用实例_风平浪子_新浪博客.mht"这篇笔记中,可能会详细讲述如何在Tomcat服务器上部署和配置Axis2,以及如何创建和发布SOAP服务。读者可能能从中了解到...

    SOAP客户端用例

    接下来,`soap学习笔记(四)---Tomcat5下的Axis2开发Web Service应用实例_风平浪子_新浪博客.mht`文件可能是一个网页存档,详细介绍了在Tomcat5服务器上使用Axis2开发Web服务的过程。这包括安装配置Tomcat、部署...

    Web Service学习笔记

    在本学习笔记中,我们将深入探讨Web服务的核心概念、技术栈以及实际案例。 一、Web服务的核心概念 1. **SOAP (Simple Object Access Protocol)**:SOAP是一种基于XML的协议,用于交换结构化信息,是Web服务的基础...

    [Web Service学习笔记]第1篇 SOAP的HelloWord实例

    公司开会并分给我一个任务:写一个程序从福建移动的BOSS...这里面有两个关键字:XML、HTTP,再加上老大说用SOAP,我想这个BOSS系统和外界的信息交换技术也是基于SOAP实现的吧。于是我上网搜索了一些资料,始有此文。

    SOAPUI学习笔记(1-150页)

    当绑定到SOAP时,WSDL将定义如何通过SOAP消息进行通信。一端的WSDL可以支持多种绑定,比如绑定到SOAP协议,或者直接绑定到HTTP协议。 XMLSchema是用于描述XML文档结构的一种机制,它是DTD(文档类型定义)的继任者...

    webService学习笔记

    在本篇WebService学习笔记中,我们将探讨几个关键的概念和技术,包括SOAP协议、JAX-WS、WSDL文档以及一些常用的Web服务框架。 首先,SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境...

    Web Service学习笔记.doc

    WebService学习笔记 Web Service 是一种软件系统,为了支持跨网络的机器间相互操作交互而设计。它通常被定义为一组模块化的 API,它们可以通过网络进行调用,来执行远程系统的请求服务。在传统的程序编码中,存在...

    Parch 学习笔记系列(十七本)

    这个压缩包包含十七本详细的学习笔记,旨在帮助初学者和有一定经验的开发者深入理解这些关键的技术。 1. **CXF学习笔记**:CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)和RESTful应用程序。笔记会...

    学习笔记(T_SQL)

    学习笔记(T_SQL)总结的主要是关于T_SQL的一些语句的用法和作用以及一些新的内容包含在内

    WebService学习笔记0001

    【WebService学习笔记0001】 在IT领域,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的互操作性技术,它允许不同系统间的应用程序通过网络进行通信。本学习笔记将围绕WebService的核心概念、工作原理...

    javaEE学习笔记

    本学习笔记涵盖了JavaEE的核心技术,帮助学习者深入理解和掌握javaweb的各项技能。 1. **Servlet与JSP** - **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能。在JavaEE中,Servlet处理...

    webservice学习笔记doc文档

    在本学习笔记中,主要介绍了使用Apache Axis2框架来开发和测试Web Service的过程。Apache Axis2是Apache SOAP栈的一个实现,提供了简单且高效的Web Service开发工具。 首先,开发者需要在Eclipse集成开发环境中搭建...

    Flex学习笔记.rar

    本压缩包“Flex学习笔记.rar”显然是一份针对初学者的教程资料,旨在帮助新接触Flex的开发者快速上手。 在“FlexBeginner.pdf”这份文档中,你可以期待找到以下关键知识点: 1. **Flex概述**:介绍Flex技术的基本...

    PB9学习笔记

    - PB9的学习笔记通常包括基本概念、实例教程、问题解决策略等内容,旨在帮助初学者快速上手。 - 可以通过在线论坛、社区和官方文档获取更多的学习资源和解决方案。 10. **实践应用** - PB9广泛应用于金融、电信...

    WebService学习笔记

    【WebService学习笔记】 WebService是一种基于互联网的、标准化的、跨平台的、跨语言的通信机制,使得不同系统间的应用程序可以互相交互数据和服务。它的核心理念是服务导向架构(SOA),即通过服务的方式实现应用...

    Java-J2EE全部学习笔记 培训结构的学习资料

    这份"Java-J2EE全部学习笔记 培训结构的学习资料"涵盖了从基础到高级的Java编程和J2EE应用开发的知识点,对于想要深入理解Java EE技术的人来说是一份宝贵的资源。 1. **Java基础知识**:这部分可能包括Java语言的...

    spring2.0学习笔记

    本学习笔记旨在深入探讨Spring 2.0的核心特性,帮助开发者更好地理解和运用这个强大的框架。 1. **依赖注入(Dependency Injection, DI)**:Spring 2.0加强了DI,允许开发者通过XML配置或注解来管理对象间的依赖...

    MLDN李兴华视频教程学习笔记j2ee web.rar

    《MLDN李兴华视频教程学习笔记》是针对J2EE Web开发的一份详细学习资料,结合了李兴华老师的教学视频,旨在帮助学习者深入理解J2EE平台下的Web应用开发技术。J2EE(Java 2 Platform, Enterprise Edition)是Java语言...

    J2EE学习笔记 对学习非常有帮助

    **J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专门针对企业级应用开发。它提供了一个全面的框架来构建、部署和管理多层、分布式、跨平台的企业应用程序。J2EE学习笔记...

Global site tag (gtag.js) - Google Analytics