歩行訓練

おいっちにー!

Tomcat の Session relipcation で ReplicationValve が悪さをしてセッション共有できなかった

Tomcat 公式のドキュメントにある ReplicationValve

Apache Tomcat 8 (8.5.6) - Clustering/Session Replication HOW-TO

 

サンプルの一番簡単な場合では

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>

 とあるが、次のサンプルでは

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>

となっている。

よく見ると「.htm」と「.html」もフィルターに含まれているので、htmlファイルがフィルターされて「hoge.html」などのファイルだとセッションが共有できない。
さらにこの状態だと、「index.html」を指定しないで「/hoge.com/hogehoge/」などにアクセスする場合はセッションが共有できる状態になる。
そのため、あるパターンでは全くセッションが共有できなくなり、あるページではセッションが共有できている状態になる。

この状態だと、どの状態で共有が失敗しているのかわからなくなって、「なんかTomcatのセッションが不安定でわけわからん」という状態になって途方に暮れてしまう。

というか途方に暮れた。

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.css|.*\.txt"/>

 こんな感じに削れば良い