用于xmpp协议的servletapi和方法

文档序号:7850291阅读:683来源:国知局
专利名称:用于xmpp协议的servlet api和方法
技术领域
本发明涉及远程通信和网络计算机电话系统,包括互联网和公共交换电话系统(Public Switched Telephone System),并且更具体地涉及一种用于根据Java服务器端应用程序(servlet)模型在XMPP API的基础上部署兼容XMPP的应用程序的系统和方法。
背景技术
世界范围内已经发展出两种主要的远程通信网络。第一种是形式为公共交换电话系统(PSTN)的电话系统网络。该网络最初被设计用于传送语音通信,不过随后也适用于传输数据。第二种是形式为互联网的计算机系统网络。互联网一直被设计用于传输数据,而且正越来越多地被用于传输语音和多媒体信息。计算机实施的电话应用程序已经被集成到这两种远程通信网络中以提供更好的通信服务。例如在PSTN中,计算机电话集成已经为POTS(普通老式电话服务)提供了更多的功能和控制。在互联网上,计算机自身就是用于语音通信的终端设备并且还用作供终端设备的主机使用的智能路由器和控制器。互联网是根据TCP/IP (传输控制协议/互联网协议)套件通信的IP网络全球通信网。具体地,语音和其他多媒体信息在互联网上根据VoIP (互联网语音传输)协议传输。PSTN和IP网络的集成通过发挥IP网络固有的路由灵活性和计算可达性而允许在语音应用程序的自动控制方面有更多功能。美国专利US6922411中介绍了一种用于简单部署电话应用程序的示例性平台,通过引用将其全部公开内容并入本文。基本上,网络电话系统允许用户部署与指定电话号码相关联的互联网计算机电话应用程序。电话应用程序很容易由用户以XML(扩展标记语言)用预定义的电话XML标签(例如VoiceXML)创建并且易于在网站上部署。电话XML标签包括用于通话控制和媒体控制的内容。与这些指定电话号码中任何一个的通话都可以源于任何一种网络电话系统例如PSTN(公共交换电话系统)、无线网络或互联网。通话由互联网上安装的应用网关中心(AGC)接收。类似于网页浏览器,AGC提供用于从其网站中检索相关的XML应用程序并相应地处理通话的功能。这种类型的电话平台允许在互联网上构建和部署非常强大而又简单的电话应用程序。以下是在这种平台上部署的电话应用程序的一些示例。“跟踪/发现(Follow me,find me)”应用程序按顺序呼叫由用户指明的一系列电话号码,直到其中一个号码应答并随后连接该通话为止。否则,应用程序就做一些别的事例如收取消息或发送电子邮件或者向呼叫中心发送通话等。在另一个示例中,电话调查应用程序查询被调查人口的电话号码数据库。应用程序随后仅受支持的并行会话最大数量限制地并行呼叫多个号码,然后响应于被呼叫方的应答播放一系列交互式语音提示/消息并在数据库中记录结果等。在另一个示例中,帮助台(Help Desk)应用程序响应于被呼叫方的应答播放一系列交互式语音提示/消息并且可以将连接在线客服通话作为一种选项等。在又一个示例中,股市或银行交易应用程序响应于被呼叫方的应答播放一系列交互式语音提示/消息并且利用后端数据库或web应用程序来进行正当交易等。
后面的示例通常被称为自助式应用程序。在语音领域,自助式应用程序被称为IVR0 IVR涉及交互式语音应答并且是一种与电话呼叫方自动交互的技术。企业正越来越多地转向IVR以降低常规的销售、服务、催收催缴、查询和支持公司往来通话的成本。如前所述,IVR是一种自助式应用程序的具体示例,其中用户可以通过与应用程序交互而自助地执行某些任务。传统的IVR仅允许用户通过语音信道与其交互。类似地,网页机器人(web bot)是一种允许用户利用文本信道执行任务的自助式应用程序。这种平台的一个示例是在多信道环境中主持用语音、文本消息进行交互的IVR应用程序和其他客户端。文本消息已经随着便携式电话和计算设备的普及而变得非常流行。文本消息是通过点对点或一点对多点地交换文本消息来进行通信的一种形式。文本消息最常见的形式是电子邮件、网络博客和短信。短信(“IM”)几乎是实时地交换消息。现有多种专用的短信网络,每一种都利用本地协议为每一个自身的客户端提供頂服务。也存在开源并使用XMPP协议的頂网络。XMPP是指可扩展消息处理与出席协议并且它是由Jabber开源组织在1999年开发的用于出席和实时通信的开放性XML技术集合。用于Java应用程序的XMPP服务已经在Google Talk中实施作为XMPP扩展应用以使其兼容XMPP,这是一种由美国加州Google公司提供的聊天应用程序。这通过将XMPP消息封装为MME消息并且将MME消息置于HTTP内而实现。因此从应用程序的角度看,实际上接收的是HTTP消息而且必须使用Google专用API以从HTTP消息内的MME消息中提取出XMPP消息。这种方法并不完全兼容基于标准的Java servlet模型。希望获得一种允许与文本消息的客户端交互的自助式应用程序。因此希望获得一种融合通信应用程序平台,其类似于供web客户端使用的HTTPServlet和供语音客户端使用的SIP Servlet,允许在应用程序的服务器端轻松地开发和执行应用程序。

