crossContext属性在Tomcat中的作用是什么?它是否启用会话共享?

Ser*_*ipc 11 session tomcat java-ee cross-context

我在Tomcat 5.5文档中找到的只有:

如果要在此应用程序中调用ServletContext.getContext()以成功返回在此虚拟主机上运行的其他Web应用程序的请求调度程序,则设置为true.在安全意识环境中设置为false(默认值),以使getContext()始终返回null.

我发现一些论坛帖子评论该设置crossContext=true还允许在不同的Web应用程序之间共享会话对象,但我无法找到任何官方文档说明这一点.

Servlet.getContext()与不同Web应用程序之间共享会话状态的能力之间是否存在关系?

什么是crossContext属性真的 Tomcat中吗?

kgi*_*kis 19

您可以使用单点登录阀在Web应用程序之间共享会话.

crossContext=true如果要在同一虚拟主机中的不同Web应用程序之间共享某些信息,则可以设置.

例如,app1会调用:

setAttribute("name", object);
Run Code Online (Sandbox Code Playgroud)

另一个应用程序可以调用

getContext("/app1").getAttribute("name");
Run Code Online (Sandbox Code Playgroud)

阅读信息.如果crossContext未设置为true,则getContext("/ app1")将返回null.

但是,使用crossContext既罕见又可能不安全.


Kee*_*ter 11

来自javadoc ServletContext.getContext():

此方法允许servlet访问服务器各个部分的上下文,并根据需要从上下文中获取RequestDispatcher对象.给定路径必须以"/"开头,相对于服务器的文档根进行解释,并与此容器上托管的其他Web应用程序的上下文根相匹配.

因此,例如,如果要包含来自不同Web应用程序的页面,则需要将crossContext设置为true.