EAP JBOSS 6.0上的会话复制

时间:2013-05-06 10:11:42

标签: jboss7.x jboss-eap-6 mod-cluster

我正在使用EAP Jboss 6开发Struts 2框架。我的项目会话变量使用“HTTP会话映射”进行存储和检索。当我使用群集转移到Jboss的域模式时,在服务器的不同节点之间切换时会话值丢失。然后我配置了Sticky会话并将会话值存储在Cookies中。即使我能够在第一个请求中从cookie检索值,HTTP会话也会丢失。目前我正在使用Apache Mod Cluster进行群集配置如下。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_cluster_module modules/mod_proxy_cluster.so

LoadModule manager_module modules/mod_manager.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule advertise_module modules/mod_advertise.so

Listen 192.168.5.30:80

<VirtualHost 192.168.5.30:80>
 ManagerBalancerName my-cluster
 ServerName NSN
<Directory />
    Order deny,allow
    Allow from all
</Directory>
<Location /mod_cluster-manager>
    SetHandler mod_cluster-manager
    Order deny,allow
    Allow from all
</Location>
EnableMCPMReceive
#ProxyPass / balancer://my-cluster stickysession=JSESSIONID|jsessionid nofailover=On
 ProxyPass / balancer://my-cluster stickysession=off nofailover=On
 ProxyPassReverse / balancer://my-cluster
 ProxyPreserveHost On

      KeepAliveTimeout 60

      ServerAdvertise On

现在搜索并找到有关mod_cluster(https://github.com/modcluster/mod_cluster)的内容。其中提到将文件夹放在“部署JBoss服务器配置文件的目录”中。但是在EAP Jboss 6.0域模式中我不知道部署目录在哪里以及如何配置该mod集群?

1 个答案:

答案 0 :(得分:0)

我通过在WEB-INF文件夹下配置jboss-web.xml解决了会话复制问题,如下所示......

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="6.0"
       xmlns="http://www.jboss.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_6_0.xsd">
<replication-config>
    <!-- The default value is SET_AND_NON_PRIMITIVE_GET, therefore the byte array which is carrying the data is considered
non-primitive and would cause replication even in read only scenario. -->
    <replication-trigger>SET</replication-trigger>

    <!-- Replicating entire session is the default. -->
    <replication-granularity>SESSION</replication-granularity>
   <replication-mode>SYNCHRONOUS</replication-mode>
</replication-config>

在这种情况下,无需使用cookie来存储值......