Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

付録A.3 サーブレットエンジンモードとJ2EEサーバモードの比較

サーブレットエンジンモードは互換用のサーバの動作モードです。旧バージョンでサーブレットエンジンモードを使用していた場合には,推奨の動作モードであるJ2EEサーバモードの1.4モード(以降,J2EEサーバモードと呼びます)への移行をお勧めします。ここでは,移行時の留意事項として,サーブレットエンジンモードとJ2EEサーバモードを比較し,機能の差異およびシステムの構築方法の差異について説明します。

サーブレットエンジンモードからJ2EEサーバモードへ移行する場合には,次の差異に留意する必要があります。

<この項の構成>
(1) システムの構築方法
(2) Webアプリケーションのデプロイと設定
(3) Webサーバの使用方法
(4) データベースとの接続
(5) Webアプリケーションに組み込むサーブレットフィルタ
(6) Webアプリケーションのリロード
(7) システムの起動および停止方法
(8) 使用するメモリ,スレッド数,ポート番号

(1) システムの構築方法

サーブレットエンジンモードでは,Webコンテナサーバ用のusrconf.propertiesやusrconf.cfgを編集し,cjwebsetupなどのコマンドを実行してシステムを構築しますが,J2EEサーバモードでは次の3種類のシステム構築方法があります。

どの方法でシステムを構築するかは,どのようなシステムを構築してどのように運用するかによって決定します。システム構築方法の検討については,マニュアル「Cosminexus システム設計ガイド」を参照してください。

(2) Webアプリケーションのデプロイと設定

サーブレットエンジンモードとJ2EEサーバモードでは,Webアプリケーションのデプロイおよび属性の設定方法が異なります。

(a) Webアプリケーションのデプロイ

サーブレットエンジンモードとJ2EEサーバモードでは,Webアプリケーションのデプロイ方法が異なります。

サーブレットエンジンモードとJ2EEサーバモードのWebアプリケーションのデプロイおよびアンデプロイ方法の違いを次に示します。

項目 サーブレットエンジンモードの場合 J2EEサーバモードの場合
WARファイルのコピーの場合 ディレクトリのコピーの場合 アーカイブ形式の場合 展開ディレクトリ形式の場合
アセンブル WAR形式にアセンブルする アセンブルは不要 EAR形式またはZIP形式にアセンブルする アセンブルは不要
デプロイ/アンデプロイ単位 WARファイル単位 ディレクトリ単位 EARファイルまたはZIPファイル単位 ディレクトリ単位
入れ替えできる最小単位 WARファイル単位 JSPファイルやServletクラス単位 EARファイルまたはZIPファイル単位 JSPファイルやServletクラス単位
デプロイ/アンデプロイできるタイミング Webコンテナサーバの起動中/停止中 J2EEサーバの起動中
デプロイ/アンデプロイ結果の反映 Webコンテナサーバの起動/再起動後 デプロイ操作完了後

サーブレットエンジンモードからJ2EEサーバモードへ移行する場合には,サーブレットエンジンモードでのWebアプリケーションのデプロイ方法と操作性が近い,展開ディレクトリ形式によるデプロイ方法をお勧めします。

アーカイブ形式,または展開ディレクトリ形式のJ2EEアプリケーションについては,「7. J2EEアプリケーションの実行」を参照してください。

(b) Webアプリケーションの属性の設定

サーブレットエンジンモードの場合は,アプリケーション開発時にWebアプリケーションのDD(web.xml)を直接編集するか,またはhitachi_web.propertiesのキーを設定して,Webアプリケーションの属性を設定します。なお,WebアプリケーションのDD(web.xml)とhitachi_web.propertiesは,WebアプリケーションのWEB-INFディレクトリ下に置きます。

J2EEサーバモードの場合は,これらに加えて,次の方法でもWebアプリケーションの属性を設定できます。

サーバ管理コマンドまたはServer Plug-inでは,J2EEアプリケーションの実行時間の監視や同時実行スレッド数の制御など,J2EEサーバの拡張機能の設定ができます。J2EEサーバモードの場合は,システム構築時にサーバ管理コマンドまたはServer Plug-inで設定する方法をお勧めします。サーバ管理コマンドまたはServer Plug-inの操作方法,および設定内容については,マニュアル「Cosminexus アプリケーション設定操作ガイド」を参照してください。

なお,hitachi_web.propertiesの設定内容は,サーブレットエンジンモードとJ2EEサーバモードで異なります。

(3) Webサーバの使用方法

サーブレットエンジンモードとJ2EEサーバモードでは,Webサーバの使用方法が異なります。

サーブレットエンジンモードの場合 J2EEサーバモードの場合
Webサーバと連携して使用する Webサーバと連携して使用する
Webコンテナサーバ内の簡易Webサーバを使用する J2EEサーバ内のインプロセスHTTPサーバを使用する

Webサーバと連携して使用する方法の場合,サーブレットエンジンモードからJ2EEサーバモードに移行するときは,設定内容には差異はありません。ただし,システムの構築方法によって設定方法が異なります。

