1

私は EAP Jboss 6 を使用して Struts 2 フレームワークに取り組んでいます。私のプロジェクト セッション変数は、「HTTP セッション マップ」を使用して保存および取得されました。クラスタリングを使用して Jboss のドメイン モードに移行すると、サーバーの異なるノード間で切り替えるときにセッション値が失われました。次に、Sticky セッションを構成し、セッション値を Cookie に保存しました。最初のリクエストで 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 クラスターを構成する方法がわかりません。

4

1 に答える 1

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 を使用して値を保存する必要はありません...

于 2013-05-08T05:44:30.757 に答える