11.6. セッション管理モジュール¶
11.6.2. 前提条件¶
アプリケーションサーバには Resin を使用してください。
- 以下のモジュールが必要です。
- セッション管理モジュール
- セッション管理 組み込みHazelcast連携
11.6.3. セットアップ¶
11.6.3.1. セッション管理設定¶
IM-Juggling で以下の設定を行います。
- セッション管理モジュール - セッション管理設定 session-store-config.xml
詳細は設定ファイルリファレンスの「セッション管理設定」を参照してください。
11.6.3.2. Hazelcast設定¶
IM-Juggling で以下の設定を行います。
- セッション管理 組み込みHazelcast連携 - Hazelcast設定 hazelcast-config.xml
詳細は設定ファイルリファレンスの「Hazelcast設定」を参照してください。
11.6.4. クラスタ構成場合¶
TCPを採用している場合、Hazelcast設定の以下の要素をノードの台数分指定します。
hazelcast-config/network/join/TCP/member-list/member
<network> <join> <TCP> <member-list> <member>127.248.100.1</member> <member>127.248.100.2</member> <member>127.248.100.3</member> </member-list> </TCP> </join> </network>Hazelcast設定の以下の要素にノード間通信に利用するスレッド数を指定します。
hazelcast-config/base/io-thread-count
<base> <id>im_session_store</id> <io-thread-count>3</io-thread-count> </base>
11.6.5. セッション情報の永続化を行う場合¶
セッション情報の永続化に利用するデータソースを用意します。
セッション情報の永続化先用にアプリケーションサーバのデータソース設定を追加してください。以下は resin-web.xml の <database> でデータソース設定を行う例です。<database jndi-name="jdbc/session-store"> <driver> <type>org.postgresql.Driver</type> <url>jdbc:postgresql://domain:5432/session_store</url> <user>session_store</user> <password>session_store</password> </driver> <max-connections>1024</max-connections> <prepared-statement-cache-size>8</prepared-statement-cache-size> </database>注意
セッション管理機能で利用するデータソースと他の機能で利用するデータソースが同時に利用された場合、永続化するセッション情報に不整合が発生する可能性があります。 セッション情報の永続化に利用するデータソースはセッション情報管理専用のデータソースを用意してください。
注意
データソースへの書き込み/読み込みはアプリケーションサーバへのリクエストの都度発生する可能性があります。このため、このデータソースへのアクセスが遅延するとリクエスト処理のパフォーマンス劣化が発生してしまいます。運用環境に応じてデータベースのチューニングを行った上でご利用ください。
注意
データソースへの書き込み/読み込みはアプリケーションサーバへのリクエストの都度発生する可能性があります。このため、データベース製品のアーカイブログが大量に出力される可能性があります。
データベースにセッション管理を行うためのテーブルを作成します。
永続化先データソースに対して以下のSQLを実行してください。SQLの実行は各データベース製品が提供しているSQL実行ツールを利用してください。
Hazelcast設定の以下の要素を true に設定します。
hazelcast-config/store/persistance@enable
Hazelcast設定の以下の要素に用意したデータソースのJNDI名を指定します。
hazelcast-config/store/persistance/jndi-name
<store> <persistance enable="true"> <jndi-name>java:comp/env/jdbc/session-store</jndi-name> </persistance> </store>