ヘッダーをスキップ

Oracle Containers for J2EE サーブレット開発者ガイド
10g(10.1.3.1.0)

B31859-01
目次
目次
索引
索引

戻る 次へ

9 ベスト・プラクティスおよびパフォーマンス

この章では、サーブレットの効率とパフォーマンスを最大にするためのプログラミングのヒントを提供します。一般的な提案とともに、セッション、セキュリティおよびスレッド・モデルに関する提案を示します。また、パフォーマンスを監視するためのOracleダイナミック・モニタリング・サービス(DMS)の概要も示します。次の項目について説明します。

セッションのベスト・プラクティス

この項では、セッションを使用する際の考慮事項について説明します。

OC4Jでのクラスタリングの詳細は、『Oracle Containers for J2EE開発者ガイド』を参照してください。

セキュリティのベスト・プラクティス

OC4Jサーブレット・コンテナで稼働するWebアプリケーションのセキュリティに関しては、次の点を考慮する必要があります。

追加情報は、「orion-web.xmlおよびglobal-web-application.xmlの要素と属性」に示されている参照ドキュメントも参照してください。

スレッド・モデルの考慮事項

非分散環境のサーブレットでは、サーブレット・コンテナは1回のサーブレット宣言当たり1つのサーブレット・インスタンスのみ使用します。分散環境では、コンテナは各JVMの1回のサーブレット宣言当たり1つのサーブレット・インスタンスを使用します。したがって、OC4Jサーブレット・コンテナを含めたサーブレット・コンテナがサーブレットに対する同時リクエストを処理するには、一般的に複数のスレッドを使用してサーブレットの主要メソッドのservice()を同時に複数実行します。

サーブレットの開発者は、この点を念頭に置き、複数のスレッドによる同時処理用の措置を講じ、共有リソースへのアクセスが同期化または調整されるよう、サーブレットを設計する必要があります。共有リソースには、主に2種類あります。

1つの方法は、service()メソッド全体を同期化することです。ただし、一方で、これはパフォーマンスに影響を与えるおそれがあります。

よりよい方法は、同期ブロックにより、インスタンスまたはクラス・フィールドを選択的に保護したり、外部リソースへのアクセスを選択的に保護することです。

これらが実行できない場合のために、サーブレット仕様では、シングルスレッド・モデルをサポートしています。サーブレットがjavax.servlet.SingleThreadModelインタフェースを実装する場合、サーブレット・コンテナは、サーブレットのどのインスタンスのservice()メソッドにも、複数のリクエスト・スレッドが存在しないことを保証する必要があります。このために、OC4Jでは、通常サーブレット・インスタンスのプールを作成し、各同時リクエストを個別のインスタンスが処理します。ただし、このプロセスはサーブレット・コンテナのパフォーマンスに大きく影響するおそれがあり、なるべく回避する必要があります。さらに、SingleThreadModelインタフェースは、サーブレット仕様のバージョン2.4では使用されなくなります。

マルチスレッドの一般情報は、次のWebサイトで、Sun社の『Java Tutorial on Multithreaded Programming』を参照してください。

http://java.sun.com/docs/books/tutorial/essential/threads/multithreaded.html

カスタム・スレッド・プール

1つ以上のカスタム・スレッド・プールを作成して、デフォルト・スレッド・プールのかわりに選択したアプリケーションで使用できます。

server.xmlファイルでカスタム・スレッド・プールを作成し、それを1つ以上の*-web-site.xmlファイル内で参照してアプリケーションで使用できるようにします。

カスタム・スレッド・プールの作成

カスタム・スレッド・プールを作成するには、<custom-thread-pool>要素をserver.xmlファイルに追加します。 <custom-thread-pool>要素は、<application-server>要素のサブ要素です。

名前の属性は必要ですが、それ以外の属性はすべてオプションです。 <custom-thread-pool>要素は、『Oracle Containers for J2EE構成および管理ガイド』の第10章「タスク・マネージャとスレッド・プールの構成」で説明する他のスレッド・プール要素と同一の属性を持ちます。 server.xmlファイルの詳細は、『Oracle Containers for J2EE構成および管理ガイド』の付録B「OC4Jで使用される構成ファイル」の「OC4Jサーバー構成ファイル(server.xml)の概要」を参照してください。

