`
icsnowing
  • 浏览: 40613 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Converged Containers and Applications

阅读更多
JSR 289中增加了两个新的类:
(1)public interface ConvergedHttpSession extends javax.servlet.http.HttpSession

这个类提供了访问与HttpSession相关的功能实体的方法,这种情况只发生在聚合的HTTP/SIP容器中。在聚合容器中,HttpSession的实例将被转换成ConvergedHttpSession

类型。

       定义的方法如下:

       SipApplicationSession getApplicationSession():如果SipApplicationSession存在,则返回;如果不存在,则创建一个新的应用会话,并且在与converged http session关联之后返回。

java.lang.String encodeURL(java.lang.String url):这个方法将HTTP URL与jsessionid进行编码,";jsessionid=http-session-id"。返回编码之后的URL。

java.lang.String encodeURL(java.lang.String relativePath, java.lang.String scheme):将给定的相对路径转化为一个绝对URL,通过附加给定的协议类型(http或https)、当前ServletContext的contextPath和host:port,并将得到的URL与jsessionid进行编码,返回编码后的URL。



(2)public interface SipSessionsUtil

一个实用工具类,为聚合的HTTP/SIP应用和聚合的Java EE/SIP应用提供支持。这个类可通过ServletContext参数javax.servlet.sip.SipSessionsUtil或插入@Resource注解来访问。定义的方法如下:

SipApplicationSession getApplicationSessionById(java.lang.String applicationSessionId):对于给定的applicationSessionId返回相应的SipApplicationSession。参数applicationSessionId字符串与SipApplicationSession.getId()返回值类型相同。只有应用会话属于触发这个方法的应用时,应用会话才会被返回。

SipApplicationSession getApplicationSessionByKey(java.lang.String applicationSessionKey,                                                 boolean create):对于给定的applicationSessionKey返回相应的SipApplicationSession。参数applicationSessionKey字符串与SipFactory#createApplicationSessionByKey所用参数类型相同。只有应用会话属于触发这个方法的应用时,应用会话才会被返回。

SipSession getCorrespondingSipSession(SipSession session, java.lang.String headerName):返回相关的SipSession。适用于RFC 3911定义的会话加入(session joining)和RFC 3891定义的会话替换(session replacement)。



此外,还有一些机制用以支持Converged Application。

Encoding URLs:这一机制使得应用将HTTP URL与SipApplicationSession id一起进行编码。编码之后的URL通过某种机制发送给外部的UA。当带有这一URL的HTTP请求返回给聚合容器时,容器必须将这一新的HttpSession与编码的SipApplicationSession进行关联。这一机制类似于encodeURI()作用于SIP session。

从协议会话到应用会话:在一个聚合应用中,经常需要从SIP session或者HTTP Session访问SipApplicationSession。SipSession有一个方法getApplicationSession()来解决此问题;对于HTTP session来讲,则需要使用javax.servlet.sip.ConvergedHttpSession接口来访问,此接口提供了一些有用的方法。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics