使用SIP Servlet为Java EE添加语音功能

会话发起协议(Session Initiation Protocol,SIP)是一种信号传输协议,用于建立、修改和终止两个端点之间的会话。SIP 可用于建立 两方呼叫、多方呼叫,或者甚至 Internet 呼叫、多媒体呼叫和多媒体分发的多播会话。JSR 116:SIP Servlet API 是一个服务器端接口,描 述了针对 SIP 组件及服务的容器。SIP servlet 是在 SIP 容器中运行的 servlet,与 HTTP Servlet 类似,但提供了对 SIP 协议的支持。 SIP 和 SIP servlet 是许多基于远程通信的流行应用程序的底层技术,这些应用程序提供了各种服务,比如 Voice-over-IP (VoIP)、即时通 信、在线和好友列表管理,以及网络会议。

SIP 和 SIP servlet 对于企业也很重要。与 Java EE 技术结合,SIP servlet 可用于向企业应用程序添加丰富的媒体交互功能。JSR 289: SIP Servlet v1.1 更新了 SIP Servlet API 并定义了一个标准的应用程序编程模型,用于将 SIP servlet 和 Java EE 组件集成到一起。SIP servlet 将在下一代远程通信服务中扮演更加重要的角色。

本技术文章涵盖了 SIP 和 SIP servlet 的一些基本底层概念。本文还提供了一个示例应用程序,该应用程序使用 SIP servlet 和 HTTP servlet 提供 VoIP 电话服务。

什么是 SIP?

介绍 SIP 的一种简单方法就是从应用场景入手。我们假设用户 A 想要与用户 B 建立一个呼叫。在远程通信设置中,用户 A 和 B 将通过 用户代理进行通信。用户代理的一个例子就是软件电话——用于在 Internet 上建立电话呼叫的软件程序。另一个例子就是 VoIP Phone——一 种使用 VoIP 的电话。下面列出了建立呼叫所需的步骤:

A 邀请 B 开始会话。作为邀请的一部分,A 会说明自己支持的媒体。

B 接收到邀请并向 A 发送一个及时响应,然后对邀请进行评估。

当 B 准备好接受邀请时,它会向 A 发送一个回执。作为回执的一部分,B 将说明自己支持的媒体。

A 分析从 B 收到的回执,并确定 B 和 A 支持的媒体是否相同。如果 A 和 B 支持相同的媒体,则它们之间将建立呼叫。邀请中指定的媒 体可以简化呼叫的建立。

图 1 演示了建立呼叫的步骤。

图 1. 建立呼叫的步骤

SIP 提供了一种标准的方式来执行这些步骤。它通过定义特定的请求方法、响应、响应代码,以及信号传输和呼叫控制的头部来完成这些步 骤。该协议已由 Internet Engineering Task Force (IETF) 根据 RFC3261 实现了标准化,现已被 第 3 代合作伙伴项目(3GPP) 采纳为标 准信号传输协议,还成为了 IP 多媒体子系统(IP Multimedia Subsystem,IMS) 架构中的永久元素。

SIP 与 HTTP 有何关系?

人们通常会问 SIP 是否使用 HTTP 作为底层协议。答案是否定的。SIP 是一种与 HTTP 在同一层(即应用层)运作的协议,它使用 TCP、 UDP 或 SCTP 作为底层协议。但是,SIP 与 HTTP 有很多相似之处。例如,与 HTTP 类似,SIP 基于文本而且是用户可读的。SIP 使用带有特 定方法、响应代码和头部的“请求响应”机制,这一点也与 HTTP 类似。HTTP 和 SIP 的一个显著不同是,SIP 中的“请求响应”机制是异步 的——请求不需要在后面紧跟相应的响应。实际上,一个 SIP 请求可能导致生成一个或多个请求。

SIP 是一种对等协议。这意味着用户代理既可以作为服务器,也可以作为客户机。这是 SIP 和 HTTP 的另一个不同之处,在 HTTP 中,客 户机始终是客户机,而服务器始终是服务器。

SIP 支持以下请求方法和响应代码:

请求方法:

REGISTER。客户机使用它向 SIP 服务器注册一个地址。

INVITE。指示用户和服务器被邀请参与一个会话。此消息的正文包括一个会话描述,用户或服务被邀请参与该会话。

ACK。确认客户端已经接收到 INVITE 请求的最终响应。此方法仅与 INVITE 请求一起使用。

CANCEL。用于取消挂起的请求。

BYE。由用户代理客户机发送,向服务器表明它希望终止呼叫。

OPTIONS。用于向服务器查询与它相关的功能。

时间: 2024-10-03 18:21:28

使用SIP Servlet为Java EE添加语音功能的相关文章

提问:安卓app怎么添加语音功能?

