通过Axis2开发Web服务,第1部分:通过Axis2运行时部署和使用简单Web服务

本文配套源码

引言

Axis2 是下一代Apache Axis。Axis2虽然由Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构。Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码。支持开发 Axis2 的动力是探寻模块化更强、灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security、WS-ReliableMessaging 等)的实现中。

Axis2 的特性包括:

采用名为 AXIOM(AXIs Object Model,Axis 对象模型)的新核心 XML 处理模型

支持 In-Only 和 In-Out 消息交换模式 (MEP)

阻塞和非阻塞客户端 API(应用程序编程接口)

支持内置的 Web 服务寻址 (WS-Addressing)

支持 XMLBeans 数据绑定

新部署模型

支持超文本传输协议 (HTTP)、简单邮件传输协议 (SMTP) 和传输控制协议 (TCP) 等传输协议

本系列文章以 Axis2 0.92 版本为基础。您可以在 Apache 网站获得 Axis2 的最新版本。

Axis 体系结构概述

图 1. Axis2 体系结构


Axis2 体系结构将逻辑与状态分离;这允许在并行线程中执行逻辑。服务和调用的静态状态和动态状态分别存储在 Description 和 Context 类中。Axis2 体系结构是使用 7 个独立模块实现的。

信息模型:此模块管理 SOAP 引擎的状态。该模型定义一组用于存放状态的类,而引擎管理这些信息对象的生命周期。信息模型包含两种用于存放状态的类。Description 类存放本质上是静态的且存在于 Axis 引擎实例的整个生命周期中的数据(如传输、服务和操作的配置)。Context 类存放调用上下文中有效的服务和操作的动态信息,例如当前请求和响应 SOAP 消息、From 地址、To 地址和其他元素。

XML 处理模型:Axis2 引入了一个名为 AXIOM 的新模型,用于处理 SOAP 消息。AXIOM 使用 StAX (Streaming API for XML) 来解析 XML。StAX 是一个标准的流式 Pull 解析器 Java API。AXIOM 非常精巧,不会减慢 XML 信息集的构建速度——换句话说,对象只有在绝对必要时才会创建。总体而言,AXIOM 和 Axis2 所占用的内存要小于 Axis 1 所占用的内存。

SOAP 处理模型:Axis2 体系结构定义了两个管道(或流),分别称为 InPipe (InFlow) 和 OutPipe (OutFlow),用于处理服务器端的请求消息和响应消息。在客户端,这两个管道是反向的——换句话说,SOAP 请求消息流经 OutPipe,而响应消息流经 InPipe。管道或流包含一系列分为阶段的处理程序。阶段按照预先定义的顺序执行,如上面的图 1 所示。除预先定义的阶段和处理程序集外,用户还可以在操作级别、服务级别或全局级别配置用户阶段和相关处理程序。处理程序充当 SOAP 消息的拦截器,可以处理 SOAP 消息的 Header 或 Body。InPipe 是通过以下阶段进行配置的:

TransportIn

PreDispatch

Dispatch

PostDispatch

PolicyDetermination

User phases

Message validation

我们将在本系列文章的第 2 部分中详细介绍上述各阶段。请求消息在通过 Inpipe 中配置的所有阶段后,到达 MessageReceiver,然后由 MessageReceiver 调用实际服务实现。服务器的 OutPipe 包含以下阶段:

Message initialization

Policy determination

User phases

MessageOut

时间: 2024-12-31 15:51:14

通过Axis2开发Web服务,第1部分:通过Axis2运行时部署和使用简单Web服务的相关文章

mvc-ASP.NET MVC4在部署IIS后,运行时显示的是整个Web的目录列表

问题描述 ASP.NET MVC4在部署IIS后,运行时显示的是整个Web的目录列表 预览网站,只能看到目录是怎么回事? 是我IIS部署有问题,Web组件缺少还是什么问题呢? 急急急,求解答,谢谢了! 好像都不是目录浏览的问题 解决方案 我用的版本是2013 解决方案二: 是因为你开启了目录浏览,在IIS中关掉就可以了!选择你的站点,右侧会出现如图所示的界面

