最近仮想化の技術が進歩して、AWSやAzure等のIaasも普及してきた。。。
今までは基本はサーバ1台で運用し、バックアップでクラスタ化するとかしないとか。。。
でも仮想化とかIaaSとかで、WEBサーバが1台で運用している時もあれば、
3台で運用している時もあって時間帯とかでスケールアップすることも容易になってきた。
そんな時、sessionのデータをDBに持ったりすれば便利だなと・・・
SqlServerだったら容易にできるのになと・・・
Java(tomcat)でできないか調べてみました。。。
出てきました。
context.xmlに以下の内容を記載すると、SessionのデータがDBに格納することができました。
<Manager sessionIdLength="10" className="org.apache.catalina.session.PersistentManager"
distributable="true"
duplicates="0"
saveOnRestart="false"
maxActive="100"
maxActiveSessions="100"
minIdleSwap="0"
maxIdleSwap="0"
maxIdleBackup="0"
maxInactiveInterval="0"
sessionCounter="0" >
<Store className="org.apache.catalina.session.JDBCStore"
checkInterval="1"
connectionURL="jdbc:mysql://localhost:3306/sessiondb?user=root&password=pass"
driverName="org.gjt.mm.mysql.Driver"
sessionAppCol="app_name"
sessionDataCol="session_data"
sessionIdCol="session_id"
sessionLastAccessedCol="last_access"
sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions"
sessionValidCol="valid_session" />
</Manager>
もちろんDBにSessionデータを格納する必要がありますが、
テーブルの指定や格納するカラムの指定もできてかなり便利です。
ただちょっと遅くなったような・・・
ま~原因は後々調べるとして、
2つはまりました。connectionURLの&の部分です。
エスケープすることを忘れていて、DBに接続できません
て出た。。。。
もう一つはJDBCのjarファイルがTomcatのlib配下に入っていないため、ClassNotFoundがでました。。
今回はちょっとメモ程度の投稿です。
以上