Oracle® Fusion Middleware Oracle WebLogic Server Web アプリケーション、サーブレット、JSP の開発 11g リリース 1 (10.3.1) B55521-01 |
|
![]() 戻る |
以下の節では、WebLogic Web アプリケーションとアプリケーション リソースの設計、開発、およびデプロイにおけるベスト プラクティスを紹介します。
サブスクリプトの呼び出しに関する CGI のベスト プラクティスを次に示します。
sh subscript.sh
は、展開 (非アーカイブ) Web アプリケーションおよびアーカイブ Web アプリケーション (WAR ファイル) の両方に使用できる。
sh $PWD/subscript.sh
は、展開 (非アーカイブ) Web アプリケーションおよびアーカイブ Web アプリケーション (WAR ファイル) の両方に使用できる。
sh $DOCUMENT_ROOT/$PATH/subscript.sh
は、展開 (非アーカイブ) Web アプリケーションに使用できる。アーカイブ Web アプリケーション (WAR ファイル) には使用できません。これは、ドキュメント ルートがお使いの WAR ファイルのルートを指している場合があり、スクリプト言語でその WAR ファイルを開いて実行に必要な subscript.sh
を検出できないことがあるためです。これは sh
だけでなく、あらゆるスクリプト言語に当てはまります。
HTTP サーブレットを作成する際は、次のベスト プラクティスについて検討します。
サーブレット クラスは、Web アプリケーションの WEB-INF/classes
ディレクトリにコンパイルする。
サーブレットは、必ず J2EE 標準 Web アプリケーションのデプロイメント記述子 (web.xml
) に登録する。
サーブレットの要求への応答時には、サーブレットに関連するフィルタを適用する前にサーブレット クラス ファイルのタイム スタンプがチェックされ、メモリ内にある既存のサーブレット インスタンスと比較される。バージョンの新しいサーブレット クラスがある場合、すべてのサーブレット クラスが再ロードされてからフィルタ処理が行われます。サーブレットが再ロードされると、そのサーブレットの init()
メソッドが呼び出されます。変更後のサーブレット クラスが検出された場合、サーブレット クラス間に依存関係が存在する可能性があるため、すべてのサーブレットが再ロードされます。
タイム スタンプがチェックされる間隔 (秒単位) を [サーブレット再ロードのチェック間隔 (秒)] 属性で設定できます。この属性は、Administration Console の Web アプリケーションの [ファイル] タブで設定します。
この属性をゼロにすると、要求ごとにタイム スタンプがチェックされます。これはサーブレットの開発中やテスト中には便利ですが、プロダクション環境では必要以上に時間が消費されます。この属性を
-1
に設定すると、変更されたサーブレットについてはチェックが行われません。
JSP の再コンパイルを回避する方法の詳細については、「Avoiding Unnecessary JSP Compilation」(http://www.oracle.com/technology/index.html
) の特に、「Scenarios that Cause Recompilation of JSPs」という節を参照してください。
J2EE では、応答に適合させるためにサーブレットでサブクラス化することのできる javax.servlet.ServletResponseWrapper
クラスが提供されます。
ServletResponseWrapper
クラスをサブクラス化して独自の応答ラッパーを作成する場合、flushBuffer()
メソッドと clearBuffer()
メソッドを常にオーバーライドすることをお勧めします。これらのメソッドをオーバーライドしないと、応答が早まってコミットされることがあります。