`
newleague
  • 浏览: 1492494 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

传智播客-web service(5)-利用axis开发WS应用

 
阅读更多
Axis 1、再说soap。 前文说过,soap是基于xml的通信协议和编码格式以便用于应用程序间通信。最初是由微软和userland构思,已经历了几代的发展,当前是soap1.2,尽管版本1.1很普遍。W3C的xml协议工作组负责这一规范。 soap被广泛认为是跨平台、跨语言分布式计算应用的新一代支撑. web services是一种技术方案,而在这个方案中用得最广泛的技术实现就是soap。 2、什么是axis呢? axis本质上是soap引擎,是soap第三代产品(始于ibm的soap4j),是web service方案中解析xml的引擎,一个用于构建soap处理器比如客户端、服务器端、网关等等的框架。当前的版本是用java写的,axis客户端的c++实现正在开发中。Axis不只是soap引擎,它还包括: (1)简单的独立服务器; (2)可以插入到servlet引擎(比如tomcat)中的服务器; (3)Wsdl的扩展支持; (4)从wsdl生成java类; (5)一些样例程序; (6)监控tcp/ip包的工具; 通常xml解析有两种机制:SAX和DOM。SAX的xml解析方式基于事件,一次加载--加载过程依次触发节点事件、元素事件,在事件处理中可以加入业务逻辑代码;DOM则是基于(DOM)对象,两次加载--第一次加载xml文件,第二次遍历文件生成DOM树。axis的底层xml解析机制采用的是SAX,所以灵活高效。 虽然可以自行开发解析xml的代码,但是很麻烦,而且要关注细节,所以一般面向对象的开发很少会自行开发xml解析代码,而都是利用诸如axis这样的框架。譬如有些开发会用到dom4j这样的xml解析工具包。 采用Axis方式开发WS客户端 1、既然axis是框架,所以第一步是下载该框架包。然后可以将该包webapps目录下的axis项目拷到tomcat的webapps目录下,可以从IE中访问,先睹为快,具体操作步骤请参见前文。 2、将该项目lib包内的jar文件拷到新建的axisclient项目lib目录下,设为类路径。这里新建的项目为一般的java项目即可。然后编写如下示例代码: public class App { public static void main(String[] args) throws Exception { Service service = new Service(); Call call = (Call) service.createCall(); //设置调用的目标终端地址 String url = "http://localhost:8888/axis/EchoHeaders.jws"; call.setTargetEndpointAddress(new URL(url)); //设置调用的操作名称 call.setOperationName("echo"); //调用服务(参数是对象数组) Object o = call.invoke(new Object[]{"tom"}); System.out.println(o);//打印的结果即"tom" } } 上述代码表示一个客户端访问axis服务,服务的请求地址为url--当然是部署好axis项目后才能有这个地址,在java中,echo可视为EchoHeaders服务对外开放的一个方法,这个方法的定义是返回传入的参数。再通过web service explorer或TCP/IP Monitor查看请求响应的数据。 参数在上述代码运行后的xml数据中为<arg0 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="soapenc:string">tom</arg0>,很显然参数名“arg0”的可读性很差。可以在调用invoke方法之前加入下列代码更改: //设置xml文档中的消息的元素名称 call.addParameter("name", Constants.XSD_STRING, ParameterMode.IN); xml文档中的参数即表示为<name xsi:type="xsd:string">tom</name>。里面的“XSD”表明采用的schema方式规定xml结构,因为XSD比DTD表达更丰富--最起码它可以定义数据类型,DTD就不可以。 也可以设置返回类型(还是在invoke方法调用前):call.setReturnType(Constants.XSD_STRING)。 3、所有远程调用的最底层机制肯定都是socket。可以通过org.apache.axis.transport.http.HTTPSender类的源码看到axis是如何运用socket机制创建连接,发送和接收输入(InputStream)输出(OutputStream)流以及如何生成请求响应数据信息的具体过程。
分享到:
评论

相关推荐

    axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2

    总结来说,"axis2-eclipse-codegen-plugin-1.6.2"和"axis2-eclipse-service-plugin-1.6.2"是针对Apache Axis2的Eclipse插件,旨在简化基于Axis2的Web服务开发。通过它们,开发者可以高效地生成和部署服务,同时享受...

    axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard

    共四个文件,都是最先版的,希望可以帮助大家。axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard和axis2-1.6.1-bin和axis2-1.6.1-war

    axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip

    标题中的"axis2-eclipse-codegen-plugin-1.6.2.zip"和"axis2-eclipse-service-plugin-1.6.2.zip"是两个与Apache Axis2相关的Eclipse插件,用于简化Web服务的开发过程。Apache Axis2是Java平台上一个成熟的Web服务...

    axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_

    plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境(IDE)中支持Axis2服务...

    axis2-eclipse-service与axis2-eclipse-codegen插件

    目前axis2最高版本是2.0以上的版本,但是eclipse和myeclipse都不支持,无奈只能使用低版本的插件1.6.3;经实验,可以安装成功;...axis2-eclipse-service-plugin-1.6.3.zip axis2-eclipse-codegen-plugin-1.6.3.zip

    基于java的开发源码-Web服务框架 Apache Axis.zip

    基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的开发源码-Web服务框架 Apache Axis.zip 基于java的...

    axis2-eclipse-codegen-plugin-1.6.2+axis2-eclipse-service-plugin-1.6.2

    Eclipse Codegen Plugin 和 Service Plugin 是Axis2为Eclipse集成开发环境提供的两个重要工具,它们极大地简化了基于Axis2的Web服务开发过程。 **Apache Axis2 Eclipse Codegen Plugin** 这个插件主要用于自动生成...

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    Apache Axis2是著名的开源Web服务框架,用于构建和部署高效且灵活的Web服务。这个框架是基于Axis1的升级版,提供了许多改进和新特性,...理解这两个包的用途和内部结构对于有效利用Axis2来创建和部署Web服务至关重要。

    axis2-std-1.0-bin.zip与axis2.war

    Apache Axis2是基于Java的Web服务引擎,它用于创建和部署Web服务以及处理SOAP消息。在给定的信息中,我们关注的是"axis2-std-1.0-bin.zip"和"axis2.war"这两个文件。 1. **axis2-std-1.0-bin.zip**: 这是一个包含了...

    axis2-eclipse-codegen-plugin-1.6.0与axis2-eclipse-service-plugin-1.6.0

    axis2-eclipse-codegen-plugin-1.6.0和axis2-eclipse-service-plugin-1.6.0有关jar包下载,解压后直接将这两个jar包放到eclips下的plugins目录下,重启eclipse即可

    axis2-web

    "Axis2-Web"是Apache Axis2项目的Web应用程序部分,它是用于构建Web服务的一个强大而灵活的框架。Apache Axis2是Java平台上Web服务实现的核心引擎,它提供了高性能、可扩展性和模块化的设计。这个框架允许开发者创建...

    axis2c-bin-1.6.0 axis2c-src-1.6.0

    axis2c-bin-1.6.0-linux.tar.gz axis2c-bin-1.6.0-win32.zip axis2c-src-1.6.0.tar.gz axis2c-src-1.6.0.zip 加md5

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: --&gt;axis2-kernel-1.6.1.jar --&gt;axis2-spring-1.6.1.jar --&gt;axis2-transport-http-1.6.1.jar --&gt;XmlSchema-1.4.7.jar --&gt;wsdl4j-1.6.2.jar --&gt;axiom-api-1.2.12.jar --&gt;axiom...

    深入理解axis2-web service产生

    ### 深入理解Axis2与Web Service #### Web Service概览 随着互联网技术的不断发展,Web Service作为一种标准的应用间通信方式,逐渐被广大开发者所接受。它是一种以标准方式暴露应用程序功能的服务,使得不同平台...

    Axis开发Web Service实例

    ### Axis开发Web Service实例详解 #### 一、概述 在探讨如何使用Apache Axis来开发Web Service之前,我们首先需要了解一些基本概念。 **Web Service**是一种标准的技术框架,用于实现不同平台之间的应用通信。它...

    基础平台使用手册-Web Service

    本手册旨在详细介绍Web Service技术及其在开发中的应用,特别关注两种主流的Web Service开发框架:Axis2和CXF。Web Service是一种通过互联网进行通信的标准化方式,允许不同系统之间的应用程序共享数据和服务。 ###...

    Axis2与Eclipse整合开发的Web Service的服务端

    【描述】:本文将详细介绍如何在Eclipse环境中利用Axis2框架开发一个Web Service服务端,包括计算器服务CalculateService的实现步骤。 【标签】:Axis2, Eclipse, 整合开发, Web Service 【内容】: 开发Web ...

    axis2-eclipse-codegen-wizard.zip与Axis2_Service_Archiver.zip

    总结来说,"axis2-eclipse-codegen-wizard.zip"和"Axis2_Service_Archiver.zip"是Apache Axis2 Web服务开发的得力助手,它们分别解决了代码生成和服务打包的问题,使得在Eclipse环境下进行Web服务开发变得更加便捷和...

Global site tag (gtag.js) - Google Analytics