tomcat 配置不同二级域名间session共享 还要改源码 累。。。
2009-09-30 19:23
369 查看
关键字: 二级域名, session
Tomcat下,不同的二级域名,Session默认是不共享的,因为Cookie名称为JSESSIONID的Cookie根域是默认是没设置的,访问不同的二级域名,其Cookie就重新生成,而session就是根据这个Cookie来生成的,所以在不同的二级域名下生成的Session也不一样。找到了其原因,就可根据这个原因对Tomcat在生成Session时进行相应的修改(注:本文针对Tomcat 6.0)。
在Tomcat 对Request的实现类中org.apache.catalina.connector.Request,找到
Java代码
......
protected void configureSessionCookie(Cookie cookie) {
cookie.setMaxAge(-1);
String contextPath = null;
if (!connector.getEmptySessionPath() && (getContext() != null)) {
contextPath = getContext().getEncodedPath();
}
if ((contextPath != null) && (contextPath.length() > 0)) {
cookie.setPath(contextPath);
} else {
cookie.setPath("/");
}
<span style="color: #ff0000;">cookie.setDomain("xxx.com");</span>
if (isSecure()) {
cookie.setSecure(true);
}
}
...
添加上面加注红色的部分即可,在不同的二级域名下,用Request获取Session都将是同一个。
也在在Tomcat的配置文件(D:/Tomcat6.0/conf/catalina.properties)中添加
Java代码
herostarDomain=xxx.com
在上面的实现类中,红色部分做相应的修改
Java代码
...
if(null !=System.getProperty("herostarDomain") && ! "".equals(System.getProperty("herostarDomain")) )
cookie.setDomain(System.getProperty("herostarDomain"));
....
好了,OK!
Tomcat下,不同的二级域名,Session默认是不共享的,因为Cookie名称为JSESSIONID的Cookie根域是默认是没设置的,访问不同的二级域名,其Cookie就重新生成,而session就是根据这个Cookie来生成的,所以在不同的二级域名下生成的Session也不一样。找到了其原因,就可根据这个原因对Tomcat在生成Session时进行相应的修改(注:本文针对Tomcat 6.0)。
在Tomcat 对Request的实现类中org.apache.catalina.connector.Request,找到
Java代码
......
protected void configureSessionCookie(Cookie cookie) {
cookie.setMaxAge(-1);
String contextPath = null;
if (!connector.getEmptySessionPath() && (getContext() != null)) {
contextPath = getContext().getEncodedPath();
}
if ((contextPath != null) && (contextPath.length() > 0)) {
cookie.setPath(contextPath);
} else {
cookie.setPath("/");
}
<span style="color: #ff0000;">cookie.setDomain("xxx.com");</span>
if (isSecure()) {
cookie.setSecure(true);
}
}
...
添加上面加注红色的部分即可,在不同的二级域名下,用Request获取Session都将是同一个。
也在在Tomcat的配置文件(D:/Tomcat6.0/conf/catalina.properties)中添加
Java代码
herostarDomain=xxx.com
在上面的实现类中,红色部分做相应的修改
Java代码
...
if(null !=System.getProperty("herostarDomain") && ! "".equals(System.getProperty("herostarDomain")) )
cookie.setDomain(System.getProperty("herostarDomain"));
....
好了,OK!
相关文章推荐
- tomcat 二级域名 session共享
- Tomcat 服务器配置及远程调试和不同web项目session共享方法以及设置TOMCAT的内存
- (精)tomcat 二级域名 session共享
- nginx tomcat 配置 多个 二级域名 多个项目
- firefox不同窗口运行不同配置文件(session共享问题)
- Nginx+Tomcat+其他存储 负载均衡配置和session共享资料整理及例子
- tomcat 集群配置,Session复制共享
- 关于同一tomcat服务器下2个不同的web项目如何共享session的问题
- Tomcat实现多域名之间session共享
- me_nginx+tomcat+memcached实现session共享配置过程
- Nginx+Tomcat配置集群session共享
- Tomcat中两个不同项目共享Session
- tomcat集群redis配置session共享
- nginx tomcat redis session 共享配置
- Nginx多域名映射到对应不同tomcat的nginx.conf配置详解
- linux apache 配置多个域名转发不同tomcat
- Spring Session 做分布式session(包括不同域名session共享)
- 一个Tomcat支持不同的域名访问各自不同程序的配置方法
- Apache+Tomcat集群配置+session共享
- 在同一个tomcat下,不同的web项目共享session