この章では、Coherence*Web WebInstallerを使用して、Java EEアプリケーション向けのCoherence*Webを様々なアプリケーション・サーバーにインストールする手順について説明します。
|
準備: 「サポートされているWebコンテナ」を参照して、アプリケーション・サーバー固有のインストール手順を実行する必要があるかどうかを確認してください。WebLogic Server上でCoherence*Webをデプロイするには、次の2つの方法があります。
|
Coherence*Webは、様々なWebコンテナのJava EEアプリケーションに対して有効化できます。これを行うには、アプリケーションをデプロイする前に、自動化したCoherence*Web WebInstallerを使用して、デプロイの準備が整ったアプリケーションを実行する必要があります。この自動化したインストーラによって、アプリケーションのデプロイメント準備が完了します。インスペクトとインストールの2段階でインストール・プロセスが実行されます。これらの各段階でのインストーラの動作は、「Coherence*WebインストーラによるJava EEアプリケーションの設定」を参照してください。
このインストーラは、JavaコマンドラインまたはAntタスクから実行できます。次の各項では、Javaコマンドラインから実行する方法について説明します。Antタスク・ベースのインストールについては、「Coherence*Web WebInstaller Antタスク」を参照してください。
「サポートされているWebコンテナ」の説明にあるすべてのWebコンテナは、WebInstallerで同じ一般的なインストール手順を使用してインストールできます。この手順の詳細は「Coherence*Webセッション管理モジュールをインストールする一般的な手順」を参照してください。
Webコンテナの中には、この一般的なインストール手順を開始する前に、そのコンテナ固有の追加手順を実行しなければならないものがわずかにあります。Caucho Resin、WebLogic 10.xなどがこのようなコンテナに該当します。次にあげる項で、アプリケーション・サーバー固有のインストール手順について説明しています。
Coherence*Webセッション管理モジュールをOracle WebLogic 10から10.2のサーバーにインストールするには、次の手順を実行します。
Coherenceのライブラリ・ディレクトリで、webInstaller.jarを解凍してcoherence-web.jarを抽出します。
jar -xvf webInstaller.jar web-install/coherence-web.jar
このコマンドを実行すると、web-installサブディレクトリにcoherence-web.jarファイルが配置されます。次のコマンドを使用して、coherence-web.jarファイルを1階層上のライブラリ・ディレクトリに移動します。
Windowsの場合:
move web-install\coherence-web.jar . rmdir web-install
Unixの場合:
mv web-install/coherence-web.jar . rmdir web-install
サーバー・クラスタで実行する予定のWebLogic 10.xをインストールするたびに、次のコマンドを使用してライブラリを更新します。
java -cp coherence.jar;coherence-web.jar com.tangosol.coherence.servlet.WebPluginInstaller <wls-home-path> -install
たとえば、Windowsの場合は次のようにします。
java -cp coherence.jar;coherence-web.jar com.tangosol.coherence.servlet.WebPluginInstaller C:\bea\weblogic\wlserver_10 -install
「Coherence*Webセッション管理モジュールをインストールする一般的な手順」の説明にある手順に従ってインストールを完了します。サーバー・タイプとして「WebLogic/10.x」を指定します。
Coherence*Webセッション管理モジュールをCaucho Resin 3.1.xサーバーにインストールするには、次の手順を実行します。
Coherenceのライブラリ・ディレクトリで、webInstaller.jarを解凍してcoherence-web.jarを抽出します。
jar -xvf webInstaller.jar web-install/coherence-web.jar
このコマンドを実行すると、web-installサブディレクトリにcoherence-web.jarファイルが配置されます。次のコマンドを使用して、coherence-web.jarファイルを1階層上のライブラリ・ディレクトリに移動します。
Windowsの場合:
move web-install\coherence-web.jar . rmdir web-install
Unixの場合:
mv web-install/coherence-web.jar . rmdir web-install
サーバー・クラスタで実行する予定のResinをインストールするたびに、次のコマンドを使用してライブラリを更新します。
java -cp coherence.jar;coherence-web.jar com.tangosol.coherence.servlet.WebPluginInstaller <resin-home-path> -install
たとえば、Windowsの場合は次のようにします。
java -cp coherence.jar;coherence-web.jar com.tangosol.coherence.servlet.WebPluginInstaller C:\opt\resin31 -install
「Coherence*Webセッション管理モジュールをインストールする一般的な手順」の説明にある手順に従ってインストールを完了します。サーバー・タイプとして「Resin/3.1.x」を指定します。
「サポートされているWebコンテナ」に記載したどのWebコンテナにJava EEアプリケーション用のCoherence*Webをインストールする場合でも、次の手順を実行してください。
Java EE用のCoherence*WebをApache Tomcatサーバーにインストールしている場合の手順の詳細は、「Apache Tomcatサーバーに対するスティッキー・セッションの有効化」も参照してください。
Java EE用のCoherence*WebをIBM WebSphereサーバーにインストールしている場合の手順の詳細は、「IBM WebSphere 7.xサーバーに対するURLセッションIDのデコード」も参照してください。
デプロイするJava EEアプリケーション用のCoherence*Webをインストールするには:
アプリケーション・ディレクトリ、.earファイル、および.warファイルを他のプロセスで使用もアクセスもしていないことを確認します。
現在のディレクトリをCoherenceのライブラリ・ディレクトリに変更します(Windowsの場合は%COHERENCE_HOME%\lib、Unixの場合は$COHERENCE_HOME/lib)。
Javaコマンドを実行できるようにパスを構成していることを確認します。
次のコマンドを実行してアプリケーションのインスペクト手順を完了します。次のコマンドラインで、<app-path>にはアプリケーションへのフル・パスを指定し、<server-type>には、使用しているサーバーの名前を表1-1から選択して指定します。
java -jar webInstaller.jar <app-path> -inspect -server:<server-type>
アプリケーションを配置したディレクトリに、Java EEアプリケーション用のcoherence-web.xml構成ディスクリプタ・ファイルが作成されます(すでに存在している場合はそれが更新されます)。この構成ディスクリプタには、アプリケーション用としてインストーラ推奨のデフォルトのCoherence*Web設定が収められています。
必要に応じて、各自の要件に基づいてCoherence*Web設定を見直し、変更してください。
coherence-web.xmlディスクリプタを編集することで、Coherence*Web設定を変更できます。変更可能なCoherence*Web設定は、付録A「Coherence*Webコンテキスト・パラメータ」を参照してください。context-paramのサブ要素であるparam-nameおよびparam-valueを使用して、必要な機能を有効にします。次の一覧に、様々な設定の例を示します。
表3-1の設定では、すべてのServletContext(グローバル)属性をクラスタ化し、そのクラスタにあるサーバーがこれらの属性に同じ値を持ち、これらの属性が変更されたときはサーブレット仕様で指定されたイベントを受け取るようにします。
表3-2の設定をアプリケーションで使用すると、そのアプリケーションに存在するすべてのセッションを列挙したり、そのいずれかを取得して調査または操作したりできます。
表3-3の設定を使用すると、SecureRandomアルゴリズムを使用して生成したHttpSession IDを長くすることができます。この長さは任意の値にできますが、実際は、CookieまたはURLに適した長さにする必要があります(セッションIDの管理方法に依存)。これを長くすると、セッションが意図的にハイジャックされる危険性を低くできます。
デフォルトでは、HttpSession IDはCookieで管理されます。アプリケーションでサポートされているURLエンコーディングを有効にするには、表3-4に示すオプションを設定します。
次のコマンドで、<app-path>をアプリケーションへのフル・パスに置き換えて実行すると、Coherence*Webアプリケーションのインストール手順が実行します。
java -jar webInstaller.jar <app-path> -install
このインストーラでは、有効なcoherence-web.xml構成ディスクリプタをアプリケーションと同じディレクトリに配置する必要があります。
更新済のアプリケーションをデプロイし、Coherenceディストリビューションに付随している軽量型ロード・バランサを使用して、すべてが仕様どおりに機能することを確認します。この軽量型ロード・バランサは、WebLogic Serverに付随しているロード・バランサとは対照的に、本番向けのユーティリティではありません。
Apache Tomcatサーバーに対するスティッキー・セッションの有効化
Apache Tomcatサーバーにスティッキー・セッションを採用するには、サーバーのserver.xmlファイルにjvmRoute属性を構成する必要があります。この属性の詳細は、次のURLを参照してください。
http://tomcat.apache.org/connectors-doc/reference/workers.html
IBM WebSphere 7.xサーバーに対するURLセッションIDのデコード
coherence-session-urldecode-bycontainerコンテキスト・パラメータをtrueに設定すると、コンテナでURLをデコードできます。Java EE用のCoherence*WebをIBM WebSphereアプリケーション・サーバーのリリース7.xにインストールしている場合は、このコンテキスト・パラメータをfalseに設定する必要があります。WebSphereアプリケーション・サーバーのかわりに、Coherence*WebによってセッションIDのデコードが処理されます。
Coherence*Web WebInstallerをWebSphere 7.xアプリケーション・サーバー・タイプに対して実行する場合、このパラメータは、ユーザーが明示的にtrueに設定しないかぎり、自動的にfalseに設定されます。
Coherence*Web WebInstaller Antタスクを使用すると、既存のAntビルド・ファイルからインストーラを実行できます。
この項の内容は次のとおりです。
Coherence*Web WebInstaller Antタスクを使用するには、例3-1に示すタスク・インポート文をAntビルド・ファイルに追加します。この例で、${coherence.home}はCoherenceをインストールした環境のルート・ディレクトリを指しています。
例3-1 Coherence*Web WebInstaller用のタスク・インポート文
<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アプリケーションをビルドします。
生成されたCoherence*Web XMLディスクリプタを必要に応じて編集します。
operations属性をinstallに設定して、Coherence*Web Antタスクを実行します。
アプリケーションで反復手順のある開発作業(JSP、サーブレット、静的リソースなどの変更)を実行する場合は、次のインストール・プロセスを使用します。
operations属性をuninstall、failonerror属性をfalse、descriptor属性を前述のステップ2で生成したCoherence*Web XMLディスクリプタの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。
通常どおりにJava EEアプリケーションをビルドします。
operations属性をinspect、installおよびdescriptor属性を前述のステップ2で生成したCoherence*Web XMLディスクリプタの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。
Coherence*WebをインストールしたJava EEアプリケーションのCoherence*Web構成設定を変更するには、次の手順を使用します。
operations属性をuninstall、descriptor属性をJava EEアプリケーションのCoherence*Web XMLディスクリプタの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。
Coherence*Web XMLディスクリプタで、必要な構成パラメータを変更します。
operations属性をinstall、descriptor属性をステップ2で変更したCoherence*Web XMLディスクリプタの場所にそれぞれ設定して、Coherence*Web Antタスクを実行します。
表3-5は、Coherence*Web WebInstaller Antタスクで使用可能な属性を示しています。
表3-5 Coherence*Web WebInstaller Antタスクの属性
| 属性 | 説明 | 必須? |
|---|---|---|
|
app |
目的のJava EEアプリケーションへのパス。WARファイル、EARファイル、展開したWARディレクトリ、または展開したEARディレクトリのいずれかへのパスを指定できます。 |
|
|
backup |
元の目的のJava EEアプリケーションのバックアップを保存するディレクトリへのパス。この属性は、デフォルトでJava EEアプリケーションのインストール先ディレクトリに設定されます。 |
いいえ |
|
descriptor |
Coherence*Web XMLディスクリプタへのパス。この属性は、デフォルトで目的のJava EEアプリケーションのインストール先ディレクトリにある |
いいえ |
|
failonerror |
0以外のステータスでCoherence*Webインストーラが終了した場合はAntビルドを停止します。デフォルトは |
いいえ |
|
nowarn |
警告メッセージを表示しません。この属性の値は |
いいえ |
|
operations |
実行する操作をカンマまたはスペースで区切って指定します。指定できる操作は、 |
はい |
|
server |
目的のJava EEアプリケーション・サーバーの別名。 |
いいえ |
|
touch |
Coherence*Webインストーラによって変更されたJSPとTLDにtouchコマンドを実行します。この属性に指定できる値は、 |
いいえ |
|
verbose |
詳細出力を表示します。この属性の値は |
いいえ |
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"/>
Coherenceには、ソフトウェアによる軽量なロード・バランサが付属しています。このソフトウェアはテスト以外の目的には使用できません。このロード・バランサは、セッション管理などの機能テストではきわめて効果的で、たいへん使いやすいソフトウェアです。
それぞれがIPアドレスとポートの一意な組合せでアプリケーションを実行する複数のアプリケーション・サーバー・プロセスを、1台以上のサーバー・マシン上で開始します。
コマンド(またはシェル)ウィンドウを開きます。
現在のディレクトリをCoherenceのライブラリ・ディレクトリに変更します(Windowsの場合は%COHERENCE_HOME%\lib、Unixの場合は$COHERENCE_HOME/lib)。
Javaコマンドを実行できるようにパスを構成していることを確認します。
次のコマンドラインを使用してソフトウェア・ロード・バランサを起動します(これらの各コマンドラインによって、デフォルトのHTTPポート80でアプリケーションが使用可能になります)。
たとえば、2つのアプリケーション・サーバー・インスタンスを7001ポートと7002ポートに持つ1台のマシンでローカルにロード・バランシングをテストするには、次のように入力します。
java -jar coherence-loadbalancer.jar localhost:80 localhost:7001 localhost:7002
server1、server2、およびserver3に対して7001ポートで負荷を分散するserver1でローカルにロード・バランサを実行するには、次のように入力します。
java -jar coherence-loadbalancer.jar server1:80 server1:7001 server2:7001 server3:7001
上述のコマンドラインを実行すると、これまでhttp://server1:7001/my.jspをURLとしていたアプリケーションに、http://server1:80/my.jspまたはhttp://server1/my.jspのみを指定してアクセスできるようになります。
|
注意: アプリケーションで使用されるアドレスが、相対リダイレクトまたはロード・バランサのアドレスのいずれかであることを確認してください。 |
表3-6は、ロード・バランサのコマンドライン・オプションを示しています。
インスペクトの手順では、Coherence*Web WebInstallerによって次のタスクが実行されます。
アプリケーションと目的のWebコンテナに関する基本的な情報、および目的のWebコンテナに適したデフォルトのCoherence*Web構成コンテキスト・パラメータを記述したテンプレートであるcoherence-web.xml構成ファイルを生成します。使用可能なすべてのパラメータの詳細は、付録A「Coherence*Webコンテキスト・パラメータ」を参照してください。
既存のcoherence-web.xml構成ファイルが存在する場合(たとえば、過去にCoherence*Webインストーラを実行したことがある場合)は、既存のファイルにあるコンテキスト・パラメータは生成したテンプレートにあるパラメータにマージされます。
目的の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*Web ServletContextListenerによって、各アプリケーション固有のServletContextListenerに各ServletContextEventが伝播します。
Coherence*Web ServletContextAttributeListenerを各web.xmlディスクリプタに登録します。実行時に、Coherence*Web ServletContextAttributeListenerによって、各アプリケーション固有のServletContextAttributeListenerに各ServletContextAttributeEventが伝播します。
各web.xmlディスクリプタで宣言した各アプリケーション固有のServletをCoherence*Web SessionServletでラップします。実行時に、各Coherence*Web SessionServletからラップされたServletに権限が委譲されます。
インスペクト手順(2)で列挙した各JSPに次のディレクティブを追加します。
<%@ page extends="com.tangosol.coherence.servlet.api22.JspServlet" %>
アンインストールの手順では、Coherence*Web WebInstallerによって、設定済のJava EEアプリケーションがインストール・プロセスの手順(1)で作成した元のバージョンのバックアップに置き換えられます。
|
注意: Coherence*WebのネイティブなWebLogic SPI実装には、この項の内容は該当しません。これは、Java EEセキュリティを使用しているアプリケーションに、WebInstallerを使用してCoherence*Webをインストールする場合にのみ該当します。SPI実装を使用する手順は、第2章「WebLogic ServerでのCoherence*Webの使用方法」を参照してください。 |
Java EEセキュリティを使用しているアプリケーションにCoherence*Webをインストールするには、インストールで次の手順を別途実行してください。
Coherence*WebセッションCookieを有効にします。
詳細は、表A-1のcoherence-session-cookies-enabled構成要素を参照してください。
Coherence*WebセッションCookieの名前を、目的のWebコンテナで使用していない名前に変更します。
デフォルトでは、JSESSIONIDがほとんどのコンテナでセッションCookie名として使用されるため、Coherence*WebセッションCookie名としてはCSESSIONIDをお薦めします。詳細は、表A-1のcoherence-session-cookie-name構成要素を参照してください。
目的のWebコンテナに対するセッション・レプリケーションを有効にします。
セッション・レプリケーションが有効になっていない場合、またはコンテナでセッション・レプリケーションの形態がサポートされていない場合は、フェイルオーバーの際にWebアプリケーションに対する再認証を実行する必要があります。セッション・レプリケーションの有効化に関する手順は、Webコンテナのドキュメントを参照してください。
この構成によって、指定の認証済ユーザーに次の2つのセッションが関連付けられます。
Webアプリケーションで作成したすべてのセッション・データを含むCoherence*Webセッション
認証中にWebコンテナによって作成され、ユーザーの特定に必要な情報のみを保存したセッション
|
注意: この項の説明は、Coherence*Web SPIを使用しないアプリケーション・サーバーのみを対象としています。 |
Oracle Coherence*Webは、ColdFusionアプリケーションのセッション管理モジュールとして使用できます。次の手順に従い、アプリケーション・サーバーに対してCoherence*Webを有効化します。
ColdFusionインストーラで、ColdFusionのWARバージョンを作成します。
ColdFusion用にJ2EEコンテナを構成するために指定された手順に従います。
アプリケーション・サーバーとしてCaucho Resinを実行する場合、Coherence WebInstallerをそのコンテナで実行します。詳細は、「Caucho Resin 3.1.xへのインストール」を参照してください。
Coherence WebInstallerを使用して生成されたcfusion.warを設定します。
Java EEアプリケーション用にCoherence*Webをインストールするための追加手順は、「Coherence*Webセッション管理モジュールをインストールする一般的な手順」を参照してください。
cfusion.warをWebコンテナにデプロイします。
J2EEセッション管理を使用するようにColdFusion MXを構成します。
次のURLにあるColdFusion管理ページにアクセスします。
http://<host>:<port>/coldfusion-context-root/CFIDE/administrator
「Server Sessions」の下にある「Memory Variables」を選択し、「Use J2EE session variables」チェック・ボックスを選択します。
ColdFusionアプリケーションを追加します。
アプリケーションには、sessionmanagement="Yes"と指定したApplication.cfmファイルが必要ですが、ColdFusion構成を使用してセッションを構成しないでください(そのようにしないと例外がスローされます)。Application.cfmには、次の行を含める必要があります。
<cfapplication sessionmanagement="Yes">