簡易Webサーバを使用する方法の場合,J2EEサーバモードのインプロセスHTTPサーバに移行するときは,設定内容および設定方法が異なります。

なお,インプロセスHTTPサーバでは,サーブレットエンジンモードの簡易Webサーバよりも機能が多く,同時実行スレッド数の制御などの機能も使用できます。インプロセスHTTPサーバについては,「4.3 インプロセスHTTPサーバによるリクエストの受け付け」を参照してください。

(4) データベースとの接続

WebアプリケーションからJDBCを使用してデータベースに接続をする場合,サーブレットエンジンモードとJ2EEサーバモードではWebアプリケーションの実装方法および設定方法が異なります。

(a) データベースとの接続に使用できるクラスとインタフェース

サーブレットエンジンモードのWebアプリケーションの場合,使用できるのはjava.sqlパッケージで定義されたクラス,インタフェースだけです。java.sql.DriverManagerクラスのgetConnectionメソッドを使ってデータベースコネクションを取得し,コネクションプール機能が使用できます。

J2EEサーバモードのWebアプリケーションの場合,java.sqlパッケージとjavax.sqlパッケージで定義されたクラス,インタフェースが使用できます。このうち,javax.sql.DataSourceクラスのgetConnectionメソッドを使ってデータベースコネクションを取得する方法をお勧めします。この場合,コネクションプール機能が使用でき,さらにローカルトランザクションやグローバルトランザクション配下でデータベースコネクションを使用できるようになります。

javax.sql.DataSourceクラスを使用してデータベースコネクションを取得する例を次に示します。

 
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
 