Win7运行中出现“错误1079:此服务的帐户不同于运行于同一进程上的其他服务的帐户”

Windows 7在开启服务时出现"错误1079:此服务的帐户不同于运行于同一进程上的其他服务的帐户"的提示,如下图所示:   原因分析: 此故障通常在由svchost服务宿主进程所启动的服务上发生,Windows 7最多可以启动七个svchost进程实例,分别负责启动一组服务.一组服务中的每个服务必须和对应的svchost进程实例运行在同一个启动帐户下.例如Alert服务属于Local  Service组的服务,其对应的svchost进程实例运行在Local Service帐户下,如

基于WAS CE和Axis2开发Web Service应用

引言 近年来,随着Web Service技术迅速发展,基于Web Service开发的应用被使用的越来越广泛.Web Service良好的封装性及跨平台能力为应用程序集成.B2B集成等应用场景提供可行的解决方案.本文将介绍如何使用WAS CE(WebSphere Application Server Community Edition)和Apache Axis2开发.部署及测试一个简单的Web Service应用-网上花店. 1.应用及运行环境介绍 1.1 WAS CE简介 WebSphere

Java Web服务,第3部分: Axis2数据绑定

相关文章: Java Web服务,第1部分: Java Web服务在未来一年内的发展 Java Web服务,第2部分: 深度探索Axis2:AXIOM Apache Axis2 Web 服务框架一开始就设计用于支持多种 XML 数据绑定方法.当前的版本 提供对 XMLBeans 和 JiBX 数据绑定以及专门针对 Axis2 开发的自定义 Axis 数据绑定 (Axis Data Binding,ADB)的全面支持.本文将说明如何将这些不同的数据绑定方法与 Axis2 结合使用,并说明为什么可能

使用axis2开发的webservice异常

问题描述 使用axis2开发的webservice异常 [GCOA_SERVICE]2015-05-21 15:30:00 [org.apache.axis2.engine.AxisEngine]-[ERROR] The endpoint reference (EPR) for the Operation not found is http://IP:7001/xx_service/services/Integrations and the WSA Action = . If this EPR

axis2开发webservice(二)

工欲善其事,必先利其器 我们选择axis2来生成服务端和客户端 首先安装myeclipse或者eclipse的axis2插件如果使用其它的工具可以自己查找有没有更好的工具. 1. 下载Myeclipse Axis2插件 http://archive.apache.org/dist/ws/axis2/tools/1_4_1/ 下载axis2-eclipse-codegen-wizard.zip和axis2-eclipse-service-archiver-wizard.zip http://lab

菜鸟求解:.net开发的程序在客户端更新服务引用时老是失败,重新配置服务引用也失败,如下图

问题描述 菜鸟求解:.net开发的程序在客户端更新服务引用时老是失败,重新配置服务引用也失败,如下图 报错404说没发现,但是SCGLservice.svc是存在的...菜鸟求解... 解决方案 WCF 服务端配置不对.

VB.NET中的简单Web Service例程

web VB.NET中的简单Web Service例程 本文和附带的源码向您演示了在.NET开发环境下创建一个WEB服务是如何得简单,同时演示了客户端如何使用这个WEB服务.例程创建了一个计算器的简单WEB服务,它有三个方法:加.减和除. 下载文件包WebService_mehta.zip包含所有演示文件: Calculator.asmx HTMLClient.Html InetClient (VB6 Project) Calculator.asmx代码 <%@ WebService Langu

构建SOA组合业务服务,第6部分: 自动化构建与部署步骤

背景知识 可以通过在面向服务的体系结构(Service-Oriented Architecture,SOA)框架中对多个 不同的服务和数据存储区进行松散耦合来创建组合应用程序.SCA 规范(请参见参考资料部 分中提供的链接)描述了用于使用 SOA 构建和组装应用程序和系统的模型.组合应用程序经 常使用 Rational 工具(如 IBM Rational Application Developer)作为独立的项目开发, 然后使用 IBM Websphere Integration Develop