CN103098433A - 用于xmpp协议的servlet api和方法 - Google Patents
用于xmpp协议的servlet api和方法 Download PDFInfo
- Publication number
- CN103098433A CN103098433A CN2011800299662A CN201180029966A CN103098433A CN 103098433 A CN103098433 A CN 103098433A CN 2011800299662 A CN2011800299662 A CN 2011800299662A CN 201180029966 A CN201180029966 A CN 201180029966A CN 103098433 A CN103098433 A CN 103098433A
- Authority
- CN
- China
- Prior art keywords
- xmpp
- servlet
- java
- application program
- api
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/20—Network management software packages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
一种通信系统和方法,包括在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节的应用层。
Description
技术领域
本发明涉及远程通信和网络计算机电话系统,包括互联网和公共交换电话系统(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应用程序来进行正当交易等。
后面的示例通常被称为自助式应用程序。在语音领域,自助式应用程序被称为IVR。IVR涉及交互式语音应答并且是一种与电话呼叫方自动交互的技术。企业正越来越多地转向IVR以降低常规的销售、服务、催收催缴、查询和支持公司往来通话的成本。
如前所述,IVR是一种自助式应用程序的具体示例,其中用户可以通过与应用程序交互而自助地执行某些任务。传统的IVR仅允许用户通过语音信道与其交互。类似地,网页机器人(web bot)是一种允许用户利用文本信道执行任务的自助式应用程序。
这种平台的一个示例是在多信道环境中主持用语音、文本消息进行交互的IVR应用程序和其他客户端。
文本消息已经随着便携式电话和计算设备的普及而变得非常流行。文本消息是通过点对点或一点对多点地交换文本消息来进行通信的一种形式。文本消息最常见的形式是电子邮件、网络博客和短信。短信(“IM”)几乎是实时地交换消息。现有多种专用的短信网络,每一种都利用本地协议为每一个自身的客户端提供IM服务。也存在开源并使用XMPP协议的IM网络。
XMPP是指可扩展消息处理与出席协议并且它是由Jabber开源组织在1999年开发的用于出席和实时通信的开放性XML技术集合。
用于Java应用程序的XMPP服务已经在Google Talk中实施作为XMPP扩展应用以使其兼容XMPP,这是一种由美国加州Google公司提供的聊天应用程序。这通过将XMPP消息封装为MIME消息并且将MIME消息置于HTTP内而实现。因此从应用程序的角度看,实际上接收的是HTTP消息而且必须使用Google专用API以从HTTP消息内的MIME消息中提取出XMPP消息。这种方法并不完全兼容基于标准的Java servlet模型。
希望获得一种允许与文本消息的客户端交互的自助式应用程序。因此希望获得一种融合通信应用程序平台,其类似于供web客户端使用的HTTPServlet和供语音客户端使用的SIP Servlet,允许在应用程序的服务器端轻松地开发和执行应用程序。
发明内容
一种通信系统和方法,包括在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节的应用层。
应用程序允许用Java XMPP servlet API编写,目的是为了发挥Javaservlet模型的优势和功能,以使得编程不必关注底层的传输和连接功能而是能够集中在业务逻辑上。
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”)几乎是实时地交换消息。现有多种专用的短信网络,每一种都利用本地协议为每一个自身的客户端提供IM服务。也存在开源并使用XMPP协议的IM网络。
XMPP是指可扩展消息处理与出席协议并且它是由Jabber开源组织在1999年开发的用于出席和实时通信的开放性XML技术集合。
图1实际上示出了一种多信道、自助式的应用程序平台。基本上,多信道自助式的应用程序平台100主持一种或多种用于通过多信道与各种客户端交互的自助式应用程序300。不同的客户端包括通信模式是借助于语音信道的语音客户端20,22。还包括通信模式是借助于文本消息信道的文本消息客户端30。通信应用程序服务器200通过Servlet容器330使IM客户端30借助IM网络直接或间接地与IM(XMPP)服务器互动。另外,实施为供servlet容器330使用的插件程序的应用程序路由器338用于客户端到适当应用程序的路径选择。
可以发现语音应用程序中的某些动作与文本消息应用程序之间的对应性。例如,播放音频文件类似于用IM发送文件,记录通话类似于记录文本消息的对话,传输通话类似于建立(涉及多个IM用户的)聊天等。
文本消息客户端30与应用程序平台100内主持的自助式应用程序进行交互应该就像自助式应用程序是网页机器人一样。文本消息的常用类型是短信(“IM”),其中文本消息几乎实时地在各方之间交换。开源的IM客户端(OS)或(XMPP客户端)与具有XMPP服务器的开源网络通信。各种本地IM网络的示例有AOL Instant Messenger、MSN Messenger、Yahoo Messenger、Lotus Sametime、Google Talk等。
通常,每一种IM网络都根据其自身的本地协议工作并且它们不能协同工作。另一种类型的IM网络如前所述以XMPP的开放性标准为基础。Jabber服务器为其客户端提供IM服务。Google Talk是基于XMPP标准的另一个例子。
优选地,XMPP服务器50被用作供多信道自助式应用程序平台使用以与各种不同的IP网络协同工作的桥梁。传输模块(未示出)随XMPP服务器50一起使用以用作连往各种IM网络的XMPP网关。对于XMPP服务器50来说,多信道自助式应用程序平台100仅仅是另一个XMPP客户端40。用这种方式,各种IM客户端30就能够通过传输模块和XMPP服务器50与多信道自助式应用程序平台100通信。当IM客户端30已经是XMPP网络的一部分时,它就不再需要通过传输模块“传输”,而是简单地直接与XMPP服务器对话即可。
在传统的网络传播模式中,运行网络浏览器的客户机形式的用户代理向网络服务器发出请求。网络服务器返回对请求的应答。通信根据HTTP(超文本传输协议)进行。具体地,网络浏览器请求网络资源例如由来自网络服务器的网址明确的网页。通常网络服务器通过返回请求的网页来应答。网页可以包含文本内容以及用于让浏览器在网页中显示文本的嵌入指令。在更为复杂的应用程序中,网页经常通过使用服务器端程序动态生成并且可以加入例如来自后端数据库的查询结果等内容。因此,部分内容并非硬编码在网页上而是由网络服务器动态地生成和显示。服务器端程序也可以用于将数据从客户端提交至后端数据库。
通常,这些服务器端程序被实施为符合CGI(通用网关接口)协议的脚本。CGI是在网页服务器上执行任务以生成并显示动态内容或者执行其他后端功能的代码模块。
但是,CGI具有若干缺点。首先,CGI不太容易移植,原因在于不同的网络服务机器具有不同的处理器且操作系统可能需要它们自用版本的脚本。其次,CGI不能高效地使用服务器的资源。不同的CGI与启动它们的服务器相比在不同的进程上下文中运行。对于每一个请求都有创建一个新进程的开销,并且不同的进程无法访问服务器资源中的公共集。
JAVATM servlet模型解决了CGI的这些缺点。Servlet是用高度可移植性的JAVATM编程语言编写的模块,原因在于它们是在相同的与处理器硬件或操作系统无关的JAVA虚拟机中运行。在面向对象的Java编程语言中,分析HTTP请求并使之与软件对象交互,软件对象根据由应用程序操作的实际对象建模。类似地,应答被加工为符合HTTP协议并随后发送给请求者。Servlet运行在Java服务器的多线程环境中并且允许通过单独的线程来处理每一个请求。与并发请求需要载入多份CGI脚本副本的CGI相比,还有一种Java脚本的情况则需要载入到处理器内存中。原始Servlet符合HTTP协议并且可以被视为“HTTP servlet”。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)是一种基于容器的方法(根据HTTP servlet传播模式建模)以利用会话发起协议(SIP)开发通信应用程序。SIP servlet是一种执行SIP信令的Java编程语言服务器端组件。SIPservlet由SIP servlet容器管理,其通常是实现SIP的应用程序服务器的一部分。SIP servlet通过响应输入的SIP请求并返回对应的SIP应答而与客户端交互。SIP servlet由Java Servlet Specification提供的通用servlet API构建,Java Servlet Specification是一种通过Java规范请求(JSR)过程由Java Communi ty Proces s(SM)Program建立的开放性标准。
将SIP Servlet(JSR 289)用于通话控制是为了发挥Servlet模型的优势。由此,应用程序开发人员就能够根据开放性标准JSR 289开发出底层通话控制对象方面的通信应用程序组件以及HTTP Servlet和SIP Servlet形式的API。
因此希望能够在以XMPP协议工作的Servlet模型基础上提供API集合。
现有的Java Servlet模型例如HTTP Servlet和SIP Servlet均以请求-应答模型为基础。在HTTP的情况下,交互是同步的。在SIP的情况下,交互是异步的。尽管HTTP Servlet基本上是无状态的,但是SIP Servlet在会话中必须保持状态。
在XMPP的情况下,交换的是IM消息并且不存在固有的请求-应答概念。交互基本上是异步的,不过握手交互可以是同步的。类似地,IM基本上是无状态的。但是,在使用IM客户端与自助式应用程序交互时需要保持状态。因此XMPP servlet规格必须要克服这些差异。
XMPP SERVLET和API
可扩展消息处理与出席协议(XMPP)是一种用于近实时消息处理、出席和请求-应答服务的开放性可扩展标记语言XML协议。XMPP的核心特性在由XMPP Standards Foundation(原Jabber Software Foundation)维护的Extensible Messaging and Presence Protocol:Core[RFC3920]中定义。核心特性包括XMPP的专用特性例如XML流、TLS和SASL的使用以及根流的<message/>、<presence/>和<IQ/>子流。这些特性提供了用于多种类型的近实时应用程序例如Core[RFC3921]中定义的短信(IM)和出席应用程序的构建模块。
所有通信架构中很重要的一方面就是可编程性,并且XMPP Servlet API的用途就是将用于提供基于XMPP服务的平台标准化。术语平台在此被用于包括Java API自身以及涵盖封装和部署应用程序的标准。平台主要提供[RFC 3920]中定义的核心XMPP特性和架构功能,以使XMPP应用程序例如XMPP IM应用程序能够简单地在平台上构建。
XMPP Servlet API能够提供以下优点:
XMPP的功能:允许应用程序实现相当完整的XMPP功能集合,包括流特性协商、SASL功能、节的接收和输送。
简单性:容器处理“非关键性的”复杂事务例如管理网络侦听点、节的路由、流特性协商等。因此应用程序能够在其具体的应用规则上。
融合应用程序:可以让容器支持融合应用程序,也就是跨越多种协议和接口例如Web、IM、SIP和其他Java EE接口的应用程序。
第三方应用程序开发:Servlet模型支持第三方应用程序开发。XML部署描述符被用于从应用程序开发人员向部署人员传递应用程序信息。
电信运营商级:Servlet在容器管理的会话对象内存储应用程序。实现可以坚持和/或复制该数据以实现高度的可用性。
XMPP Servlet是一种由XMPP Servlet容器管理的基于Java的应用程序组件,就像HTTP Servlet是由HTTP容器管理一样。XMPP Servlet执行XMPP应用程序功能例如表现为XMPP IM应用程序的XMPP Servlet。XMPPServlet负责用于根据应用程序规则进行XMPP节处理,例如通过发送探测出席节和广播出席节来处理初始出席节。XMPP Servlet还能通过经XMPPServlet 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 StandardEdition(J2SE 5.0)或Java′Platform,Enterprise Edition 5(Java EE 5)的环境中,这些限制应该利用由Java平台(Java Platform)定义的许可架构设置。例如,高端应用程序服务器可以限制创建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模型的应用程序整体架构。XMPPServlet容器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流信息。
以下给出IM出席的一个示例。在RFC3921内定义的XMPP IM应用程序中,在建立会话后,客户端为了表示其通信可用性而向服务器发送初始出席信号。由应用程序和容器执行的步骤如下:
1)在流协商后,在客户端和服务器之间建立会话。
2)客户端向服务器发送出席节。
3)容器从侦听的网络终端接收出席节。
4)容器通过使用XML分析程序分析节来验证节,在验证其为有效XML元素后,容器根据XMPP核心协议(RFC3920)验证出席节,例如验证来自属性是流协商过程中已经过确认的内容。
5)在验证节之后,容器查找应该调用的合适Servlet并随后用封装在Servlet请求中的出席节来调用它。
6)Servlet从容器接收经过验证的出席节,然后根据IM应用程序进行处理,例如在“subscription”属性设定为“to”或“both”值时向用户名单中存在JID的联系人发送探测出席节,在“subscription”属性设定为“from”或“both”值时向用户名单中存在JID的联系人广播出席节。
7)容器接收由Servlet发送的节并根据XMPP核心协议中定义的用于路由节的服务器规则将其路由至合适的实体。
Servlet接口
图4示出了XMPP Servlet接口的继承。Servlet接口是Servlet API并且因此是XMPP Servlet API的核心抽象。所有的Servlet都直接实现该接口或者更通常地是通过扩展实现该接口的类而实现该接口。通用的ServletAPI定义了实现Servlet接口的类GenericServlet。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.io.IOException;
如果消息是请求,那么应答自变量必须是空值,而如果消息是应答,那么请求自变量必须是空值。自变量在被调用以处理XMPP事件时必须根据可能的情况实现对应的接口。例如,如果是IQ设定节,那么必须实现IQRequest接口,而如果是IQ结果节,那么必须实现IQResponse接口。XmppServlet实现的服务方法分别将输入消息分配给用于请求的doRequest方法和用于应答的doResponse方法:
Protected void doRequest(XmppServletRequest req);
Protected void doResponse(XmppServletResponse resp);
这些方法随后如以下的表1和表2中所述进行进一步分配。
XMPP Servlet抽象子类定义超出基本Servlet接口可用范围的多种方法。这些方法由类中的doRequest方法自动调用(并且由服务间接调用)以帮助处理基于XMPP的请求。
表1列出了用于XMPP Servlet的请求处理方法:
这三种方法是用于节的处理。应用程序通常实现这三种方法以处理对应的节,例如IM应用程序实现用于消息交换的doMessage方法。
doResponse方法将接收到的应答分配给接下来的方法。只有一种方法用于IQ结果或错误节。应用程序在想要处理IQ结果或错误节时需要实施该方法。
表2列出了用于XMPP Servlet的应答处理方法:
XMPP概念接口
在XMPP Servlet API中,一些XMPP的概念被映射至java接口。
JID接口表示任何实体的JID,对应于XMPP核心中的JID概念。JID是一种类和一种XMPP地址。
请求和应答
图6示出了XMPP Servlet的结构,给出了XMPP Servlet请求和应答对象的整体继承架构。
请求和应答是在容器和Servlet之间交换的对象。当容器接收到输入XML元素时,就将其与其他必要的信息例如节从属的XmppSession对象封装在请求或应答中并随后通过Servlet接口将请求或应答传输至合适的Servlet。请求和应答是用流传输的实际封装节或XML元素。
为了适应Servlet模型,所有请求接口都是ServletRequest接口的扩展,而所有应答接口都是ServetResponse接口的扩展。除了继承的方法以外,这些请求和应答接口只有几种它们自己的方法,这些方法是:
用于获取该XmppServletResponse所属XmppSession的XmppSessiongetSession();
用于发出该请求或应答作为XML元素的void send()。
会话
XMPP应用程序为了提供目标服务通常必须要处理多条消息。由于Servlet自身是无状态的,因此API提供了允许消息相关并且明确如何在“应用程序实例”中处理容器相关的应用程序数据和后续消息的机制。HTTPServlet API以HTTP会话的形式提供了这样的机制。HttpSession接口允许Servlet关联来自特定客户端的一系列HTTP请求并且还用作应用程序数据的存储器。
XmppSession接口是等价于HttpSession的XMPP Servlet API。它表示两个实体之间点对点的关系。但是,我们需要融合应用程序以利用多种协议例如SIP、HTTP、电子邮件等与其他的网络元素通信,以使应用程序的组成允许多种应用程序共同发挥作用。这就意味着在单次通话中可以调用多于一个应用程序并且任何一个应用程序实例都可以包括多种点对点的关系,并且这些关系可以使用不同的协议。这在XMPP Servlet API中通过协议会话和应用程序会话的概念体现。协议会话是通常表示点对点关系的协议专用会话对象。XmppSession、HttpSession、SipSession接口都是协议会话的例子。应用程序会话在某种意义上表示应用程序实例。它包含多个协议会话并且还被用作供应用程序数据使用的容器。属于同一应用程序示例的所有协议会话都属于同一SipApplicationSession,该名称继承自SIP规格[JSR289]。容器作为优化可以迟缓地建立应用程序会话和XMPP会话对象,例如直到应用程序请求时才延期建立。结果与总是建立会话对象的实施方式相比应该没有区别。
底层的TCP连接和XMPP流[RFC 3920]被模型化为XmppConnection。XmppSession仅与XmppConnection松散耦合。这就允许通过对底层网络连接和流协商的了解在服务器集群内的不同节点中复制XmppSession。这样的复制为集群Xmpp Servle容器集合提供了负载平衡和容错能力。
容器功能
XMPP Servlet API的目标之一是保持简单的应用程序编程模型。这一点通过将大量任务委托给容器并解放应用程序集中在其业务逻辑上而实现。例如管理网络侦听点、TLS协商、XMPP XML元素分析等任务都通过容器处理。总体而言,容器完成了以下任务:
1)提供基本的服务器功能例如管理网络侦听点。
2)提供XMPP core[RFC3920]中明确的功能例如TLS协商和如果应用程序被设置为使用容器管理安全性时的SASL协商,以及资源整合和XML分析。
3)提供API的实现。应用程序通过使用XMPP Servlet API与容器交互而实现了XMPP扩展协议例如XMPP Instant Messaging and Presenceprotocol[RFC3921]中明确的应用程序特定任务。应用程序还可以利用XMPPServlet API完全控制XMPP核心中明确的某些功能。例如,应用程序如果不使用容器管理的安全性则可以通过自身使用XMPP Servlet API来实现SASL协商。作为经验规则,XMPP Servlet API“隐藏”的功能由容器管理。作为示例,API给出了XmppSession接口并且允许应用程序对XmppSession执行例如请求操作、获取和设置属性、无效等操作,但是不允许应用程序显式地建立新的XmppSession。XmppSession是由容器管理的对象并且作为输入请求处理的结果或者由应用程序创建新请求的结果而建立。API在编写简单XMPP Servlet应用程序的能力但与此同时允许有使用基本API的强大结构之间努力权衡利弊。
应用程序选择和Servlet选择
XMPP Servlet应用程序服务器的一种重要功能是选择用于调用的应用程序并将XMPP消息路由至这些应用程序。XMPP Servlet容器中的应用程序选择和Servlet选择策略类似于SIP Servlet API[JSR289]。XMPP应用程序选择过程中的关键组件是图1和图2中以逻辑实体示出的应用程序路由器338。应用程序路由器338由容器调用以选择为初始请求服务的XMPPServlet应用程序。它实施了用于选择调用哪些应用程序的逻辑。应用程序路由器是容器工作所必需的,但它是独立于容器的逻辑实体。应用程序路由器仅仅负责用于应用程序选择而不能实现应用程序的逻辑。
容器从其他实体接收<stream>打开标签请求,调用应用程序路由器以获得要调用的应用程序,并随后调用选中的应用程序。通用的应用程序路由器将检查<stream>打开标签中的to属性,并且根据to属性的值选择合适的应用程序。初始请求根据应用程序选择过程进行路由。<stream>打开标签请求的路由建立起应用程序的路径。后续的请求和应答随即沿初始请求采用的路径来路由。
应用程序负责用于Servlet选择。如应用程序架构中所述,每一个应用程序都有一个MAIN Servlet。容器仅将所有的输入请求都分配给MAINServlet,并且随后MAIN Servlet通过应用程序自身的业务规则将请求分配给应用程序内的其他Servlet。
流特性
在XMPP协议中,当服务器接受TCP连接并且接收<stream>打开标签用于初始化XMPP流时,服务器通过打开TCP连接并向初始实体发送XML流指针并随后通过发送<features>XML元素通告支持的特性来应答。在XMPPServlet API中,XMPP core[RFC3920]中描述的三种特性TLS、SASL和资源整合都必须在部署描述符中进行设置。如果应用程序需要三种特性中的任何一种,可以将其设置在部署描述符中,随后容器即可在接收到流请求时向初始实体通告这些特征。如果应用程序需要其他的应用程序专用特性,那么必须做以下的事情:1)在部署描述符中设置XmppConnectionListener以接收由初始实体中的流打开请求触发的XmppConnectionEvent;2)在XmppConnectionListener中实施onStream(XmppConnectionEvent event)并在该方法中返回应用程序专用特性。
TLS协商
TLS协商由容器完成,应用程序需要做的唯一一件事就是将其设置在部署描述符中。
SASL协商
应用程序可以设置为使用部署描述符中的容器管理安全性,以使容器能够通过使用设置信息来完成所有的SASL协商。应用程序也可以在SASL协商期间通过注册其自身的SASL机制提供方并选择另一种机制来处理SASL协商。
表3列出了XmppFactory中提供的注册和解除注册SASL机制的方法:
一旦XmppConnectionListener选择了机制,容器即可根据由XmppConnectionListener选择的机制来完成验证。
资源整合
JID中的资源标识符被用于标识与客户端的特定会话,并且容器负责用于保留会话信息,以使资源整合过程必须由容器自己完成。当应用程序需要资源整合功能时,它只需要在部署描述符中设置需求即可。当容器发现资源整个结构时,它自身即可完成资源整合过程并在XmppSession对象中设定协调资源的标识符。
部署描述符
以下是部署描述符实例的代码段。该代码段示出了XMPP部署描述符与SIP和HTTP部署描述符的主要不同部分。在代码段中有三个部分。client-login-config部分设置了容器何时接受来自客户端的连接的策略。server-login-config元素设置了容器何时接受来自其他XMPP服务器的连接的策略。loginto-otherserver-config元素设置了容器何时发起到其他XMPP服务器的连接的策略。在每一部分中都有四个元素。appProcessStream元素被用于设置应用程序是否想要接收<stream>打开标签请求以及在任意三种类型的请求即RAW<stream>请求、TLS协商后接收的<stream>请求和SASL协商后接收的<stream>请求中接收哪一种<stream>请求。TLS-configure元素被用于设置TLS的要求层级。SASL-mechanism被用于设置SASL机制。Resourcebinding元素被用于设置是否需要资源整合。
尽管已经介绍的本发明实施例是优选的实施方式,但是本领域技术人员应该理解其各种变形也是可行的。因此,本发明有权获得所附权利要求完整范围内的保护。
Claims (20)
1.一种服务器,包括:
应用程序,以用于可扩展消息处理与出席协议(XMPP)的Java servletAPI编写并且在用于为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容器调用以选择XMPPservlet应用程序为初始请求服务。
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 servlet API定义了用于处理XMPP IQ结果或错误节的接口。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32534810P | 2010-04-18 | 2010-04-18 | |
US61/325,348 | 2010-04-18 | ||
US13/088,394 | 2011-04-17 | ||
US13/088,394 US9215079B2 (en) | 2010-04-18 | 2011-04-17 | Servlet API and method for XMPP protocol |
PCT/US2011/032907 WO2011133471A1 (en) | 2010-04-18 | 2011-04-18 | Servlet api and method for xmpp protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103098433A true CN103098433A (zh) | 2013-05-08 |
Family
ID=44789045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800299662A Pending CN103098433A (zh) | 2010-04-18 | 2011-04-18 | 用于xmpp协议的servlet api和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9215079B2 (zh) |
EP (1) | EP2561656B1 (zh) |
CN (1) | CN103098433A (zh) |
WO (1) | WO2011133471A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103354595A (zh) * | 2013-07-12 | 2013-10-16 | 何建亿 | 实现用户零配置的p2p网络摄像机系统 |
CN105493465A (zh) * | 2013-07-20 | 2016-04-13 | 思科技术公司 | 网络环境中的用于云计算的基于XMPP的UPnP设备架构 |
CN105577525A (zh) * | 2015-12-25 | 2016-05-11 | 中兴通讯股份有限公司 | 融合通信交互方法,装置及系统 |
CN109298952A (zh) * | 2018-08-27 | 2019-02-01 | 优视科技新加坡有限公司 | 应用程序编程接口的调用方法及其装置 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9634993B2 (en) | 2010-04-01 | 2017-04-25 | Cloudflare, Inc. | Internet-based proxy service to modify internet responses |
US9049247B2 (en) | 2010-04-01 | 2015-06-02 | Cloudfare, Inc. | Internet-based proxy service for responding to server offline errors |
US9215079B2 (en) * | 2010-04-18 | 2015-12-15 | Tropo, Inc. | Servlet API and method for XMPP protocol |
EP2469885B8 (de) * | 2010-12-23 | 2014-09-03 | Unify GmbH & Co. KG | Verfahren zur Integration von Funktionen eines Telekommunikationsnetzes in ein Datennetz |
US8285808B1 (en) * | 2011-05-20 | 2012-10-09 | Cloudflare, Inc. | Loading of web resources |
US8996350B1 (en) | 2011-11-02 | 2015-03-31 | Dub Software Group, Inc. | System and method for automatic document management |
US9473581B2 (en) * | 2013-02-04 | 2016-10-18 | Oracle International Corporation | Integrated web-enabled session border controller |
US9509745B2 (en) * | 2013-02-04 | 2016-11-29 | Oracle International Corporation | Java API for programming web real-time communication applications |
US9331967B2 (en) * | 2013-02-04 | 2016-05-03 | Oracle International Corporation | Browser/HTML friendly protocol for real-time communication signaling |
US9307031B2 (en) | 2013-02-04 | 2016-04-05 | Oracle International Corporation | Generic model for customizing protocol behavior through javascript |
US9712593B2 (en) | 2013-02-04 | 2017-07-18 | Oracle International Corporation | Javascript API for WebRTC |
US10476915B2 (en) | 2013-02-04 | 2019-11-12 | Oracle International Corporation | Real-time communication signaling gateway |
US9648049B2 (en) * | 2013-02-04 | 2017-05-09 | Oracle International Corporation | System and method for extending IP multimedia subsystem to HTML5 environments |
WO2014190094A1 (en) * | 2013-05-21 | 2014-11-27 | Ecrio, Inc. | Real-time rich communications client architecture |
EP3164964A4 (en) * | 2014-07-03 | 2018-01-17 | Hewlett-Packard Development Company, L.P. | Receive device management request through firewall |
KR101702583B1 (ko) * | 2015-10-02 | 2017-02-03 | 배재대학교 산학협력단 | XMPP(Extensible Messaging and Presence Protocol)를 이용한 네트워크 성능 모니터링 시스템 및 그 모니터링 방법 |
CN106603593A (zh) * | 2015-10-15 | 2017-04-26 | 北京京东尚科信息技术有限公司 | 一种基于适配的http调用方法及装置 |
KR102389004B1 (ko) * | 2016-10-07 | 2022-04-22 | 콘비다 와이어리스, 엘엘씨 | 일반적 상호연동 및 확장성을 위한 서비스 계층 리소스 관리 |
US11546405B2 (en) * | 2018-06-18 | 2023-01-03 | Jpmorgan Chase Bank, N.A. | Methods for exposing mainframe data as a web service and devices thereof |
US11381404B2 (en) * | 2018-11-09 | 2022-07-05 | Microsoft Technology Licensing, Llc | Trusted platform module attestation flow over simple authentication and security layer with multiple symmetric key identification |
US11575585B2 (en) * | 2019-09-25 | 2023-02-07 | Government Of The United States, As Represented By The Secretary Of The Army | Ground combat vehicle communication system |
CN112511789B (zh) * | 2020-11-30 | 2023-04-07 | 重庆满集网络科技有限公司 | 一种即时通讯扩展方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1119122A3 (en) * | 2000-01-20 | 2005-01-19 | Matsushita Electric Industrial Co., Ltd. | Digital broadcast transmission method, broadcast transmitter for transmitting digital broadcast signals and broadcast receiver for receiving said digital broadcast signals |
US6922411B1 (en) | 2000-09-29 | 2005-07-26 | Voxeo Corporation | Networked computer telephony system driven by web-based applications |
US20020198943A1 (en) | 2001-06-20 | 2002-12-26 | David Zhuang | Web-enabled two-way remote messaging facility |
US20070016680A1 (en) | 2005-06-30 | 2007-01-18 | Burd Gary S | Method and system for proxy-based file sharing |
US9215079B2 (en) * | 2010-04-18 | 2015-12-15 | Tropo, Inc. | Servlet API and method for XMPP protocol |
-
2011
- 2011-04-17 US US13/088,394 patent/US9215079B2/en active Active
- 2011-04-18 CN CN2011800299662A patent/CN103098433A/zh active Pending
- 2011-04-18 EP EP11717857.4A patent/EP2561656B1/en active Active
- 2011-04-18 WO PCT/US2011/032907 patent/WO2011133471A1/en active Application Filing
-
2015
- 2015-12-14 US US14/968,883 patent/US9479400B2/en active Active
Non-Patent Citations (2)
Title |
---|
KARSTEN ORLIN: "Improving the performance of the in-band byte stream file transfer XMPP extension", 《UNIVERSITY OF TROMSO,MASTER THESIS IN INFORMATICS》 * |
P. SAINT-ANDRE: "Extensible Messaging and Presence Protocol (XMPP): Core", 《IETF STANDARD》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103354595A (zh) * | 2013-07-12 | 2013-10-16 | 何建亿 | 实现用户零配置的p2p网络摄像机系统 |
CN105493465A (zh) * | 2013-07-20 | 2016-04-13 | 思科技术公司 | 网络环境中的用于云计算的基于XMPP的UPnP设备架构 |
CN105577525A (zh) * | 2015-12-25 | 2016-05-11 | 中兴通讯股份有限公司 | 融合通信交互方法,装置及系统 |
CN109298952A (zh) * | 2018-08-27 | 2019-02-01 | 优视科技新加坡有限公司 | 应用程序编程接口的调用方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
US9479400B2 (en) | 2016-10-25 |
EP2561656A1 (en) | 2013-02-27 |
EP2561656B1 (en) | 2018-08-22 |
WO2011133471A1 (en) | 2011-10-27 |
US20160204993A1 (en) | 2016-07-14 |
US20110258305A1 (en) | 2011-10-20 |
US9215079B2 (en) | 2015-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103098433A (zh) | 用于xmpp协议的servlet api和方法 | |
US8539097B2 (en) | Intelligent message processing | |
US7921158B2 (en) | Using a list management server for conferencing in an IMS environment | |
US9143540B2 (en) | System and method for providing service correlation in a service access gateway environment | |
US7957403B2 (en) | System and method for controlling access to legacy multimedia message protocols based upon a policy | |
US9654515B2 (en) | Service oriented architecture-based SCIM platform | |
AU2006233229B2 (en) | Service broker integration layer for supporting telecommunication client service requests | |
CN102164172B (zh) | 一种用于提供用户界面的方法及装置 | |
WO1999026153A2 (en) | Method for establishing a communication connection between two or more users via a network of interconnected computers | |
AU2005246375B2 (en) | Systems and methods for enterprise collaboration | |
US20090112875A1 (en) | Shared view of customers across business support systems (bss) and a service delivery platform (sdp) | |
CN101605147B (zh) | 一种多媒体会议系统及方法 | |
US20110007732A1 (en) | Unified Communication System | |
CN103098023A (zh) | 用于通话控制和媒体控制的统一框架和方法 | |
US20210034338A1 (en) | Communications Enablement Platform, System, and Method | |
US7940916B2 (en) | Orchestration engine as an intermediary between telephony functions and business processes | |
US7739389B2 (en) | Providing web services from a service environment with a gateway | |
US8024401B1 (en) | Customer relationship management system with network contact center server configured to control automated web and voice dialogues | |
CA2359672C (en) | Method-resident storage associated with collaborating computer processes | |
US20030208641A1 (en) | Software components as virtual processors | |
Bessler et al. | An orchestrated execution environment for hybrid services | |
Bo et al. | Session and media signalling for communication components‐based open multimedia conferencing Web service over IP networks | |
Nicolas et al. | Architecting end-to-end convergence of web and Telco services | |
Hao | Toward a unified service delivery process for next‐generation services | |
Sheng et al. | Personalized service creation and provision for the mobile web |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: TROPO, INC. Free format text: FORMER OWNER: VOXEO RESEARCH CORPORATION Effective date: 20150611 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150611 Address after: American California Applicant after: Tropo Ltd Address before: American California Applicant before: Voxeo Corporation |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130508 |