public void doPost(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, java.io.IOException {
 
・・・
  InitialContext ic = new InitialContext();              // JNDIの初期コンテキストの生成
  DataSource ds = (DataSource)ic.lookup(“java:comp/env/MyDB”);    // DataSourceをlookupにより取得
  Connection con = ds.getConnection();                   // DataSourceからコネクションを取得・・・
}
 
(b) ルックアップの方法

J2EEサーバモードではjavax.sql.DataSourceクラスをJNDIのルックアップで取得します。ルックアップの実装および設定方法を次に示します。なお,ここでは,サーバ管理コマンドを使用した設定方法について説明します。

なお,DB Connectorでは,ルックアップされるための設定は必要ありません。

(c) コネクションプーリングの方法

J2EEサーバモードでは,WebアプリケーションはDB Connectorというリソースアダプタを経由してデータベースに接続します。DB Connectorは,Webアプリケーションに対してJDBCのインタフェースを提供します。また,DB Connectorを使用する場合,Webアプリケーションで開始したトランザクションの配下でデータベースに接続できます。

サーブレットエンジンモードで使用するjava.sql.DriverManagerでは,getConnectionメソッドの引数に与えるデータベースURLによって接続先データベースを指定しますが,J2EEサーバモードで使用するDB Connectorは,データベースとの接続方法やトランザクションの形態によって実装が分かれています。このため,用途に合わせてDB Connectorを選択し,接続先データベースやコネクションプーリングなどをDB Connectorのプロパティ(サーバ管理コマンドを使用する場合は,Connector属性ファイルに設定)に定義します。

サーブレットエンジンモードと同様にJ2EEサーバモードでもトランザクション管理なしでデータベースを使用する場合に,Cosminexus DABroker Libraryを使用するときは,次のDB Connectorを選択します。

なお,DBConnector_DABJ_CP.rar以外のDB Connectorについては,「9.4.1 DB Connectorによる接続の概要」を参照してください。

(5) Webアプリケーションに組み込むサーブレットフィルタ

サーブレットエンジンモードとJ2EEサーバモードでは,使用できるサーブレットフィルタ(built-inフィルタ)の種類と設定方法が異なります。

(a) built-inフィルタの種類

サーブレットエンジンモードでは,HTTPレスポンス圧縮フィルタを使用できますが,J2EEサーバモードの場合は,これらに加えて,次のbuilt-inフィルタも使用できます。

built-inフィルタについては,「4.11.1 Cosminexusが提供するサーブレットフィルタ(built-inフィルタ)」を参照してください。

(b) built-inフィルタの設定

サーブレットエンジンモードの場合は,アプリケーション開発時にWebアプリケーションのDD(web.xml)を直接編集し,built-inフィルタをWebアプリケーションに組み込みます。J2EEサーバモードの場合は,これに加えて,次の方法でもbuilt-inフィルタをWebアプリケーションに組み込むことができます。

J2EEサーバモードの場合は,システム構築時にサーバ管理コマンドまたはServer Plug-inで設定する方法をお勧めします。

(6) Webアプリケーションのリロード

サーブレットエンジンモードとJ2EEサーバモードでは,Webアプリケーションのリロード機能が異なります。サーブレットエンジンモードとJ2EEサーバモードでのリロード機能の違いを次に示します。

項目 サーブレットエンジンモードの場合 J2EEサーバモードの場合
リロード方法 更新検知によるリロード 更新検知によるリロード,またはコマンド(cjreloadapp)によるリロード
リロードの対象範囲 更新があったファイル※1 更新があったファイルとそのファイルを参照するファイル
セッション情報の引き継ぎ セッション情報を引き継ぐかどうか変更できる 常にセッション情報を引き継ぐ
リロードの設定方法 Webコンテナサーバのusrconf.properties,またはhitachi_web.properties J2EEサーバのusrconf.properties※2

注※1
参照先のファイルが更新された場合,参照元のファイルは更新されません。

注※2
Smart Composer機能でシステムを構築する場合には,Smart Composer機能で提供するファイルにリロード機能の設定をします。運用管理ポータルでシステムを構築する場合には,運用管理ポータル上でリロード機能の設定をします。

リロード時のリクエストの処理や遅延実行など,このほかのWebアプリケーションのリロード機能には,違いはありません。

サーブレットエンジンモードのリロード機能については,「付録C.2 Webアプリケーションの更新検知とリロード」を参照してください。J2EEサーバモードのリロード機能については,「7.5 J2EEアプリケーションの更新検知とリロード」を参照してください。

サーブレットエンジンモードとJ2EEサーバモードのusrconf.propertiesで指定する,リロード機能のキーとそのデフォルト値の対応を次に示します。

設定項目 サーブレットエンジンモードでのusrconf.propertiesのデフォルト値※1 J2EEサーバモードでのusrconf.propertiesのデフォルト値
Webアプリケーションの更新検知 webserver.context.reloadable=false ejbserver.deploy.context.reload_scope=none
Webアプリケーションの更新検知インターバル webserver.context.check_interval=1 webserver.context.check_interval
デフォルト値はなし(ejbserver.deploy.context.check_intervalキーに設定した値(デフォルト値は0)を使用する)。
Webアプリケーションの構成ファイル更新用インターバル webserver.context.update.interval=0 webserver.context.update.interval
デフォルト値はなし(ejbserver.deploy.context.update.intervalキーに設定した値(デフォルト値は0)を使用する)。
Webアプリケーションの遅延実行 webserver.context.reload_delay_timeout=0 webserver.context.reload_delay_timeout=0
JSPの更新検知インターバル webserver.jsp.check_interval=1 webserver.jsp.check_interval
デフォルト値はなし(ejbserver.deploy.context.check_intervalキーに設定した値(デフォルト値は0)を使用する)。
JSPの構成ファイル更新用インターバル webserver.jsp.update.interval=0 webserver.jsp.update.interval
デフォルト値はなし(ejbserver.deploy.context.update.intervalキーに設定した値(デフォルト値は0)を使用する)。
セッション情報の引き継ぎ webserver.session.persistence.enabled=false ※2
JSPの再コンパイルの有無 webserver.jsp.recompilable=false ※2

注※1
hitachi_web.propertiesでもデフォルト値は同じです。ただし,webserver.context.check_intervalとwebserver.jsp.check_intervalは,hitachi_web.propertiesでは設定できません。

注※2
J2EEサーバモードのusrconf.propertiesには,対応するキーはありません。常にセッション情報が引き継がれます。JSPがリロード対象となっていて対象ファイルが更新された場合には,再コンパイルが実行されます。

サーブレットエンジンモードでの,Webアプリケーションの更新検知の有無(webserver.context.reloadable),およびJSPの再コンパイルの有無(webserver.jsp.recompilable)の組み合わせを次に示します。

リロード機能の動作 webserver.context.reloadableキーの値 webserver.jsp.recompilableキーの値
リロード機能を使用しない false(デフォルト値) false(デフォルト値)
サーブレットとJSPをリロードする true true
サーブレットだけをリロードする true false(デフォルト値)
JSPだけをリロードする false(デフォルト値) true

J2EEサーバモードでの,J2EEアプリケーションの適用の有無と適用範囲(ejbserver.deploy.context.reload_scope),Webアプリケーションの更新検知インターバル(webserver.context.check_interval),およびJSPの更新検知インターバル(webserver.jsp.check_interval)の組み合わせを次に示します。

リロード機能の動作 ejbserver.deploy.context.reload_scopeキーの値 webserver.context.check_intervalキーの値 webserver.jsp.check_intervalキーの値
リロード機能を使用しない none(デフォルト値) 0 0
サーブレットとJSPをリロードする web 1以上 1以上
サーブレットだけをリロードする web 1以上 0
JSPだけをリロードする web 0 1以上

(7) システムの起動および停止方法

サーブレットエンジンモードでシステムを起動および停止する場合には,cjstartwebコマンド,cjstopwebコマンド,cprfstartコマンドなどを使用します。

J2EEサーバモードの場合には,システムの構築方法によって,システムの起動および停止方法が異なります。

(8) 使用するメモリ,スレッド数,ポート番号

サーブレットエンジンモードとJ2EEサーバモードを比較する場合,J2EEサーバモードの方が,機能が多く,メモリやスレッド,ポートなどのリソースを多く消費します。このため,サーブレットエンジンモードからJ2EEサーバモードへ移行する場合には,注意してください。

各プロセスで使用するポートを次に示します。