发明内容
一种通信系统和方法,包括在Java虚拟机内主持交互式语音应答或自助式应用程序的服务器。为了发挥Java servlet模型的优势和功能,一种Java XMPP(可扩展消息处理与出席协议)servlet容器被提供给服务器使用以使得通信应用程序可以用由XMPPservlet API定义的对象以及用由基于标准的Java EE平台例如HTTP和SIP servlet定义的对象来编写,目的是为了服务于XMPP客户端。除了 Java servlet模型中通用的类对象以外,API还提供了 XMPP专用的类对象
口 OJava XMPP servlet容器包括在传输层用于处理网络连接的网络点,用于管理XMPP会话和流的XMPP服务层以及用于管理XMPP节的应用层。应用程序允许用Java XMPP servlet API编写,目的是为了发挥Java servlet模型的优势和功能,以使得编程不必关注底层的传输和连接功能而是能够集中在业务逻辑上。Java XMPP servlet容器的架构使流的协商终止于XMPP服务层而不是应用层。这就允许应用程序具有在云计算资源中从一个服务器移植到另一个服务器的可移植性。
本发明的更多目标、特征和优点将根据以下对其优选实施例的说明而得到理解,这些说明内容应该与附图相结合。


图1示意性地示出了适合用于实践本发明的通信应用程序环境。图2示出了用于XMPP Servlet模型的系统架构。图3示出了用于XMPP Servlet模型的应用程序整体架构。图4示出了 XMPP Servlet接口的继承。图5更加详细地示出了图4中所示的XMPP Servlet接口。图6示出了 XMPP Servlet的结构,给出了 XMPP Servlet请求和应答对象的整体继承架构。
具体实施例方式图1示意性地示出了适合用于实践本发明的通信应用程序环境。通信应用程序环境10包括与应用程序平台100内的通信应用程序服务器200交互的一个或多个客户端20,22,30。应用程序平台100主持由用面向对象软件编写的应用程序脚本210明确的应用程序。通信应用程序服务器200包括用于解读并执行应用程序脚本210的浏览器220。应用程序脚本210的执行调用应用程序服务器200内的一个或多个服务器端组件310。正如随后要更加详细介绍的那样,服务器端组件优选地实施为符合基于标准的Java Servlet模型的Servlet 310。在客户端和通信服务器中,这些组件310为HTTP请求、对一个或多个媒体服务器230的通话控制和媒体控制以及跟后端系统240例如数据库和业务逻辑与遗留系统例如CRM(客户关系管理)和ERP(企业资源规划)的交互提供服务。这种平台的一个示例是在多信道环境中主持用语音、文本消息进行交互的IVR应用程序和其他客户端。文本消息已经随着便携式电话和计算设备的普及而变得非常流行。文本消息是通过点对点或一点对多点地交换文本消息来进行通信的一种形式。文本消息最常见的形式是电子邮件、网络博客和短信。短信(“IM”)几乎是实时地交换消息。现有多种专用的短信网络,每一种都利用本地协议为每一个自身的客户端提供頂服务。也存在开源并使用XMPP协议的頂网络。XMPP是指可扩展消息处理与出席协议并且它是由Jabber开源组织在1999年开发的用于出席和实时通信的开放性XML技术集合。图1实际上示出了一种多信道、自助式的应用程序平台。基本上,多信道自助式的应用程序平台100主持一种或多种用于通过多信道与各种客户端交互的自助式应用程序300。不同的客户端包括通信模式是借助于语音信道的语音客户端20,22。还包括通信模式是借助于文本消息信道的文本消息客户端30。通信应用程序服务器200通过Servlet容器330使頂客户端30借助頂网络直接或间接地与頂(XMPP)服务器互动。另外,实施为供servlet容器330使用的插件程序的应用程序路由器338用于客户端到适当应用程序的路径选择。可以发现语音应用程序中的某些动作与文本消息应用程序之间的对应性。例如,播放音频文件类似于用IM发送文件,记录通话类似于记录文本消息的对话,传输通话类似于建立(涉及多个頂用户的)聊天等。文本消息客户端30与应用程序平台100内主持的自助式应用程序进行交互应该就像自助式应用程序是网页机器人一样。文本消息的常用类型是短信(“IM”),其中文本消息几乎实时地在各方之间交换。开源的頂客户端(OS)或(XMPP客户端)与具有XMPP服务器的开源网络通信。各种本地IM网络的不例有AOL Instant Messenger、MSN Messenger>Yahoo Messenger、Lotus Sametime、Google Talk 等。通常,每一种IM网络都根据其自身的本地协议工作并且它们不能协同工作。另一种类型的IM网络如前所述以XMPP的开放性标准为基础。Jabber服务器为其客户端提供頂服务。Google Talk是基于XMPP标准的另一个例子。优选地,XMPP服务器50被用作供多信道自助式应用程序平台使用以与各种不同的IP网络协同工作的桥梁。传输模块(未示出)随XMPP服务器50—起使用以用作连往各种頂网络的XMPP网关。对于XMPP服务器50来说,多信道自助式应用程序平台100仅仅是另一个XMPP客户端40。用这种方式,各种IM客户端30就能够通过传输模块和XMPP服务器50与多信道自助式应用程序平台100通信。当頂客户端30已经是XMPP网络的一部分时,它就不再需要通过传输模块“传输”,而是简单地直接与XMPP服务器对话即可。在传统的网络传播模式中,运行网络浏览器的客户机形式的用户代理向网络服务器发出请求。网络服务器返回对请求的应答。通信根据HTTP (超文本传输协议)进行。具体地,网络浏览器请求网络资源例如由来自网络服务器的网址明确的网页。通常网络服务器通过返回请求的网页来应答。网页可以包含文本内容以及用于让浏览器在网页中显示文本的嵌入指令。在更为复杂的应用程序中,网页经常通过使用服务器端程序动态生成并且可以加入例如来自后端数据库的查询结果等内容。因此,部分内容并非硬编码在网页上而是由网络服务器动态地生成和显示。服务器端程序也可以用于将数据从客户端提交至后端数据库。通常,这些服务器端程序被实施为符合CGI (通用网关接口)协议的脚本。CGI是在网页服务器上执行任务以生成并显示动态内容或者执行其他后端功能的代码模块。但是,CGI具有若干缺点。首先,CGI不太容易移植,原因在于不同的网络服务机器具有不同的处理器且操作系统可能需要它们自用版本的脚本。其次,CGI不能高效地使用服务器的资源。不同的CGI与启动它们的服务器相比在不同的进程上下文中运行。对于每一个请求都有创建一个新进程的开销,并且不同的进程无法访问服务器资源中的公共集。JAVA servlet模型解决了 CGI的这些缺点。Servlet是用高度可移植性的JAVA 编程语言编写的模块,原因在于它们是在相同的与处理器硬件或操作系统无关的JAVA虚拟机中运行。在面向对象的Java编程语言中,分析HTTP请求并使之与软件对象交互,软件对象根据由应用程序操作的实际对象建模。类似地,应答被加工为符合HTTP协议并随后发送给请求者。Servlet运行在Java服务器的多线程环境中并且允许通过单独的线程来处理每一个请求。与并发请求需要载入多份CGI脚本副本的CGI相比,还有一种Java脚本的情况则需要载入到处理器内存中。原始Servlet符合HTTP协议并且可以被视为“HTTPservlet”。Servlet模型提供了通过在应用程序服务器内载入对应的servlet容器而实现的API (应用程序设计接口)集合。Servlet模型使开发人员能够快速开发应用程序并将其移植到不同的服务器并且能够高效运行。Servlet模型在web应用程序中广泛使用并且以开放性的标准为基础。API是一种描述用于跟组件310所用函数集合交互的接口的缩写。它是一种包含在库内包括的并且解决特定问题的函数集合说明的列表。在Java面向对象语言的当前上下文中,API包括Java类定义和扩展类定义的集合以及与类相关联行为的集合的说明。API可以被认为是通过类(类接口)公开的所有方法的全集。这就意味着API规定了用于处理由类定义得出的对象的方法。对于通话控制,已经提出了用于协同工作能力的多种协议标准。例如,H.323标准是一种由ITU (国际电信联盟)推荐的用于IP技术的信令和通话控制的协议标准。一种越来越普及的替代H.323用于通话控制的标准是SIP( “会话发起协议”)。SIP是一种IETF(互联网工程任务组)协议,用于IP技术的信令和通话控制以及两台或多台终端之间的多媒体通信。这种协议基于文本并且更加以网络为中心,因此是一种相对简单和更加轻量级的替代H.323的协议。对于通话控制,SIP servlet已经被开发并确立为用于根据SIP协议处理请求的标准,正如HTTP servlet根据HTTP协议处理请求一样。SIP Servlet Specification (JSR 289)是一种基于容器的方法(根据 HTTPservlet传播模式建模)以利用会话发起协议(SIP)开发通信应用程序。SIP servlet是一种执行SIP信令的Java编程语言服务器端组件。SIPservlet由SIP servlet容器管理,其通常是实现SIP的应用程序服务器的一部分。SIP servlet通过响应输入的SIP请求并返回对应的SIP应答而与客户端交互。SIP servlet由Java Servlet Specif ication提供的通用 servlet API 构建,Java Servlet Specif ication 是一种通过 Java 规范请求(JSR)过程由Java Communi ty Proces s (SM) Program建立的开放性标准。将SIP ServletQSR 289)用于通话控制是为了发挥Servlet模型的优势。由此,应用程序开发人员就能够根据开放性标准JSR 289开发出底层通话控制对象方面的通信应用程序组件以及HTTP Servlet和SIP Servlet形式的API。因此希望能够在以XMPP协议工作的Servlet模型基础上提供API集合。现有的Java Servlet模型例如HTTP Servlet和SIP Servlet均以请求-应答模型为基础。在HTTP的情况下,交互是同步的。在SIP的情况下,交互是异步的。尽管HTTPServlet基本上是无状态的,但是SIP Servlet在会话中必须保持状态。在XMPP的情况下,交换的是頂消息并且不存在固有的请求-应答概念。交互基本上是异步的,不过握手交互可以是同步的。类似地,IM基本上是无状态的。但是,在使用頂客户端与自助式应用程序交互时需要保持状态。因此XMPP servlet规格必须要克服这些差异。XMPP SERVLET 和 API可扩展消息处理与出席协议(XMPP)是一种用于近实时消息处理、出席和请求-应答服务的开放性可扩展标记语言XML协议。XMPP的核心特性在由XMPP StandardsFoundation(原 Jabber Software Foundation)维护的 Extensible Messaging andPresence Protocol =Core [RFC3920]中定义。核心特性包括XMPP的专用特性例如XML流、TLS和SASL的使用以及根流的<message/>、〈presence/>和<IQ/>子流。这些特性提供了用于多种类型的近实时应用程序例如Core[RFC3921]中定义的短信(頂)和出席应用程序的构建模块。所有通信架构中很重要的一方面就是可编程性,并且XMPP Servlet API的用途就是将用于提供基于XMPP服务的平台标准化。术语平台在此被用于包括Java API自身以及涵盖封装和部署应用程序的标准。平台主要提供[RFC 3920]中定义的核心XMPP特性和架构功能,以使XMPP应用程序例如XMPP IM应用程序能够简单地在平台上构建。XMPP Servlet API能够提供以下优点:XMPP的功能:允许应用程序实现相当完整的XMPP功能集合,包括流特性协商、SASL功能、节的接收和输送。简单性:容器处理“非关键性的”复杂事务例如管理网络侦听点、节的路由、流特性协商等。因此应用程序能够在其具体的应用规则上。融合应用程序:可以让容器支持融合应用程序,也就是跨越多种协议和接口例如Web、頂、SIP和其他Java EE接口的应用程序。第三方应用程序开发=Servlet模型支持第三方应用程序开发。XML部署描述符被用于从应用程序开发人员向部署人员传递应用程序信息。电信运营商级=Servlet在容器管理的会话对象内存储应用程序。实现可以坚持和/或复制该数据以实现高度的可用性。XMPP Servlet是一种由XMPP Servlet容器管理的基于Java的应用程序组件,就像HTTP Servlet是由HTTP容器管理一样。XMPP Servlet执行XMPP应用程序功能例如表现为XMPP頂应用程序的XMPP Servlet。XMPP Servlet负责用于根据应用程序规则进行XMPP节处理,例如通过发送探测出席节和广播出席节来处理初始出席节。XMPP Servlet还能通过经XMPP Servlet API与容器交互来控制流协商过程。就像其他基于Java的组件一样,Servlet是平台独立的Java类,可被编译成平台中立的能够Java实现的XMPP应用程序服务器动态载入和运行的字节码。容器,有时被称为Servlet引擎,是提供Servlet功能的服务器扩展。XMPP Servlet通过经Servlet容器交换节而与XMPP客户端或其他的XMPP服务器交互。Servlet容器是提供网络服务的在其上接收和发送请求及应答的应用程序服务器的一部分。它决定调用哪一个应用程序。Servlet container还在其生命周期内包含并管理Servlet。XMPP Servlet容器在与其他的XMPP实体连接之后负责用于管理连接和XMPP流,而且容器接收输入的节,将节分配给合适的Servlet以及从应用程序接收输出的节并将其路由至合适的XMPP实体。Servlet容器能够构建在或者可以安装在实现Servlet的应用程序服务器内。XMPP Servlet容器管理网络侦听点,在其上侦听输入的XMPP流量(侦听点是传输协议、IP地址和端口编号的组合)。Servlet容器可以在执行Servlet的环境中设置安全限制。在 Java 5 Platform Standard Edition(J2SE 5.0)或 Java' Platform,Enterprise Edition 5 (Java EE 5)的环境中,这些限制应该利用由Java平台(JavaPlatform)定义的许可架构设置。例如,高端应用程序服务器可以限制创建Thread对象以确保容器中的其他组件不会受到不利影响。图2示出了用于XMPP Servlet模型的系统架构。整体系统包括如图1所示与应用程序服务器200 (容器330+应用程序300)交互的XMPP客户端24,40和其他的XMPP服务器50。实现XMPP Servlet模型就是实现作为servlet容器330之一的XMPP Servlet容器332。XMPP Servlet容器332可以根据XMPP协议与其他XMPP实体通信,包括XMPP客户端40和其他的XMPP服务器50 (同样参见图1)。从XMPP Servlet容器的角度看共有三层通信。第一层是传输层340。在优选实施例中,TCP被用作传输协议。传输层内的网络点接收来自XMPP客户端24,40或其他XMPP服务器50的输入TCP连接并且建立到XMPP客户端24,40或其他XMPP服务器50的输出TCP连接。网络点组件保持这些连接并向更高层发送输入数据和必要信息,而且还从更高层接收输出数据并将其送出。第二层是流层,在此XMPP流在XMPP服务层342内进行处理。[RFC3920]中的流概念被映射至XMPP Servlet API中的XmppSession接口,以使该层实际上负责用于保留XmppSession信息并向更高层提供会话信息。如图1所示,应用程序路由器338是用于XMPP Servlet容器332的插件程序。在初始连接协商期间,容器332从客户端或其他实体接收〈stream〉打开标签请求并在XMPP服务层342处理该请求,随后向应用程序服务器338发送关于选择哪一个应用程序的查询。应用程序服务器338根据路由表或预定规则返回应用程序选择的答复。XMPP服务层342随后调用选中的应用程序并建立连接。第三层是节层,在此处理XMPP节。在节层,节从应用程序312,322进出。节实际上被封装在Servlet请求和应答中,以使应用程序也能从请求或应答中获得除了节信息以外的XmppSession或连接信息。Java XMPP servlet容器的架构使流的协商终止于XMPP服务层而不是应用层。这就允许应用程序具有在云计算资源中从一个服务器移植到另一个服务器的可移植性。图3示出了用于XMPP Servlet模型的应用程序整体架构。XMPP Servlet容器332管理应用程序和Servlet。可以将多于一个应用程序312,322部署至容器322,并且一个应用程序312可以包含多于一个Servlet314,316。但是,在一个应用程序中只能有一个主Servlet (MAIN Servlet)。容器管理一个应用程序中所有Servlet的生命周期,但是它仅将输入请求分配给MAIN Servlet,并且随后MAIN Servlet即可通过应用程序自身的业务规则将请求分配给其他的Servlet。每一个应用程序在部署时都必须有部署描述符,描述符描述应用程序的性质和载入的Servlet。通过读取描述符容器即可获知如何初始化应用程序以及载入哪些Servlet和如何配置它们。正如同样结合图2介绍的那样,XMPP Servlet容器302在网络点340保持所有的网络连接,并且在XMPP服务层342保留XMPP流信息。以下给出頂出席的一个示例。在RFC3921内定义的XMPP頂应用程序中,在建立会话后,客户端为了表示其通信可用性而向服务器发送初始出席信号。由应用程序和容器执行的步骤如下:I)在流协商后,在客户端和服务器之间建立会话。2)客户端向服务器发送出席节。3)容器从侦听的网络终端接收出席节。4)容器通过使用XML分析程序分析节来验证节,在验证其为有效XML元素后,容器根据XMPP核心协议(RFC3920)验证出席节,例如验证来自属性是流协商过程中已经过确认的内容。
5)在验证节之后,容器查找应该调用的合适Servlet并随后用封装在Servlet请求中的出席节来调用它。6) Servlet从容器接收经过验证的出席节,然后根据頂应用程序进行处理,例如在“subscription”属性设定为“to”或“both”值时向用户名单中存在JID的联系人发送探测出席节,在“subscription”属性设定为“from”或“both”值时向用户名单中存在JID的联系人广播出席节。7)容器接收由Servlet发送的节并根据XMPP核心协议中定义的用于路由节的服务器规则将其路由至合适的实体。Servlet 接 口图4示出了 XMPP Servlet接口的继承。Servlet接口是Servlet API并且因此是XMPP Servlet API的核心抽象。所有的Servlet都直接实现该接口或者更通常地是通过扩展实现该接口的类而实现该接口。通用的Servlet API定义了实现Servlet接口的类GenericServlet0 XMPP Servlet API 定义了扩展 GenericServlet 并且根据接收到的消息类型执行分配的类XmppServlet。对于绝大多数情况,开发人员都应扩展XmppServlet以实现他们的Servlet。图5更加详细地示出了图4中所示的XMPP Servlet接口。用于XMPP消息的对象模型XMPP消息由Servlet容器处理。基本的Servlet接口定义了用于处理客户端请求的服务方法。对Servlet容器路由至Servlet实例的每一条消息都调用该方法。在Servlet应用程序中处理并发消息通常都需要开发人员设计出能够在特定时刻应对在服务中运行多线程的Servlet。通常,Servlet容器通过在不同线程上并发执行服务方法来处理对同一Servlet的并发请求。调用XMPP Servlet以处理所有的输入节。在任何情况下,节都被封装在ServletRequest消息或ServletResponse消息内并通过Servlet接口中的服务方法输送。void service(ServletRequest req, ServletResponse res)throws ServletException, java.10.1OException ;如果消息是请求,那么应答自变量必须是空值,而如果消息是应答,那么请求自变量必须是空值。自变量在被调用以处理XMPP事件时必须根据可能的情况实现对应的接口。例如,如果是IQ设定节,那么必须实现IQRequest接口,而如果是IQ结果节,那么必须实现IQResponse接口。XmppServlet实现的服务方法分别将输入消息分配给用于请求的doRequest方法和用于应答的doResponse方法:Protected void doRequest(XmppServletRequest req);Protected void doResponse(XmppServletResponse resp);这些方法随后如以下的表I和表2中所述进行进一步分配。XMPP Servlet抽象子类定义超出基本Servlet接口可用范围的多种方法。这些方法由类中的doRequest方法自动调用(并且由服务间接调用)以帮助处理基于XMPP的请求。表I列出了用于XMPP Servlet的请求处理方法:
权利要求
1.一种服务器,包括: 应用程序,以用于可扩展消息处理与出席协议(XMPP)的Java servlet API编写并且在用于为XMPP实体服务的Java虚拟机上执行; Java XMPP servlet容器,支持用于XMPP的Java servlet API以处理XMPP专用的网络传输、流和节; 所述Java XMPP servlet容器进一步包括: 位于传输层的网络点,用于侦听、路由和管理与XMPP实体之间的网络连接; XMPP服务层,用于通过所述网络点管理与XMPP实体之间的XMPP会话和流;以及 应用层,用于通过所述XMPP服务层管理与XMPP实体之间的XMPP节。
2.按权利要求1所述的服务器,其中: 所述Java XMPP servlet容器执行的基本功能包括: 管理网络侦听点; XMPP TLS协商以及在应用程序被设置为使用容器管理安全性时的SASL协商; 资源整合;以及 XML分析。
3.按权利要求1所述的服务器,进一步包括: 应用程序路由器,由所述Java XMPP servlet容器调用以选择XMPP servlet应用程序为初始请求服务。
4.按权利要求3所述的服务器,其中: 初始请求包含有属性;并且 应用程序路由器根据属性值选择合适的应用程序。
5.按权利要求1所述的服务器,其中: Java XMPP servlet API 定义了扩展通用 Java servlet API 的类;并且通用Java servlet API定义了为基于标准的Java servlet模型中的通用特性提供API的通用类。
6.按权利要求5所述的服务器,其中: 通用Java servlet API接口定义了用于处理客户端请求的服务方法; 对servlet容器路由至servlet实例的每一条消息都调用所述服务方法;并且 由XMPP servlet处理的XMPP节被封装在通过所述服务方法输送的消息内。
7.按权利要求1所述的服务器,其中: Java XMPP servlet API定义了不同的接口,专门用于处理不同类型的XMPP流,包括处理流打开标签、流关闭标签、流错误xml元素和流特性xml元素。
8.按权利要求1所述的服务器,其中: Java XMPP servlet API定义了不同的接口,专门用于处理不同类型的XMPP节,包括出席节、IQ设定节和消息节。
9.按权利要求1所述的服务器,其中: Java XMPP servlet API定义了不同的接口,专门用于处理不同类型的XMPP SASL协商,包括SASL授权请求、SASL质询、SASL应答、SASL终止、SASL失败和SASL成功。
10.按权利要求1所述的服务器,其中:Java XMPP servlet API定义了用于处理XMPP IQ结果或错误节的接口。
11.一种操作服务器的方法,包括: 部署以用于可扩展消息处理与出席协议(XMPP)的Java servlet API编写的应用程序; 提供Java XMPP servlet容器,支持用于XMPP的Java servlet API以处理XMPP专用的网络传输、流和节; 所述Java XMPP servlet容器进一步包括: 位于传输层的网络点,用于侦听、路由和管理与XMPP实体之间的网络连接; XMPP服务层,用于通过所述网络点管理与XMPP实体之间的XMPP会话和流;以及 应用层,用于通过所述XMPP服务层管理与XMPP实体之间的XMPP节;并且 在所述服务器的Java虚拟机上执行应用程序以为XMPP实体服务。
12.按权利要求11所述的方法,其中: 所述Java XMPP servlet容器执行的基本功能包括: 管理网络侦听点; XMPP TLS协商以及在应用程序被设置为使用容器管理安全性时的SASL协商; 资源整合;以及 XML分析。
13.按权利要求11所述的方法,进一步包括: 提供应用程序路由器,由所述Java XMPP servlet容器调用以选择XMPP servlet应用程序为初始请求服务。
14.按权利要求13所述的方法,其中: 初始请求包含有属性;并且 应用程序路由器根据属性值选择合适的应用程序。
15.按权利要求11所述的方法,其中: Java XMPP servlet API 定义了扩展通用 Java servlet API 的类;并且通用Java servlet API定义了为基于标准的Java servlet模型中的通用特性提供API的通用类。
16.按权利要求15所述的方法,其中: 通用Java servlet API接口定义了用于处理客户端请求的服务方法; 对servlet容器路由至servlet实例的每一条消息都调用所述服务方法;并且 将由XMPP servlet处理的XMPP节封装在通过所述服务方法输送的消息内。
17.按权利要求11所述的方法,其中: Java XMPP servlet API定义了不同的接口,专门用于处理不同类型的XMPP流,包括处理流打开标签、流关闭标签、流错误xml元素和流特性xml元素。
18.按权利要求11所述的方法,其中: Java XMPP servlet API定义了不同的接口,专门用于处理不同类型的XMPP节,包括出席节、IQ设定节和消息节。
19.按权利要求11所述的方法,其中: Java XMPP servlet API定义了不同的接口,专门用于处理不同类型的XMPP SASL协商,包括SASL授权请求、SASL质询、SASL应答、SASL终止、SASL失败和SASL成功。
20.按权利要求11所述的方法,其中: Java XMPP servle t API定义了用于处理XMPP IQ结果或错误节的接口。
全文摘要
一种通信系统和方法,包括在Java虚拟机内主持交互式语音应答或自助式应用程序的服务器。为了发挥Java servlet模型的优势和功能,一种Java XMPP(可扩展消息处理与出席协议)servlet容器被提供给服务器使用以使得通信应用程序可以用由XMPP servlet API定义的对象以及用由基于标准的Java EE平台例如HTTP和SIP servlet定义的对象来编写,目的是为了服务于XMPP客户端。除了Java servlet模型中通用的类对象以外,API还提供了XMPP专用的类对象集合。Java XMPP servlet容器包括在传输层用于处理网络连接的网络点,用于管理XMPP会话和流的XMPP服务层以及用于管理XMPP节的应用层。
文档编号H04L12/58GK103098433SQ201180029966
公开日2013年5月8日 申请日期2011年4月18日 优先权日2010年4月18日
发明者陈为, 祝效普, 刘志雨, 张普兵 申请人:Voxeo研究有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1