3 他のアプリケーション・サーバーにおけるCoherence*Webの使用方法
ノート:
「サポートされているWebコンテナ」を参照して、アプリケーション・サーバー固有の統合ステップを実行する必要があるかどうかを確認してください。
この章の内容は次のとおりです。
- WebInstallerによるCoherence*Webの統合
Coherence*Webは、様々なWebコンテナのJava EEアプリケーションに対して有効化できます。 - Coherence*Web WebInstaller Antタスク
Coherence*Web WebInstaller Antタスクを使用すると、既存のAntビルド・ファイルからユーティリティを実行できます。 - HTTPセッション管理のテスト
Coherenceには、テストの目的のみで使用する軽量なソフトウェアのロード・バランサが付属しています。 - Coherence*Web WebInstallerによるJava EEアプリケーションの設定
Coherence*Web WebInstallerでは、インスペクトのステップの一部として多数のタスクが実行されます。 - Java EEセキュリティを使用しているアプリケーションとのCoherence*Webの統合
Coherence*Webは、Java EEセキュリティを使用するアプリケーションと統合されます。 - クロスサイト・スクリプティング攻撃の防止
coherence-session-cookie-httponly
コンテキスト・パラメータを使用して、HttpOnly
属性をセッションCookieに追加します。
WebInstallerによるCoherence*Webの統合
Coherence*Webを有効化するには、アプリケーションをデプロイする前に、自動化したCoherence*Web WebInstallerを使用して、デプロイの準備が整ったアプリケーションを実行する必要があります。このユーティリティによって、アプリケーションのデプロイメント準備が完了します。インスペクトと統合の2ステップで統合プロセスが実行されます。「Coherence*Web Web WebInstallerによるJava EEアプリケーションの設定」を参照してください。
WebInstallerは、JavaコマンドラインまたはAntタスクから実行できます。次の各項では、Javaコマンド行から実行する方法について説明します。Antタスク・ベースの環境については、「Coherence*Web WebInstaller Antタスク」を参照してください。
この項には次のトピックが含まれます:
Coherence*Webセッション管理モジュールを統合する一般的な手順
「サポートされているWebコンテナ」に記載されたどのWebコンテナにJava EEアプリケーション用のCoherence*Webを統合する場合でも、次のステップを実行してください
Java EE用のCoherence*WebをApache Tomcatサーバーに統合している場合の手順の詳細は、「Apache Tomcatサーバーに対するスティッキー・セッションの有効化」も参照してください。
Java EE用のCoherence*WebをIBM WebSphereサーバーに統合している場合の手順の詳細は、「IBM WebSphere Libertyとの統合」も参照してください。
デプロイするJava EEアプリケーション用のCoherence*Webを統合するには:
インプロセスのアプリケーションのデプロイと実行
Coherence*Webはアプリケーション・サーバーでインプロセス状態で実行できます。これは、セッション・データがアプリケーション・サーバーで格納される場所です。このトポロジの詳細は、「インプロセス・トポロジ」を参照してください。
アプリケーション・サーバーの場合:
- 記憶域を有効化した状態でアプリケーション・サーバーを起動します。システム・プロパティの
coherence.session.localstorage=true
をアプリケーション・サーバー起動スクリプトのJavaオプションに追加します。 coherence.jar
とcoherence-web.jar
のファイルを共有ライブラリとしてデプロイします。- アプリケーションをデプロイして実行します。
アウトオブプロセスのアプリケーションのデプロイと実行
アウトオブプロセス・デプロイメント・トポロジでは、スタンドアロンのキャッシュ・サーバーでセッション・データを格納し、アプリケーション・サーバーはキャッシュ・クライアントとして構成されます。「アウトオブプロセス・トポロジ」を参照してください。
キャッシュ・サーバーとアプリケーション・サーバーは、同じキャッシュ構成とセッション構成を使用する必要があります。この構成は、Coherence*Web WebInstallerによりdefault-session-cache-config.xml
ファイルに生成されます。WebInstallerにより、設定済アプリケーションのWEB-INF\classes
ディレクトリにファイルが生成されます。
キャッシュ・サーバーの場合:
-
coherence.cacheconfig
システム・プロパティをキャッシュ・サーバー起動スクリプトに追加して、ファイル構成ファイルを探します。また、システム・プロパティのcoherence.session.localstorage=true
を含めて、キャッシュ・サーバーの記憶域を有効にする必要があります。 -
coherence.jar
とcoherence-web.jar
のファイルをキャッシュ・サーバー起動スクリプトのクラスパスに追加します。次の例は、サンプル起動スクリプトです。
java -server -Xms512m -Xmx512m -cp <
Coherence installation dir
>/lib/coherence.jar:<Coherence installation dir
>/lib/coherence-web.jar -Dcoherence.management.remote=true -Dcoherence.cacheconfig=default-session-cache-config.xml -Dcoherence.session.localstorage=true com.tangosol.net.DefaultCacheServer
アプリケーション・サーバーの場合(キャッシュ・クライアント):
アウトオブプロセス・トポロジへの移行
インプロセスのCoherence*Webでアプリケーションの実行とテストを行っている場合、簡単にアウトオブプロセス・トポロジに移行できます。単純に、キャッシュ・サーバーとアプリケーション・サーバーを設定します。詳細は、「アウトオブプロセスのアプリケーションのデプロイと実行」を参照してください
Coherence*Extendによるアウトオブプロセスのアプリケーションのデプロイと実行
Coherence*Extendによるアウトオブプロセス・トポロジは、アウトオブプロセス・トポロジに似ていますが、アプリケーション・サーバー層とキャッシュ・サーバー層との通信をCoherence*Extend経由(TCP/IP)で行う点が異なります。Coherence*Extendは、クラスタの外部で実行されるExtendクライアント(またはプロキシ)と、1台以上のキャッシュ・サーバーでホストされているクラスタ内で実行される拡張プロキシ・サービスの2つの基本コンポーネントで構成されます。「Coherence*Extendによるアウトオブプロセス・トポロジ」を参照してください。
これらのデプロイメントの参加者には、次の3種類があります。
-
キャッシュ・サーバー(記憶域サーバー)は、実際のセッション・データをメモリーに格納する際に使用されます。
-
Web(アプリケーション)サーバーは、このトポロジにおけるExtendクライアントです。クラスタのメンバーにはならず、クラスタ内のプロキシ・ノードに接続します。クラスタへのリクエストの発行は、そのプロキシ・ノードが代行します。
-
プロキシ・サーバーは、クラスタ内の記憶域が無効なメンバーとして、ExtendクライアントからのTCP/IP接続を受け入れ、管理します。クライアントからのリクエストはクラスタに送信され、応答はTCP/IP接続を通じて返送されます。
キャッシュ・サーバーの場合:
「アウトオブプロセスのアプリケーションのデプロイと実行」でキャッシュ・サーバーを構成する手順に従ってください。また、キャッシュ・サーバーのdefault-session-cache-config.xml
ファイルをコピーしてから編集し、システム・プロパティのcoherence.session.proxy=false
とcoherence.session.localstorage=true
を追加します。
これらのコンテキスト・パラメータを含むdefault-session-cache-config.xml
ファイルの例と詳細は、「プロキシJVMと記憶域JVMのキャッシュの構成」を参照してください。
Web層(アプリケーション)サーバーの場合:
「アウトオブプロセスのアプリケーションのデプロイと実行」でアプリケーション・サーバーを構成する手順に従ってくださいまた、次のステップを完了します。
-
オプティミスティック・ロック・モードを使用するようにCoherence*Webを構成していることを確認します。オプティミスティック・ロックは、Coherence*Webにおけるデフォルトのロック・メカニズムです(「オプティミスティック・ロック」を参照)。
-
アプリケーション・サーバーの
default-session-cache-config.xml
ファイルをコピーしてから編集し、プロキシJVMのホスト名、IPアドレスおよびポートを追加します。このためには、<remote-addresses>
セクションをファイルに追加します。一般には、ロード・バランシングとフェイルオーバーに備えて、すべてのプロキシJVMのホスト名、IPアドレスおよびポートを追加します。
「Web層JVMのキャッシュの構成」を参照してください。
プロキシ・サーバーの場合:
若干変更することで、プロキシ・サーバーではキャッシュ・サーバーおよびアプリケーション・サーバーと同じキャッシュ構成およびセッション構成を使用できます。default-session-cache-config.xml
ファイルを編集して、これらのシステム・プロパティを追加します。
-
coherence.session.localstorage=false
により、ローカル記憶域を無効にします。 -
coherence.session.proxy=true
は、プロキシ・サービスが使用されていることを示します。 -
coherence.session.proxy.localhost
は、プロキシがバインドされるNICのホスト名またはIPアドレスを示します。 -
coherence.session.proxy.localport
は、プロキシがバインドされるポートの一意のポート番号を示します。
「プロキシJVMと記憶域JVMのキャッシュの構成」を参照してください。
Apache Tomcatサーバーに対するスティッキー・セッションの有効化
Apache Tomcatサーバーにスティッキー・セッションを採用するには、サーバーのserver.xml
ファイルにjvmRoute
属性を構成する必要があります。この属性の詳細は、次のURLを参照してください。
http://tomcat.apache.org/connectors-doc/reference/workers.html
IBM WebSphere Libertyとの統合
HTTPセッション・アフィニティは、WebSphere Libertyとの統合時に明示的に構成する必要がある場合があります。Coherence*Webに、LibertyサーバーのクローンID、およびアフィニティ・セパレータを渡す必要があります。https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_admin_session_persistence.htmlにあるlibertyドキュメントで説明されているようにクローンIDがユーザーによって定義された場合、およびアフィニティ・セパレータがコロン(:
)文字である場合、その他の構成は必要ありません。それ以外の場合には、サーバー起動時に次のシステム・プロパティを使用できます。
-
coherence.web.liberty.suffix.separator
– アフィニティ接尾辞セパレータ。デフォルト値は:
です。 -
coherence.web.liberty.suffix
– サーバーのクローンID。デフォルト値は、前に示したWebSphere Libertyドキュメントで説明されているとおり、bootstrap.properties
ファイルでcloneId
システム・プロパティのために構成されている値です。
Coherence*Web WebInstaller Antタスク
この項には次のトピックが含まれます:
Coherence*Web WebInstaller Antタスクの使用方法
Coherence*Web WebInstaller Antタスクを使用するには、次のタスク・インポート文をAntビルド・ファイルに追加します。この例で、${
coherence.home
}
はCoherenceをインストールした環境のルート・ディレクトリを指しています。
<taskdef name="cwi" classname="com.tangosol.coherence.misc.CoherenceWebAntTask">
<classpath>
<pathelement location="${coherence.home
}/lib/webInstaller.jar"/>
</classpath>
</taskdef>
次の手順は、AntビルドからJava EEアプリケーションにCoherence*Webを統合するための基本的なプロセスを示しています。
-
いつものようにJava EEアプリケーションをビルドします。
-
operations
属性をinspect
に設定して、Coherence*Web Antタスクを実行します。 -
生成されたCoherence*Web XMLディスクリプタ・ファイルを必要に応じて変更します。
-
operations
属性をinstall
に設定して、Coherence*Web Antタスクを実行します。
反復手順のある開発作業の実行
アプリケーションで反復手順のある開発作業(JavaServer Pages (JSP)、サーブレット、静的リソースなどの変更)を実行する場合は、次の統合プロセスを使用します。
-
operations
属性をuninstall
に、failonerror
属性をfalse
に、descriptor
属性を「Coherence*Web WebInstaller Antタスクの使用方法」のステップ2で以前生成したCoherence*Web XMLディスクリプタ・ファイルの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。 -
いつものようにJava EEアプリケーションをビルドします。
-
operations
属性をinspect
に、install
属性とdescriptor
属性を「Coherence*Web WebInstaller Antタスクの使用方法」のステップ2で以前生成したCoherence*Web XMLディスクリプタ・ファイルの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。
Java EEアプリケーションのCoherence*Web構成設定の変更
Coherence*Webを使用するJava EEアプリケーションのCoherence*Web構成設定を変更する必要がある場合、次のステップを使用します。
-
operations
属性をuninstall
に、descriptor
属性をJava EEアプリケーションのCoherence*Web XMLディスクリプタ・ファイルの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。 -
Coherence*Web XMLディスクリプタ・ファイルで、必要な構成パラメータを変更します。
-
operations
属性をinstall
に、descriptor
属性を「Coherence*Web WebInstaller Antタスクの使用方法」のステップ2で変更したCoherence*Web XMLディスクリプタ・ファイルの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。
WebInstaller Antタスクの構成
表3-2は、Coherence*Web WebInstaller Antタスクで使用可能な属性を示しています。
表3-2 Coherence*Web WebInstaller Antタスクの属性
属性 | 説明 | 必須 |
---|---|---|
|
目的のJava EEアプリケーションへのパス。WARファイル、EARファイル、展開したWARディレクトリ、または展開したEARディレクトリのいずれかへのパスを指定できます。 |
|
|
元の目的のJava EEアプリケーションのバックアップを保存するディレクトリへのパス。この属性は、デフォルトでJava EEアプリケーションのインストール先ディレクトリに設定されます。 |
いいえ |
|
Coherence*Web XMLディスクリプタ・ファイルへのパス。この属性は、デフォルトで目的のJava EEアプリケーションのインストール先ディレクトリにある |
いいえ |
|
0以外のステータスでCoherence*Web WebInstallerが終了した場合はAntビルドを停止します。デフォルトは |
いいえ |
|
警告メッセージを表示しないようにします。この属性の値は |
いいえ |
|
実行する操作をカンマまたはスペースで区切って指定します。指定できる操作は、 |
はい |
|
目的のJava EEアプリケーション・サーバーの別名。 |
いいえ |
|
Coherence*Web WebInstallerによって変更されたJSPとTLDにtouchコマンドを実行します。この属性に指定できる値は、 |
いいえ |
|
詳細出力を表示します。この属性の値は |
いいえ |
WebInstaller Antタスクの例
次に、WebInstaller Antタスクのコマンド例を示します。
-
myWebApp.war
Webアプリケーションをインスペクトして、現在の作業ディレクトリでmy-coherence-web.xml
という名前のCoherence*Web XMLディスクリプタ・ファイルを作成します。<cwi app="myWebApp.war" operations="inspect" descriptor="my-coherence-web.xml"/>
-
現在の作業ディレクトリにある
my-coherence-web.xml
という名前のCoherence*Web XMLディスクリプタ・ファイルを使用して、myWebApp.war
WebアプリケーションにCoherence*Webを統合します。<cwi app="myWebApp.war" operations="install" descriptor="my-coherence-web.xml"/>
-
myWebApp.war
WebアプリケーションからCoherence*Webを削除します。<cwi app="myWebApp.war" operations="uninstall">
-
/dev/myWebApp/src
ディレクトリにあるmy-coherence-web.xml
という名前のCoherence*Web XMLディスクリプタ・ファイルを使用して、/dev/myWebApp/build
ディレクトリに配置したmyWebApp.war
WebアプリケーションにCoherence*Webを統合し、元のWebアプリケーションのバックアップを/dev/myWebApp/work
ディレクトリに配置します。<cwi app="/dev/myWebApp/build/myWebApp.war" operations="install" descriptor="/dev/myWebApp/src/my-coherence-web.xml" backup="/dev/myWebApp/work"/>
-
/dev/myWebApp/build
ディレクトリにあるcoherence-web.xml
という名前のCoherence*Web XMLディスクリプタ・ファイルを使用して、/dev/myWebApp/build
ディレクトリに配置したmyWebApp.war
WebアプリケーションにCoherence*Webを統合します。Webアプリケーションがまだインスペクトされていない(つまり、/dev/myWebApp/build/coherence-web.xml
が存在しない)場合は、Coherence*Webを統合する前にWebアプリケーションをインスペクトします。<cwi app="/dev/myWebApp/build/myWebApp.war" operations="inspect,install"/>
-
/dev/myWebApp/src
ディレクトリにあるmy-coherence-web.xml
という名前のCoherence*Web XMLディスクリプタ・ファイルを使用して、/dev/myWebApp/build
ディレクトリに配置したmyWebApp.war
WebアプリケーションにCoherence*Webを再統合します。<cwi app="/dev/myWebApp/build/myWebApp.war" operations="uninstall,install" descriptor="/dev/myWebApp/src/my-coherence-web.xml"/>
HTTPセッション管理のテスト
HTTPセッション管理を軽量型ロード・バランサでテストするには、次のステップを実行します。
Coherence*Web WebInstallerによるJava EEアプリケーションの設定
Coherence*Web WebInstallerでは、インスペクトのステップの一部として多数のタスクが実行されます。
タスクは次のとおりです。
-
アプリケーションと目的のWebコンテナに関する基本的な情報、および目的のWebコンテナに適したデフォルトのCoherence*Web構成コンテキスト・パラメータを記述したテンプレートである
coherence-web.xml
構成ファイルを生成します。「Coherence*Webコンテキスト・パラメータ」を参照してください。WebInstallerではサーブレット・コンテナを設定して、記憶域を無効化した状態で起動します(つまり、
coherence.session.localstorage
をfalse
に設定します)。既存の
coherence-web.xml
構成ファイルが存在する場合(たとえば、過去にCoherence*Web WebInstallerを実行したことがある場合)は、既存のファイルにあるコンテキスト・パラメータは生成したテンプレートにあるパラメータにマージされます。 -
目的のJava EEアプリケーションにある各WebアプリケーションからJSPを列挙して、各JSPに関する情報を
coherence-web.xml
構成ファイルに追加します。 -
目的のJava EEアプリケーションにある各WebアプリケーションからTLDを列挙して、各TLDに関する情報を
coherence-web.xml
構成ファイルに追加します。
統合のステップでは、Coherence*Web WebInstallerによって次のタスクが実行されます。
-
アンインストールのステップで復元できるように、元のJava EEアプリケーションのバックアップを作成します。
-
インスペクトのステップ1で生成したCoherence*Web構成コンテキスト・パラメータを、目的のJava EEアプリケーションに含まれる各Webアプリケーションの
web.xml
ディスクリプタ・ファイルに追加します。 -
各Webアプリケーションから、アプリケーション固有の
ServletContextListener
、ServletContextAttributeListener
、ServletRequestListener
、ServletRequestAttributeListener
、HttpSessionListener
、およびHttpSessionAttributeListener
の各クラス(TLDによって登録されたものを含む)を登録解除します。 -
Coherence*Web
ServletContextListener
クラスを各web.xml
ディスクリプタ・ファイルに登録します。実行時に、Coherence*WebServletContextListener
クラスによって、各アプリケーション固有のServletContextListener
リスナーに各ServletContextEvent
イベントが伝播します。 -
Coherence*Web
ServletContextAttributeListener
リスナーを各web.xml
ディスクリプタ・ファイルに登録します。実行時に、Coherence*WebServletContextAttributeListener
によって、各アプリケーション固有のServletContextAttributeListener
リスナーに各ServletContextAttributeEvent
イベントが伝播します。 -
各
web.xml
ディスクリプタ・ファイルで宣言した各アプリケーション固有のServlet
をCoherence*WebSessionServlet
でラップします。実行時に、各Coherence*WebSessionServlet
からラップされたServlet
に権限が委譲されます。 -
インスペクト・ステップ2で列挙した各JSPに次のディレクティブを追加します。
<%@ page extends="com.tangosol.coherence.servlet.api22.JspServlet" %>
ノート:
Coherence*WebがJava EEアプリケーションと統合された後、JSPに重複するページ拡張が存在すると、エラーが発生することがあります。したがって、レプリケートされたページ拡張を削除します。Coherence*Web WebInstallerユーティリティでは、Coherenceサーブレット・コンテキストのページ拡張がデフォルトで追加されるため、ページ拡張を明示的に追加する必要はありません。アンインストールのステップでは、Coherence*Web WebInstallerによって、設定済のJava EEアプリケーションが統合プロセスのステップ(1)で作成した元のバージョンのバックアップに置き換えられます。
Java EEセキュリティを使用しているアプリケーションとのCoherence*Webの統合
Coherence*Webは、Java EEセキュリティを使用するアプリケーションと統合されます。
Java EEセキュリティを使用しているアプリケーションにCoherence*Webを統合するには、次のステップを別途実行してください。
この構成によって、指定の認証済ユーザーに次の2つのセッションが関連付けられます。
-
Webアプリケーションで作成したすべてのセッション・データを含むCoherence*Webセッション
-
認証中にWebコンテナによって作成され、ユーザーの特定に必要な情報のみを保存したセッション