Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

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

以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away