问题描述 安卓app怎么添加语音功能? 解决方案 可以到云知声开发者平台进行注册,下载免费的SDK使用哦~有问题可以找技术支持哦~(18515357728)解决方案二:普通话连续语音转写准确率达到97%以上,支持在线和离线连续语音转写.解决方案三:谢谢楼主,楼主太好人了static/image/common/sigline.gif90%打工小伙一生都不可能知道的秘密http://user.qzone.qq.com/82175487解决方案四:不错!值得学习,楼主继续static/image/co

求一份完整详细的java sip (jain或者sip servlet)的开发入门资料

问题描述 如题.谁能给我一份有关sip开发的资料呀.英文什么的都没有关系.急需的 谢谢java sip jain的或者sip servlet的开发都行.要详细的谢谢 问题补充:guazi 写道 解决方案 http://www.baidu.com/s?bs=sip+servlet&f=8&rsv_bp=1&rsv_spt=3&wd=sip+servlet+%CA%E9&inputT=2677这个是你要的,解决方案二:[url]http://bbs.cnttr.com/

安全注释和授权在GlassFish和Java EE 5 SDK中的应用

安全性对于企业环境非常重要.在 Java EE 5 / GlassFish 环境中,您可以通过以下几种方式实现安全性: 传输层安全性 (TLS) / 安全套接字层 (SSL) 技术 身份验证 (Authentication) 和授权 (Authorization) 消息层安全性(仅适用于 GlassFish 中的 Web 服务) 本文讨论身份验证和授权.参考资料 [1].[2] 和 [3] 讨论了如何在客户端和服务器端为 Enterprise JavaBeans 和 Web 服务建立 SSL 环

在GlassFish v3中整合Rails和java EE

Rails和java EE的整合 下文将介绍一下在GlassFish v3上的Rails和java EE的整合.GlassFish v3是GlassFish V2的下一个版本,其关注的重点是模块化和使得运行非Java EE的容器和模块成为可能. 下面是详细的细节说明: 1. 使用JRuby 1.1(安装Rails),按照如下步骤创建一个Rails应用"railsee3": ~/testbed/jruby-1.1/samples/rails >../../bin/jruby -S

Java EE 5中的Web服务(JAX-WS)

Java API for XML Web Services (JAX-WS) 2.0,JSR 224 是 Java EE 5 平台的重要组成部分.作为 Java API for XML-based RPC 1.1 (JAX-RPC) 的后续发行版本,JAX-WS 简化了使用 Java 技术开发 Web 服务的工作.并且通过对多种协议(如 SOAP 1.1.SOAP 1.2.XML)的支持,以及提供用于支持其他协议和 HTTP 的工具,它解决了 JAX-RPC 1.1 中存在的一些问题.JAX-W

JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

[前言] JSP本身是JavaWeb中的知识,但是在学习Android网络时,必然要涉及到与服务器之间的交互,所以学一下JSP以及其他JavaWeb的内容还是很有必要的,至少能明白程序在访问服务器时,整个过程的原理. 其实,在学习Android之前,Java和JavaWeb的知识都是要先学习的.本人是在2014年7月正式开始Android方向的研究学习,在这之前没有接触任何和计算机软件相关的知识(唯一相关的是,本科学过一门C语言课程,不过现在已经忘光了). 我们来看下面的这张图就知道了: 两张图

Java EE开发四大常用框架

对Java EE中常用的四个框架做一下系统的归纳 Struts     Struts是一个基于Sun Java EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的.     Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关:     1.模型 (Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-c

JAVA EE一年工作经验面试问题

问题描述 有Java EE 一年开发经验的面试时一般会问到哪些问题啊?这一年我主要负责项目里的后台数据处理的,前台的那些经验不多,会有影响吗? 解决方案 前台没什么,主要问你框架,我给你提供点面试题: JAVA面试题0.1如何处理并发?单例 ---共享对象 还有就是 在执行算法和存储结构的方法前加锁 一.Java基础知识1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别.区别:首字母大写就可以看出他是个类,string和8种基本类型都属于类.2.字符串的操作: 写一个方

甲骨文宣布因 '主要增强功能'延迟发布Java EE 8

甲骨文(Oracle)公开承认不得不再一次延迟Java  8企业版的发布.新版Java企业版(Java EE)将于2017 年底上架,比原定计划推迟了至少六个月.甲骨文上一次调整发布日期是今年6月,其时的计划发布日期是明年"上半年". 甲骨文Java EE 和应用程序服务器开发副总裁Anil Gaur在美国加州旧金山的召开的甲骨文JavaOne大会上公布了新日期. Gaur承诺Java EE 9 将于Java  EE 8发布后的一年后发布,即是说 2018年年底. Gaur 表示,Ja