2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

用 Axis 2 提供异步式 Web Services

  • 2007-12-17
  • 本文字数:1752 字

    阅读完需:约 6 分钟

Apache Web Services Wiki 上的 Stack Comparison (特性比较)表明,目前有 Apache 的 Axis 1.x、Axis2,Metro@GlassFish 和 Oracle Application Server 10g 提供了客户端异步交互和服务器端异步交互。

Apache Axis2 是一个开源的 Web Services 引擎,通过 Axis2,开发人员可以使用 Java 或 C 来调用或是实现 Web Services。Axis2 的一个核心特性就是可以提供同步式和异步式的交互, Rajith Attapattu 对此解释说:

为同步式和异步式交互提供支持,是 Web Services 的一个关键性需求,因为这二者都有着非常普遍的应用。Axis2 在传输层提供了这一特性,当请求到来后,可以通过同一种或是不同的传输方式来作出异步式响应。例如,如果一个请求通过 HTTP 到达,而后完成了异步式处理工作,最终的响应可以通过 HTTP 或是截然不同的传输方式——例如 JMS——返回。

Eran Chinthaka 的一篇名为“使用 Axis2 开发异步 Web Services(Develop asynchronous Web services with Axis2)”的文章中,提供了一些在客户端和服务器端应用中使用 Axis2 的异步 APIs 的示例。

在使用 Axis2 时,有两种方法可以异步式调用 Web Services。第一种方法是使用 Nonblocking API,

你可以为客户端提供一个 nonblocking API,这样它就可以把请求传递给 SOAP 引擎,继续做其他工作。客户端会提供一个回调对象,当 SOAP 引擎从服务器端收到响应时,就会通知这个回调对象。这种方式对使用 GUI 的交互式应用尤其有效。

Axis2 的早期版本中有一个叫做 Callback 的类,它可以被用来作为异步式消息的回调机制,或是一种轮询(polling)机制。这个类在 Axis2 1.3 中已经被废弃了,取而代之的是一个简单的接口—— AxisCallback 。藉由这个新的接口,开发人员可以实现 service 异步调用过程中的细粒度通知,但它并没有提供 Callback 类中的轮询机制。

在客户端异步式调用 Web Services 的第二种方法是在传输层实现的。Eran 描述了 Axis2 提供的传输方式,

所有可以用于 Web Services 调用中的传输方式可以大致分为两种:

  • 单向传输——提供发送或者接受消息的通道。
  • 双向传输——可以使用一个通道来发送和接收消息。

客户端在处理请求——响应的交互时,可以有多种选 择。最简单的一种就是用类似 HTTP 的双向传输。但是这种方式没有用到传输层的异步特性。客户端还可以使用两个单向传输或是两个双向传输。例如,你可以用 一个 SMTP 通道来发送消息,再用另外一个 SMTP 通道来接收消息。同时,你还可以用一个 HTTP 通道来发送请求,在消息发出后关闭通道,再使用另外一个 HTTP 通道来接受响应。但这就必须要有一种消息关联机制来使这种方式工作。Apache Axis2 使用了 WS-Addressing 规范来实现消息关联。

在 Axis2 中,用哪一种传输机制都变得非常简单,开发人员所需要做的就是在客户端通过设置 useSeparateListener 标记来使得双向传输可用。

Apache Axis2 在为客户端提供了异步式交互的同时,还提供了服务器端的异步式交互。标准的 SOAP 引擎通常只是在同一个线程中接受请求并做出响应。基于和客户端同样的原因,在服务器端提供异步式的处理并响应客户端请求也是大有益处的。

Axis2 用了一个消息接收器来负责处理 MEP,并把消息传送给对请求进行处理的逻辑或是服务实现。在一个同步调用中,消息接收 器会调用服务实现类(假设服务实现是用 Java 语言编写的)中的正确方法,然后在同一个线程中发送响应。但是在异步调用中,这个消息接收器会启动一个新的 线程来调用服务并向客户端发送通知。这个新的线程负责向客户端发送响应和从服务实现类中获取响应。

有两种方法可以很简单的在服务器端启用异步式交互,一种是在 WSDL 生成器中使用正确的标记,或是对 services.xml 进行配置,让它使用 AbstractInOutAsyncMessageReceiver 。 Eran Chinthaka 在文末总结说:

