« Tomcatでフェイルオーバー(FileStore) | Main | Tomcatでフェイルオーバー(SimpleTcpCluster) »

2007.06.02

Tomcatでフェイルオーバー(JDBCStore)

 JDBCStoreは、文字通りJDBCを用いてデータベースにセッション情報の保管を行います。試しに、MySQLConnector/Jを用いてJDBCStoreの設定を行ってみました。

  • MySQLにスキーマsessionおよびアカウントsesuser(パスワード:sespass)を追加。スキーマsessionに対しての全ての権限をsesuserに割り当て。
  • JDBCドライバが含まれているmysql-connector-java-5.0.6-bin.jarを、Tomcatのserver/libフォルダ内にコピー。
  • セッション情報を保管するテーブルを作成。例えば以下のような感じ。
    create table session.sessions (
    id varchar(100) not null primary key,
    valid char(1) not null,
    maxinactive int not null,
    lastaccess bigint not null,
    app varchar(255),
    data blob
    );

  •  context.xmlの設定は以下のような感じ。

    <Store className="org.apache.catalina.session.JDBCStore"
     driverName="com.mysql.jdbc.Driver"
     connectionURL="jdbc:mysql://localhost:3306/session"
     connectionName="sesuser"
     connectionPassword="sespass"
     sessionTable="sessions"
     sessionIdCol="id"
     sessionAppCol="app"
     sessionDataCol="data"
     sessionLastAccessedCol="lastaccess"
     sessionMaxInactiveCol="maxinactive"
     sessionValidCol="valid"
     >
    </Store>

    対応するテーブル名やカラム名をそれぞれ指定することになります。なので、JDBCでアクセス可能なDBで、かつ必要な型をサポートしているものであれば、PostgreSQLなどいろいろなDBを利用できるかと思います。

     なお、Tomcat5.5.23では、CREATE TABLE処理は実装されていないため、あらかじめ作成しておく必要があります。また、セッション情報の更新を行う際は、常にDELETE&INSERTで行うようになっているようです(コメントに、TODOとして「既に存在する場合はUPDATEを行うように」と書かれています)。

    【参考】
    Tomcat5.5 JDBCStore JavaDoc
    Tomcat5.5のserver.xmlについての解説です。
    Tomcat5のクラスタリング機能

    |

    « Tomcatでフェイルオーバー(FileStore) | Main | Tomcatでフェイルオーバー(SimpleTcpCluster) »

    Java」カテゴリの記事

    Subversion・Trac・etc.」カテゴリの記事

    Comments

    Post a comment



    (Not displayed with comment.)


    Comments are moderated, and will not appear on this weblog until the author has approved them.



    TrackBack

    TrackBack URL for this entry:
    http://app.cocolog-nifty.com/t/trackback/3959/15255547

    Listed below are links to weblogs that reference Tomcatでフェイルオーバー(JDBCStore):

    « Tomcatでフェイルオーバー(FileStore) | Main | Tomcatでフェイルオーバー(SimpleTcpCluster) »