LoginSignup
15
12

More than 5 years have passed since last update.

JAVA (tomcat) でセッションをDBに持つ方法

Posted at

最近仮想化の技術が進歩して、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&amp;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がでました。。

今回はちょっとメモ程度の投稿です。

以上

15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12