基于JBoss实现Web服务与通信业务整合

2011-08-04 06:37
通信技术 2011年12期
关键词:消息客户端组件

倪 奕

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引言

传统的通信业务通常是由诸如SIP消息之类的信令消息触发。而通信类的 Web服务则通常是一般电信功能的 Web服务接口,由SOAP消息进行触发,它们能利用电信域的各种网络资源,并在互联网上发布和使用。

以下就是一些电信业务暴露为通信Web服务的例子:

第三方呼叫:提供由第三方发起和管理的、在两个用户间建立会话的能力。

多媒体会议:提供在一个会话中发起两个或多个用户的音/视频会议的能力。

消息:提供发送即时消息、SMS和MMS能力的一系列Web服务。

呈现:提供获取用户在网络中的可达信息的能力。

使用标准的Web服务来抽象电信网络能力,业务提供者能为电信领域之外的 IT开发人员提供创建创新型业务的新的可能性。

Web服务标准也使得电信运营商能为第三方提供可控、可靠的电信网络能力,如状态呈现和呼叫控制等能力。

多个国际组织对如何在电信领域使用 Web服务提交了各自的标准:

ParlayX标准:该标准是基于Web Services的简化版本的电信API集,已经标准化了一些最常见的信令业务,如第三方呼叫控制、呼叫通知、SMS、MMS等[1]。

OMA建议了一些OMA Web Services引擎,并且它规范了移动终端与Web Services的交互方式。

W3C提供了 WS-Addressing 规范,该规范提供了描述Web Services和消息的机制。

OASIS论坛定义了一系列规范,如 WS-Notification及WS-ResourceFramework等,这些规范是开发通信 Web Services的重要基础。

1 技术背景

1.1 JBoss相关

JBoss是一个用纯Java编写、开源、遵循J2EE规范、得到广泛使用的应用服务器软件。JBoss起初只是一个 EJB容器,后来逐步发展成为一个具有复杂功能的应用服务器,包含内置的Web服务器Tomcat、EJB容器、内置的Java关系型数据库Hypersonic、Java消息服务(JMS)、Java事务接口/Java事务服务等功能[2]。

另外,JBoss还支持通信业务服务器 Mobicents。“Mobicents是目前第一个也是唯一一个被JSLEE1.1规范认证的开源VoIP平台,Mobicents为电信应用提供了强有力的组件模型和执行环境,通过支持 J2EE促进语音、视频、数据在下一代智能应用中的融合”[3]。JSLEE包含诸如业务构建块(SBB),资源适配器(RA)、业务(Service)以及事件(Event)等组件。SBB是可重用的组件,并对特定事件敏感,它们接收这些事件并处理它们。RA是连接SLEE平台到特定协议栈的连接器,如SIP RA和HTTP RA。事件定义了在JSLEE组件之间交互的消息。

1.2 Web服务

Web服务是一种建立分布式应用的平台,其主要目标是在已经存在的不同平台和系统的基础上建立一个与平台和开发语言无关的统一平台,其他各种应用通过该平台实现相互连接和集成[4]。通过Web Services技术,可以使由不同厂商开发、运行在不同操作系统上、部署在不同的设备之上、采用不同的编程语言的所部署的软件和系统都能够通过Web Services构筑的通用平台实现交互,实现分布式计算和处理。其体系结构如图1所示。

图1 Web Services体系结构

Web Services体系结构是3种角色之间进行的交互,即服务提供者、服务请求者、服务注册中心,交互包括发布、发现、绑定这3个动作。

XML是Web Services中表示数据的基本格式,它解决了数据表示的问题。

SOAP描述了数据类型的消息格式和一套串行化规则,包括结构化类型和数组。

WSDL是描述 Web Services功能的协议,描述了Web Services所采用的协议和格式。

UDDI的核心是UDDI服务注册中心,它使用XML文档描述企业及其提供的Web Services。

2 体系架构

2.1 体系架构研究

