我正在使用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集群?
答案 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来存储值......