JAIN SIP

参考:

http://www.oschina.net/p/jain-sip

http://www.cnblogs.com/4rock/archive/2007/04/19/2380181.html

http://www.oracle.com/technetwork/cn/articles/oem/introduction-jain-sip-090386-zhs.html

http://www.oracle.com/technetwork/cn/articles/entarch/introduction-jain-sip2-085495-zhs.html

http://www.oracle.com/technetwork/cn/articles/entarch/introduction-jain-sip3-091839-zhs.html

源码参考附件:textclient-134104.zip

 

1 JAIN SIP

1.1 用途:

     JAIN SIP 可被用于以下几个方面:①用于J2SE平台,开发独立的user agent、proxy和注册应用程序;②作为SIP Servlet 容器的基础SIP 实现;③作为EJB容器的基础SIP 实现。这是规范中的准确定义。

 1.2 对协议的支持:

     JAIN SIP 支持RFC3261定义的全部功能,并且支持以下SIP 扩展:INFO方法(RFC2976)、临时响应的可靠性(RFC3262)、事件通知框架(RFC3265)、UPDATE方法(RFC3311)、Reason头(RFC3326)和为即时消息定义的Message方法(RFC3428)。

 1.3 编程模型 :

     JAIN SIP 标准化了SIP 协议定义的通用事务模型 接口,提供了从事务接口访问dialogue功能的方法。它采用Listener/Provider事件驱动 模型 ,定义了很多factory类,用于创建Request和Response消息和SIP 头。它为每个支持的头定义了通用接口,可添加到Request 和Response中。SIP 消息通过一个事务被传到Sip Provider,Sip Listener用于监听到来的事件。此外,JAIN SIP 被设计为可扩展的,定义了通用的扩展头接口。

 1.4 其他:

     JAIN SIP 并不仅是一个客户端API,它还可以用于一些服务器扩展。比如,JAIN SLEE资源适配器采用JAIN SIP 作为基础。此外,它同样可以与SIP Servlet 一起使用,或者直接与EJB结合使用。
    由于JAIN SIP API是对SIP 标准的完整定义,任何基于SIP 的程序可将JAIN SIP API用作Java标准接口,成为经JAIN SIP 认证的栈。这意味着应用服务器、SIP 电话、网关及网关控制器、SIP 服务器、基于SIP 的业务、SIP 计费解决方案、开发者工具包、SIP 测试工具、SIP 用户代理、以及SIP 网络管理,均可利用JAIN SIP API实现在SIP 栈实施中的通用性。典型的SIP 网络中,JAIN SIP 接口用于代理服务器、媒体网关和客户端。JAIN SIP API涵盖比用户代理或客户端软件所需更多的内容。


2 类说明:

  • 1.javax.sip.ClientTransactionClientTransaction应用可以理解为发送INVITE信息到UAS。ClientTransaction也用从SipListener接收到的回应进行匹配。和ServiceTransaction相对应。方法:ClientTransaction的方法:Request createAck()通过ClientTransaction创造一个关于当前的请求的正确应答。void sendRequest()用于发送创建的请求消息。这个类的调用意味着上层的应用是UAC。
  • javax.sip.Dialog:一个会话用来响应2个点对点的用户之间的联系,并保持联系一段周期。
  • javax.sip.DialogState: 这个类定义了会话的3种状态,Early, Confirmed, Terminated。
  • javax.sip.DialogTerminatedEvent: 当一个会话事务到达了terminated 状态,这个会话事务事件被传送到listen监听处去。
  • javax.sip.ListeningPoint:这个接口描述了一个唯一的网络监听地址,由传输的IP和端口组成。
  • javax.sip.RequestEvent: 这个类描述了一个从SipProvider传送到SipListener的请求事件,是一种事件模式。一个应用(sipListener)被注册到SIP protocol stack(SipProvider),监听SipProvider传来的请求事件。
  • javax.sip.ResponseEvent:这个类描述了一个从SipProvider到他自己的SipListener的一个响应事件。
  • javax.sip.ServerTransaction : ServerTransaction可以通常被理解为一个会话状态机,SipProvider用来处理接收SIP事件和消息序列,将接收到消息发送到SipListener(侦听方法)的processRequest或者processResponse回调,通过用户代理服务器发送回应信息给应用程序。这个类让应用程序能发送一个回应对应SipListener收到的请求。方法:ServerTransaction中的方法:sendResponse应用希望发送一个响应时候,它创立一个来自MessageFactory创造的回应,然后回应传送到ServerTransaction的sendResponse方法。
  • javax.sip.SipFactory: SIPFactory是一个单类,用单一方式得到这个SipStack应用的执行权。SIPFactory单一的实例能用得到实例的方法(或者Singleton)而被得到。通过在SIPFactory里调用合适构造方法,一个代表被叫端的对象能从SIPFactory得到。创造一个被叫的SipStack,这样应用将可以调用SipStack中的方法。
  • 10 javax.sip.SipListener:这个类代表SIP协议的负责侦听的应用程序端,这个接口定义了一个侦听端,接收处理从SipProvider提交的SIP事件消息,是一个抽象的侦听线程。结构:每个SIPStack或每个IP地址对应一个的Siplistener,而Siplistener与SipProvider的关系是一对多的关系。
  • 11 javax.sip.SipProvider::这个接口描述了SIP stack的消息实体。
  • 12 javax.sip.SipStack:提供了方法创建和删除SipProvider和 ListeningPoint,以便SipProvider能发送和接收消息。
  • 13 javax.sip.Transaction:Transaction是一个基础的sip组件,这个接口描述了客户端到服务器的一个通用接口和普遍的方法。
  • 14 javax.sip.TransactionTerminatedEvent:TransactionTerminatedEvent被传到Listener当事务转变到terminated状态。
  • 15 javax.sip.address.Address:这个接口描述了用户的display名字和URI地址。
  • 16 javax.sip.address.AddressFactory:这个接口提供了方法,允许程序创建地址对象,例如:URI, SipURI and TelURL。
  • 17 javax.sip.header.ContactHeader: 一个ContactHeader头变量提供了包含请求或是响应的URI
  • 18 javax.sip.header.HeaderFactory:这个接口提供了一组方法允许从一个JAIN SIP实例中创建Header object。
  • 19 javax.sip.header.ToHeader:To header是最初被请求的需要者所描述,Requests and Responses必须包括一个ToHeader
  • 20 javax.sip.message.MessageFactory: 这个接口提供了一组方法允许应用程序从一个JAIN SIP实例中创建Request 和 Response消息。
  • 21 javax.sip.message.Request:一个SIP Request是一个从客户端到服务器的请求。
  • 22 javax.sip.message.Response:一旦请求地接受者收到一个请求,一个Response消息就被发送。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值