`
darktemplar_h
  • 浏览: 14191 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

配置glassfish cluster的session复制

阅读更多

 

源文件修改

web.xml

 

<!---------------------web.xml--------------------->
...
 <distributable id="sessionDistribute"/>
...
<!---------------------web.xml end------------------>
 

 

必须指明应用的session是distribute的,否则即使glassfish启用了session复制功能也不会生效。

sun-web.xml

 

<!-------------------sun-web.xml------------------>
...
<session-config>
        <session-manager persistence-type="replicated">
            <manager-properties>
                <property name="persistenceFrequency" value="time-based"/>
                <property name="reapIntervalSeconds" value="30"/>
                <property name="relaxCacheVersionSemantics" value="true"/>
            </manager-properties>
            <store-properties>
                <property name="persistenceScope" value="session"/>
            </store-properties>
        </session-manager>
</session-config>
...
<!-------------------sun-web.xml end-------------->
 

 

persistenceFrequencyreapIntervalSeconds设定session的同步频率为30

relaxCacheVersionSemantics忽略session版本号,解决多个请求同步时的session异常。

applicationContext-security.xml

 

<!----------applicationContext-security.xml--------->
...
<http>
...
<session-management>
<concurrency-control max-sessions="2" error-if-maximum-exceeded="false" />
</session-management>
...
</http>
...
<!---------applicationContext-security.xml end------>
 

 

设置spring-security允许同一个用户多次登录。否则启用session复制后,会导致不能正常登录。

 

Glassfish设置

Web Container->Manager Properties

修改Reap Interval30,与sun-web.xml中的配置一致。

 

Additional Properties下增加新的属性

relaxCacheVersionSemantics=true

persistenceFrequency=time-based

 

升级步骤

1、deploy新的application版本,如:webapp-demo:1.0.1

去掉StatusEnabled复选框,并将AvailabilityEnabled复选框选中,targets中选则设置好的cluster

2、使用命令升级当前离线的实例instance-2

asadmin enable --target instance-2  webapp-demo:1.0.1

3、等待30秒以上(超过session的复制间隔)

4、修改nginx配置,将线上实例instance-1替换成已升级完的实例instance-2

5、使用命令升级当前离线的实例instance-1

asadmin enable --target instance-1  webapp-demo:1.0.1

6、重复步骤34

 

配置过程中遇到的问题:

1、session中保存的attribute对象的class都必须实现java.io.Serializable接口,且对象的所有属性的class也必须实现java.io.Serializable接口,否则session复制的时候会出错。

2、session复制是通过GMS组播实现的,iptables要么关闭,要么允许GMS组播的ip。

 

 

0
6
分享到:
评论
7 楼 woodswzm 2013-03-15  
glassfish v3 session 复制跨物理机器已解决
1.修改部署应用下web.xml;
2、新增glassfish-web.xml文件在web.xml同级目录,语法请参考官方文档《application-deployment-guide》,里面有详细说明,把<session-config> 部分填入即可以;
3、所在集群JVM下添加新的参数-DjvmRoute=${AJP_INSTANCE_NAME} ,此参数非常重要,我之前就是因为没有次参数,导致session=null;
4、就是在应用部署是选择“可用性”即可。
6 楼 eric023 2013-02-18  
楼主,我按照你的方法在glassfish v2.1.1上试了一下,没有搞出来啊,session还是不能复制啊,怎么回事呢?网上的资料很少,又不够详细,咋搞啊
5 楼 zhuixunzhe 2012-10-11  
楼主什么时候上线教教我啊 我弄了好多天都不行 就是三楼说的,相同物理机生效
4 楼 zhuixunzhe 2012-10-11  
woodswzm 写道
我也试过这种方式,glassfish v3 会话复制只适应于在集群下的相同物理机器上生效,但是跨物理机器就有问题

这个怎么办?有没有解决?相同物理机生效肯定是不行的啊
3 楼 woodswzm 2012-08-06  
我也试过这种方式,glassfish v3 会话复制只适应于在集群下的相同物理机器上生效,但是跨物理机器就有问题
2 楼 darktemplar_h 2012-07-03  
session
diggywang 写道
session复制代价太高,session stick就可以了!

使用udp组播进行复制性能还是可以的。而且要解决节点failover时状态保持的问题,session stick就不行了。
1 楼 diggywang 2012-07-02  
session复制代价太高,session stick就可以了!

相关推荐

    eclipse与glassfish3.1.1使用配置-连接池配置-JNDI配置[归纳].pdf

    "Eclipse 与 GlassFish 3.1.1 配置指南" 概述: 本文档旨在指导读者如何在 Eclipse 中配置 GlassFish 3.1.1,实现连接池配置和 JNDI 配置。同时,也会解决在部署过程中可能出现的异常。 一、GlassFish 3.1.1 简介 ...

    glassfish安装配置文档

    GlassFish 安装配置文档 GlassFish 是一个基于 Java 的开源应用服务器,提供了一个强大且灵活的平台来部署和管理基于 Java 的应用程序。本文档将指导 readers 通过安装和配置 GlassFish 服务器,并将其与 Eclipse ...

    GlassFish 管理配置

    文件标题“GlassFish 管理配置”明确指出,本文档将聚焦于GlassFish服务器开源版本5.0的管理和配置。描述中提到的“配置和管理GlassFish服务器开源版本的说明”进一步强调了这一主题,并暗示了文档将详细介绍如何对...

    在GlassFish中配置数据源连接池

    GlassFish 数据源连接池配置 GlassFish 是一个开源的 Java EE 应用服务器,它提供了一个基于 Web 的管理接口,允许用户通过 Web 界面配置和管理服务器的各种设置。其中,配置数据源连接池是 GlassFish 的一个重要...

    glassfish手工配置domain

    glassfish手工修改domain部署应用步骤,文档详细介绍了如何使用手工部署一个web文件夹目录形式的应用,以及手工配置jdbc

    glassfish集群搭建手册

    4. 介绍创建jk监听器的部分说明了仅仅依靠Glassfish内部的负载均衡和会话复制功能是不够的,还需要通过配置Apache服务器来保证跨服务器的会话复制和粘滞会话效果。 5. 最后,手册还包括了通过命令行界面进行集群...

    glassfish ant eclipse 配置 指南 图解

    ### GlassFish、Ant与Eclipse配置指南:详细步骤与图解 #### 一、环境准备:设置基础环境变量 在开始GlassFish服务器的配置之前,首先确保已经正确设置了以下环境变量: - **JAVA_HOME**: 指向已安装的JDK目录。...

    glassfish配置jndi(DB2数据库)

    本教程将详细讲解如何在Glassfish服务器上配置JNDI以连接到DB2数据库。 首先,我们需要准备DB2数据库的驱动文件。在进行任何配置之前,确保你已经有了DB2的JDBC驱动,即db2jcc.jar和db2jcc_license_cu.jar。这两个...

    session配置secure和httpOnly

    1. 通过`web.xml`配置:在Servlet 3.0及以上版本的环境中,可以直接在`&lt;session-config&gt;`标签内设置`&lt;cookie-config&gt;`,添加`&lt;secure&gt;`和`&lt;http-only&gt;`标签并设为`true`。 2. 使用Filter实现:自定义Filter,捕获...

    glassfish安装手册及源文件

    在本文中,我们将深入探讨如何安装Glassfish,以及如何利用Ant工具进行配置。首先,我们来看一下安装的基本步骤。 1. **下载安装文件**:Glassfish的安装文件可以从官方网站获取,例如,对于Windows系统,你可以...

    GlassFish5.0安装包

    【GlassFish 5.0 安装与配置详解】 GlassFish,由Oracle公司主导的开源项目,是一款功能强大的Web服务器和应用服务器,以其卓越的性能和丰富的特性在开发者社区中备受推崇。相比于Tomcat,GlassFish提供了更全面的...

    Tomcat6远程调用GlassFishV2的sessionbean

    Tomcat6远程调用GlassFish V2的session bean  GlassFish V2 是一个比较完整的ejb3服务器,性能也有了很大的提高,因此最近试用了一下,并通过Tomcat进行了分布式调用。  Session Bean: ...

    Glassfish关于tomcat的文档

    - **简化配置**:GlassFish提供了更为直观的配置方式,减少了开发者在设置过程中可能遇到的问题。 ##### 可靠性和可用性 - **高可用性**:GlassFish支持集群配置,这意味着可以在多台服务器上运行相同的应用程序...

    GlassFish配置SonicMQ

    在本教程中,我们将探讨如何在GlassFish中配置SonicMQ,一个强大的消息中间件,用于处理分布式系统中的异步通信。 配置SonicMQ在GlassFish中的过程主要包括以下几个步骤: 1. **安装SonicMQ**: 首先,你需要下载并...

    GlassFish安装向导

    本文主要讲述了 GlassFish 的安装、配置和服务管理等内容。GlassFish 是一个基于 Java 的 middleware,具有高可扩展性和可靠性,是企业级应用的首选。 一、准备工作 在安装 GlassFish 之前,需要准备好用户组和...

    Glassfish安装和启动

    - 在安装过程中,可以通过修改`setup.xml`或`setup-cluster.xml`文件来自定义配置参数,例如域名、端口号等。默认情况下,这些参数如下所示: - `domain.name=domain1` - `instance.name=server` - `admin.user=...

    glassfish安装步骤.txt

    为了能够成功安装并配置Glassfish,确保系统环境中已经安装了合适的JDK版本以及Ant工具是非常重要的。 #### 二、准备工作 在开始安装Glassfish之前,请确保以下条件已经被满足: 1. **JDK 5或更高版本**:...

    glassfish v3 集群搭建完全手册(自己写的教程)

    本手册旨在弥补这一空缺,提供一份全面的、深入的Glassfish集群搭建指南,包括图形化界面配置和命令行批处理配置两种方式,以帮助开发者和运维人员更好地理解和操作Glassfish服务器。 ### 1. 图形化界面配置 #### ...

Global site tag (gtag.js) - Google Analytics