server.xmlファイルにmypoolという名前のカスタム・スレッド・プールを作成する例を次に示します。 この例では、mypoolを次のように指定します。

カスタム・スレッド・プールのアプリケーションへの割当て

アプリケーションにデフォルト・スレッド・プールのかわりにカスタム・スレッド・プールを使用するよ指示するには、1つ以上の*-web-site.xmlファイル内の<web-site>要素のcustom-thread-pool属性に対する該当するカスタム・スレッド・プールの参照を追加します。

それぞれのWebアプリケーションは、*-web-site.xmlファイルで指定されたWebサイトおよびポートに、<web-app>要素で命名されて割り当てられ、custom-thread-pool属性で命名されたカスタム・スレッド・プールを使用します。

*-web-site.xmlファイルについては、『Oracle Containers for J2EE構成および管理ガイド』の付録B「OC4Jで使用される構成ファイル」の「Webサイト構成ファイル(*-web-site.xml)の概要」を参照してください。

srdemo-web-site.xmlファイルの<web-app>要素で命名するすべてのアプリケーションで使用されるmypoolカスタム・スレッド・プールの命名に使用するcustom-thread-pool属性の例を次に示します。

  <?xml version="1.0" ?> 
- <web-site xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/web-site-10_0.xsd"
port="12501" protocol="ajp13" display-name="SRDEMO Web Site" custom-thread-pool="mypool" schema-major-version="10" schema-minor-version="0">
<default-web-app application="default" name="defaultWebApp" root="/j2ee" />
<web-app application="system" name="dms" root="/dmsoc4j" access-log="false" />
<web-app application="system" name="JMXSoapAdapter-web" root="/JMXSoapAdapter" />
<web-app application="default" name="jmsrouter_web" load-on-startup="true" root="/jmsrouter" />
<web-app application="ascontrol" name="ascontrol" load-on-startup="true" root="/em" />
<web-app application="bc4j" name="webapp" load-on-startup="true" root="/webapp" />
<web-app application="SRDEMO" name="SRDEMO-WEB" load-on-startup="true" root="/SRDEMO" />
<access-log path="../log/default-web-access.log" split="day" />
</web-site>

パフォーマンスのベスト・プラクティス

この項では、パフォーマンスに影響を与える可能性のある問題(主にこのマニュアルの他の部分で説明している内容)をまとめます。

追加情報は、「orion-web.xmlおよびglobal-web-application.xmlの要素と属性」に示されている参照ドキュメントも参照してください。

パフォーマンスの監視

この項では、サーブレットのパフォーマンスの監視について説明します。

Oracle Application Serverのダイナミック・モニタリング・サービス

Oracle Application Server環境では、ダイナミック・モニタリング・サービス(DMS)により、OC4Jを含めた様々なコンポーネントにパフォーマンス監視機能が追加されます。DMSの目的は、組込みパフォーマンス測定により、実行時動作に関する情報をユーザーに提供し、ユーザーがパフォーマンスの問題を診断、分析およびデバッグできるようにすることです。DMSはこの情報をパッケージで提供し、この情報はライブ・デプロイ中を含め、いつでも使用できます。データはHTTPを通じて公開され、ブラウザで表示できます。

DMSモジュールの標準構成は、OC4Jのsystem-application.xmlファイルおよびdefault-web-site.xmlファイルに反映されます。system-application.xmlでは、Webモジュールのdmsと、そのWARファイルへのパスが指定されます。default-web-site.xmlファイルは、このWebモジュールがOC4Jデフォルト・アプリケーションにデプロイされていることを指定し、コンテキスト・パスにバインドします。これらのDMS構成は、直接変更しないでください。

DMSへのアクセス、DMS情報の表示およびDMSの構成(適切な場合)には、Application Server Controlを使用してください。

DMSの詳細は、『Oracle Application Serverパフォーマンス・ガイド』を参照してください。グローバルapplication.xmlファイル(orion-application.xmlファイルと同じ仕様を使用)の詳細は、『Oracle Containers for J2EE開発者ガイド』を参照してください。また、WebサイトのXMLファイルの詳細は、『Oracle Containers for J2EE構成および管理ガイド』を参照してください。


戻る 次へ
Oracle
Copyright © 2006 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引