Web服务通常都被认为是通过同步的请求-响应机制来进行访问的,这样使得Web服务的实现与使用都很简单。与之相反,通信业务从本质上来说是异步的和事件驱动的,是通过一系列的消息发送和接收来实现业务的交付过程。比如说,如搜索这样的Web服务可以通过简单的搜索请求来访问,但对第三方呼叫这样的通信业务来说就需要完成一系列的事件传递(发送makeCall事件,接收处理中、等待中以及响应事件并交换媒体能力)。所以,把通信业务作为同步的Web服务进行付就会遇到一些问题。

研究的体系架构以同步Web服务的方式交付通信业务,并简化通信业务与普通Web服务和web应用的整合过程。体系主要包含通信业务服务器(采用 Mobicents,用于部署通信业务),Web服务器(采用Tomcat,用于部署Web服务及应用),企业服务总线 ESB[5]使用 JBoss ESB,并采用OpenIMS构建 IMS核心网。提出的体系的部署架构如图 2所示。

图2 体系部署架构

首先,Web服务作为通信业务(如第三方呼叫控制业务)的代理先向服务注册中心进行注册。业务流程从 http客户端开始。客户端向Web服务器上部署的Web应用发送请求以执行某个服务。Web应用通过UDDI协议查询适合的Web服务并与之绑定,并请求特定的Web服务的执行。Web服务是同步服务,但它以异步的方式与通信业务进行交互以触发通信业务。这样通信业务开始执行,并在两个IMS UA之间发起呼叫。呼叫的状态输出给Web服务客户端以及HTTP客户端,这样它们就能控制、检测、改变呼叫,并最终结束呼叫。

通信业务器采用 Mobicents。从技术背景中知道 JSLEE包含多种组件。在建议的体系架构中,需要实现这些组件的新类型。Web服务接收到某个请求以触发服务,它必须要先发送一个事件来启动该服务。所以需要定义一些事件(如makeCall、endCall等),这些事件被Web服务用于与JSLEE平台和通信业务进行交互。因此,就需要研究Web服务与通信业务间消息传递方式,即 Web服务如何发送事件,Mobicents如何接收这些事件并把它们传递给SBB。

2.2 服务与业务间消息传递方式

2.2.1 业务/服务单机部署

如果通信业务与 Web服务是部署在同一 JBoss服务器上,即通信业务执行环境由部署在JBoss上的Mobicents提供,Web服务执行环境由JBoss内部的Tomcat提供,两者之间可以采用远程方法调用(RMI)来实现通信,这里采用JSLEE提供的SLEE Connection接口[3],如图3所示。Web服务器负责将用户请求封装成Mobicents中自定义的事件,并通过SLEE Connection接口来完成与Mobicents的交互。该接口允许Web服务组件创建一个与特定JAIN SLEE中的业务实例的连接,并使用它来向业务实例发送事件,从而触发通信业务逻辑的执行。

图3 业务/服务单机部署

2.2.2 业务/服务分离部署

如果Web服务和通信业务部署在不同JBoss服务器上,有两种通信机制,如图4所示。

图4 业务/服务分离部署

SLEE Connection方式:Mobicents JSLEE同样提供一个远程的SLEE Connection(使用方式同本地方式相同),从而实现Web服务组件与通信业务组件之间的跨主机通信。

SOAP RA方式:可以直接通过在Mobicents上部署SOAP RA来实现Web服务组件与通信业务组件之间的通信消息适配。SOAP请求从SOAP客户端通过Web服务实现获取,并被SOAP RA以SOAP事件的方式,通过JSLEE的事件路由器传递给注册这些事件的通信业务组件(SBB)处理。

2.3 Web服务结构

为了把通信业务封装为Web服务,需要把它的相关功能描述到WSDL文档中,给出将对它的客户端提供的操作。以第三方呼叫控制为例,以下是对其 Web服务进行描述的WSDL文件片段:

可以看到,makeCall操作有两个类型为string的参数,即两个UA 的SIP URI,并有一个string类型的返回值,它是呼叫的引用id。

3 实现

为了实现第三方呼叫控制业务的Web服务化,业务需要三个SBB:RecvSoapSBB为业务的根SBB,处理呼叫控制SOAP事件;CallControlSbb处理 SIP消息;SendSoapSBB发送业务响应。当 MakeCall事件被传递给 SLEE后,RecvSoapSBB进行初始化,接收MakeCall事件,根据事件构建INVITE消息并发送给被叫IMS UA以发起呼叫,并创建及初始化CallControlSbb。接着CallControlSbb就会处理后续SIP消息以在两个IMS UA之间建立呼叫。

Web服务将通过向 SOAP RA发送诸如 CancelCall,EndCall此类的事件来控制呼叫,这些事件也会传递给RecvSoapSBB,处理这些事件需要进行一些SIP消息的传递,而这是CallControlSbb的处理范围。因此RecvSoapSBB就通过调用CallControlSbb的输出方法来委托CallControlSbb处理这些事件,CallControlSbb通过发送适当的 SIP消息来建立、中止或者取消呼叫。在CallControlSbb完成呼叫信令过程后调用SendSoapSBB返回相应的业务响应。

融合Web和通信应用的另一个需求是在Web应用中监视通信业务的状态。比如需要在Web应用中显示呼叫的状态(如进行中、取消、保持等),这样用户就能了解呼叫的情况,并对其进行控制。对此的一个解决方法是在通信业务、Web服务和 Web应用之间把呼叫状态作为共享对象,实现HTTP和SIP会话之间的1对1的映射,这样Web应用就能检测业务状态。该项内容非本次研究重点不作详述。

本体系结构总体的实现原理如图5所示。

图5 体系结构的实现原理

第三方呼叫控制业务与服务整合的试验环境如图 6所示。在该环境中,使用专用的Web服务测试工具SoapUI进行了测试。SoapUI根据实现的Web服务的WSDL文件创建了呼叫请求,请求方法为makeCall,并带有主被叫终端UA1和UA2的SIP地址。通过SoapUI发送该请求到第三方呼叫控制业务的 Web服务实现 endpoint,最终实现两个终端的通信。

图6 试验环境示意

4 结语

文中研究根据NGN/IMS的通信业务与Web服务融合的概念,采用ParlayX标准,基于JBoss,提出了两者整合的体系架构,把Web服务作为通信业务的代理,以Web服务的同步的请求-响应机制方式交付异步的事件驱动的通信业务。NGN 架构对 Web 服务的引入将充分利用 Web 服务的优势,使 NGN 应用业务平台具备更好的开放性和互操作性, 从而使下一代网络融合业务的开发和部署更加快速和便捷[6]。

[1] 陈霄,汪学明.下一代网络开放业务接口的研究[J].通信技术,2010,43(12):109-111.

[2] 杨成刚.午餐免费 服务增值——谈 JBoss的技术架构与服务[J].中国计算机用户, 2004(13):56-57.

[3] ALEXANDRE M, AMIT B, BARTOSZ B. Mobicents JAIN SLEE User Guide.[EB/OL].(2010-10-09)[2011-06-09].http://www.mobicents.org/slee/docs.html.

[4] 赵谨谨.用WebServices实施企业应用集成的方法研究[D].武汉:华中科技大学,2009:6-9.

[5] 金碧芳,薛质,宋涛.基于SOA的信息比对系统的研究与实现[J]. 信息安全与通信保密,2010 (06):43-44.

[6] 赵慧玲,徐向辉. 基于Web服务的下一代网络融合业务模型[J].邮电设计技术,2008 (07):1-5.

猜你喜欢
消息客户端组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
一张图看5G消息
U盾外壳组件注塑模具设计
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
风起新一代光伏组件膜层:SSG纳米自清洁膜层
消息