技术开发 频道

WebSphere Application Server对SIP的支持

    SIP容器

    WebSphere Application Server 6.1实现了SIP Servlet 1.0规范(JSR 116)。在WAS 6.1中,SIP容器是Web容器的一部分,所以也叫聚合容器(Converged Container),请参看图5。它们共用会话管理、安全机制和其他属性,使得WebSphere应用服务器也能部署和运行SIP应用。SIP Servlets、HTTP Servlets或Portlets应用之间可以无缝交互,而不必考虑协议不兼容等问题。可以看出,对SIP的支持扩展了J2EE应用服务器,使之成为真正聚合HTTP/SIP的环境;对SIP协议的实现扩展了服务的种类和功能,并丰富了HTTP/SIP环境下的编程模型;我们还可以通过JMX(Java Management Extensions)或者wsadmin对HTTP/SIP应用进行统一配置和管理。
图5:WebSphere Application Server 6.1中的聚合容器


具体来说,聚合容器的好处在于:

    减少HTTP应用和SIP应用间的延迟(latency)。SIP是实时协议,对SIP请求的及时响应非常关键。包含HTTP Servlet和SIP Servlet的聚合应用,需要借助聚合容器来尽可能地减少HTTP环境和SIP环境间的延迟。
    在控制台中统一管理。可以像部署运行*.war应用一样,在同一个console中部署和运行包含SIP Servlet的*.sar应用。
    跟HTTP一样,SIP利用JMX和wsadmin配置和管理系统。这有助于开发人员或管理人员将同时包含HTTP/SIP应用的整个环境自动化。
    支持SOA架构,可以访问Web服务、企业服务总线(Enterprise Service Bus, ESB)和服务组合(Service Orchestration),也可以将包含SIP应用的服务放到ESB上,作为Web服务提供给外界使用。

    总之,WAS 6.1实现了SIP协议和编程模型,为HTTP/SIP应用提供了一个通用的执行平台。推广和管理通用的、基于开放标准的实时平台可以提高效率,同时完整、配套的工具集和对模块化服务的支持使部署变得更加容易。

    因为Web容器和Channel Framework的重用,增加了UDP传输通道。此外,SIP容器用到了以下WAS组件和API:

    通过Web容器,Web容器API将SIP请求转发给SIP servlet。
    DRS(Data Replication Service)用于容器间相互复制会话信息,并最终用于故障恢复。
     HAM(High Availability Manager)用于报告发生故障的服务器,并选择一个协调者来处理故障。
    UCF(Unified Clustering Framework)用于发布负载信息和逻辑名称(Logical Names,将消息从无状态代理服务器路由到合适的容器所需的信息)。
    PMI(Performance Monitoring Infrastructure)发布不同的SIP计数器,可以在TPV(Tivoli Performance Viewer)里查看这些计数器。
    WCCM用于获取所有配置信息。
    Channel Framework用于和网络层进行交互。需要特别指出的是,使用UDP, TCP和SSL作为传输协议。

    为了支持SIP协议必需的摘要认证(digest authentication),也部署了TAI(Trust Association Interceptor)。TAI和后台的LDAP(Light Directory Access Protocol)服务器通信,获取用户的密码,检查请求的用户标识。如果需要,TAI会产生包含摘要的错误提示响应,最终这些错误提示被发回客户端。

    SIP Servlet API (JSR 116)

    对任何通信基础设施而言,可编程性尤为重要,SIP Servlet API就是用于标准化那些提供基于SIP的服务的平台。SIP Servlet规范是一种Java Community Process规范(JSR 116)。使用SIP Servlet编写通信业务就如同用HTTP servlets编写WEB应用。
SIP Servlet的编程模型跟HTTP Servlet相似。HTTP Servlet API一直以来是开发Web应用的标准,它使得Web应用可以在不同软件提供商的Web容器(Web Container)间移植。Web容器负责管理Servlet的初始化、线程池、会话状态、安全及任何跟容器相关的参数设置。应用开发人员只需关注应用逻辑本身,而不必关心底层的操作,比如: HTTP头部等。SIP Servlet API(JSR 116)利用这些概念,简化SIP应用的开发过程。

    SIP Servlet和HTTP Servlet的共同点:

    利用部署描述符将Servlet加入到应用中,并部署到容器上。
    容器根据部署描述符包含的信息选择应调用的Servlet。
    容器根据部署描述符包含的信息为新来的请求进行认证或授权。
    重写Servlet的基本类构成业务逻辑,然后调用之。
    Servlet API向开发人员隐藏了底层协议的复杂性,将该协议概括成一组高级API。
    尽管不同的容器实现提供不同的服务质量,但它们都是被Java Community Process标准化过的。

    SIP Servlet和HTTP Servlet的不同点:

    SIP Servlet可以初始化请求和接收SIP请求,可被用作SIP客户端;而HTTP Servlet只能作为服务器端,发送响应。
    SIP Servlet可以生成异步响应。它不需要立即响应请求,并且可为一个请求生成多个响应。
    一个SIP请求可以由多个SIP应用来服务,将请求映射到Servlet非常灵活。
    SIP Servlet向开发人员隐藏了协议的复杂性,包括:呼叫次序、协议层路由、多种传输类型(TCP、UDP和SSL)、协议层重发等。

    聚合应用

    聚合应用就是SIP应用(声音、视频、到场等)和传统的Web应用一起协同工作。 SIP Servlet API(JSR 116)将SIP协议带入了J2EE领域,从而扩展了我们开发应用的范围,HTTP/SIP聚合应用扩展了服务的功能。

    举个例子,用户Michael想查询一下适合自己的放贷信息,他打电话给呼叫中心(Call Center),提交了自己所能承受的房贷要求,呼叫中心的SIP应用负责通过企业服务总线(Enterprise Service Bus)查出服务人员列表,Presence Server从中挑出当前空闲服务人员Janice,并向她提交请求;而Web应用则负责根据Michael提交的个人情况和要求找出适合他的房贷信息;最后,Janice接受SIP请求,与Michael建立了SIP会话,将Web应用所找出的有用信息以声音(视频或即时消息)的方式传达给Michael。这就是一个SIP应用和Web应用协同工作的一个典型例子(见图6)。
    图6:聚合应用场景——呼叫中心

0
相关文章