异步式调用给 Web Service 的用户或是编写并托管 Web Services 的人提供了很大的灵活性。越来越多的 Web Services 变得更加通用,更加复杂,也有越来越多的应用程序把这些 Web Services 集成到自己的应用中去。因为大多数最终应用基本上都需要和用户交互,所以如何提高用户体验就成了重中之重。在多种层次上——客户端和服务 器端——提供异步式的 Web Services 调用,可以帮助我们加深对这些目前面临的挑战的认识。

查看英文原文 Using Axis2 for Asynchronous Web Services

2007-12-17 00:452803
用户头像

发布了 197 篇内容, 共 59.2 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

openEuler 全栈式 AI 推理方案 使能 AI 普惠千行百业,推动企业实现数智化转型

极客天地

和鲸科技医疗智能体上线联想擎天平台:赋能医疗服务效率与质量

ModelWhale

智能制造:物联网和自动化之间的关系

积木链小链

数字化 智能制造 工业自动化

原生APP和混合APP的开发成本

北京木奇移动技术有限公司

软件外包公司 APP外包 APP开发公司

反向海淘代购系统平台总被骂"二次收费"?搭建者必看的5大自检清单与解决方案

代码忍者

图解「模型上下文协议(MCP)」:从与传统 API 的比较入手

Baihai IDP

AI agent LLM MCP 模型上下文协议

超级人工智能、具身智能与大世界模型:AI的未来之路

测试人

人工智能

ERP 价值化国产替代白皮书正式发布!

用友BIP

AI 数智化 用友BIP ERP价值化国产替代

依赖腾讯云的音视频服务能力,构建一个高可用的在线直播平台

为自己带盐

腾讯云 直播

DeepSeek 3FS 架构分析和思考(上篇)

火山引擎开发者社区

火山引擎云上实战:QwQ-32B 大模型快速部署

火山引擎开发者社区

来看看现在go开发岗10k的面试强度

王中阳Go

Go 面试 后端 中小厂

城市综合治理系统(源码+文档+讲解+演示)

深圳亥时科技

专家管理系统(源码+文档+讲解+演示)

深圳亥时科技

利用FinClip优化小程序支付链路的事件分析

xuyinyin

用友BIP供应网络计划发布,驱动10000+节点的全球一张网智能运营

用友BIP

AI 数智化 用友BIP 数智采购 供应网络计划

给Web开发者的HarmonyOS指南01-文本样式

苏杰豪

鸿蒙 前端 HarmonyOS NEXT

借助淘宝拍立淘API,打造超便捷商品识别引擎

tbapi

淘宝API接口 淘宝图片搜索接口 淘宝拍立淘接口

理解文字识别:一文读懂OCR商业化产品的算法逻辑

合合技术团队

人工智能 算法 文字识别 OCR #大数据

数据驱动进化:AI Agent如何重构手机交互范式?

数据堂

人工智能 数据采集 数据集 大模型 AI Agent

获取字节火山DeepSeek系列 API完整教程及超多实用玩法!

火山引擎开发者社区

PowerVerse QA:打造面向全球的AI+DePIN+Metaverse+Web3.0 DeCloud生态服务

PowerVerse

云算力 云算力挖矿 去中心化云算力 算力生态

【GreatSQL优化器-18】GROUP_INDEX_SKIP_SCAN

GreatSQL

替代 Airtable / 飞书表格?用零代码构建多对多关系的任务管理系统

NocoBase

开源 低代码 零代码 表格 任务管理系统

给Web开发者的HarmonyOS指南02-布局样式

苏杰豪

鸿蒙 前端

原生APP和混合APP在性能方面的比较

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包

DistilQwen2.5-R1发布:知识蒸馏助推小模型深度思考

阿里云大数据AI技术

人工智能 知识蒸馏 模型推理 PAI DistilQwen2.5

扫码联网系统(源码+文档+讲解+演示)

深圳亥时科技

2025南京软件产业博览会(南京软博会)

AIOTE智博会

软件展 软博会 南京软博会

手把手教你用Java爬虫抓取淘宝商品信息(附完整代码)

代码忍者

淘宝API接口

中油燃气集团与用友战略签约,深入企业AI合作,打造行业智能化标杆

用友BIP

数智化 用友BIP 企业AI

用Axis 2提供异步式Web Services_Java_Craig Wickesser_InfoQ精选文章