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接口来访问,此接口提供了一些有用的方法。
Converged Containers and Applications相关推荐
- 使用ArchR分析单细胞ATAC-seq数据(第四章)
本文首发于我的个人博客, http://xuzhougeng.top/ 往期回顾: 使用ArchR分析单细胞ATAC-seq数据(第一章) 使用ArchR分析单细胞ATAC-seq数据(第二章) 使用 ...
- devops和docker_通过免费的2小时Docker课程学习DevOps基础知识
devops和docker Docker is a powerful DevOps tool for putting your apps into "containers." Do ...
- 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件
适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...
- cordova项目适配iPhoneX
iPhoneX适配踩坑浅谈 Apple每次退出新尺寸的iphone都会掀起一番适配风波,这次没有下巴但有刘海的iPhoneX更是如此,网传横屏下的适配动画更是令不少人汗颜. 其实对于Native Ap ...
- .NET及.NET Core系统架构
.NET 官方架构指南 Microservices and Docker Containers Web Applications with ASP.NET 官网地址:https://www.micro ...
- Docker 核心知识点 可视化仪表盘
作者:半身风雪 上一节:Docker run 掌握核心技术 简介:在学习 Docker 的过程中,我们打交道最多的,除了命令,那就是重中之重的 Dashboard 仪表盘了,这节我将带领大家一起来学习 ...
- A002-185-2537-翁格婉(个人期末作业)
Excel查找结合项目主题说明 1.作业查词说明 1.1第一次查词 1.1.1Requirements baseline(需求基线) 1.1.2Enterprise Architect(企业架构师) ...
- 【跟我学oracle18c】第二十九天:Multitenant :19 Monitoring CDBs and PDBs
全是数据字典 19 Monitoring CDBs and PDBs You can view information about CDBs and PDBs using SQL*Plus or SQ ...
- Linking Containers Together
Docker container中services/applications与主机或者其它containers之间通信的两种方式 port mapping(端口映射) container linkin ...
最新文章
- np.random.get_state()
- 重磅!Uber发布史上最简单的深度学习框架Ludwig!不懂编程也能玩转人工智能
- linux虚拟网卡上网,Linux添加虚拟网卡的多种方法
- Anaconda安装后找不到conda.exe
- JavaEE平台学习之 01开发第一个Servlet程序
- 【超详细教程】告别证书,图文并茂教你免签名XX,三种方法任你选!超简单...
- 浅析JSP动态网页开发技术
- mysql中查看虚拟环境_进程、虚拟环境、mysql
- 201671010402 词频统计软件项目报告
- 微星如何于BIOS中开启/关闭AMD虚拟化技术
- gitter 卸载_最佳Gitter频道:数学
- 不知道RabbitMQ中Exchange类型Internal是什么意思?这边来~
- 黑马程序员最新版JavaWeb基础教程-学习笔记
- 实例:用C#.NET手把手教你做微信公众号开发(13)--事件消息处理之取消关注
- springboot整合tk-mybatis框架搭建
- 向5岁小朋友解释什么是微服务
- 怎么用域名访问网站?
- 【梳理】数据库系统概论 第8章 数据库编程 8.1 嵌入式SQL 8.2 过程化SQL 8.3 存储过程和函数 8.4 ODBC编程
- Games101结合Unity Shader入门精要学习笔记(个人向)
- 2022上海市安全员C证考题模拟考试平台操作