プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Event Processingの管理
12c リリース(12.1.3)
E57532-04
目次へ移動
目次

前
前へ
次
次へ

10 Jetty

Oracle Event Processingでは、HTTPサーブレットおよび静的リソースをデプロイするJava WebサーバーとしてJettyがサポートされています。Jetty機能をOracle Event Processingとともに使用するように構成できます。構成できる機能は、ネットワークI/O、ワーク・マネージャ、およびJettyサーバー・インスタンスの構成です。

Oracle Event ProcessingのJettyサポートは、バージョン1.2のOSGi HTTPサービスに基づいています。OSGi HTTPサービスAPIによって、実行時および静的リソースを持つオブジェクトを動的に登録および登録解除することが可能になります。この仕様には、JavaサーブレットAPI 2.1以上が必要です。http://java.sun.com/products/servlet/docs.htmlを参照してください。

この章の内容は次のとおりです。

10.1 Jettyの機能

Oracle Event Processingでは、これらのJettyの機能をサポートします。

サーブレット: Oracle Event Processingでは、同期および非同期のJavaサーブレットをサポートします。非同期サーブレットはリクエストを受信し、スレッドを取得して作業を実行します。また、最終的には、アクションの完了を待機している間に(別のスレッドを再取得するよりも前に)スレッドを解放し、レスポンスを送信します。「アプリケーションの開発とデプロイメント」を参照してください。

ネットワークI/O統合: Oracle Event Processingでは、ネットワークI/O (NetIO)を使用してJettyサービスのポートとリスニング・アドレスを構成します。Jettyは多重化されたネットワークI/Oに対応した組込み機能を備えています。ただし、同一ポート上での複数のプロトコルはサポートされません。

スレッド・プール統合: Oracle Event Processing Jettyサービスでは、拡張可能スレッド・プーリングにOracle Event Processingワーク・マネージャを使用します。「Jetty構成の例」を参照してください。Jettyは独自のスレッド・プーリング機能を提供しますが、処理コストおよび構成の複雑さを最小限に抑えるために、Oracle Event Processingの自動チューニング・スレッド・プールを使用することをお薦めします。

Jettyワーク・マネージャ: Oracle Event Processingでは、アプリケーションがどのような優先順位で作業を実行するかを構成できます。ルールを定義して実行時パフォーマンスを監視して、アプリケーション・パフォーマンスを最適化し、サービスレベルのアグリーメントを保持します。ワーク・マネージャを定義して、アプリケーションに対してルールや制約を定義します。「Jetty構成オブジェクト」を参照してください。

10.2 スレッド・プール

Oracle Event Processingでは、1つのスレッド・プールを使用してすべてのタイプの作業を実行します。作業は、ユーザーが定義するルールと実行時のメトリックに基づいて優先順位付けされ、メトリックとしては、リクエストを実行するのにかかった時間、リクエストをプールに出し入れする割合などがあります。

共通スレッド・プールのサイズは、スループットが最大になるように変更されます。キューは、スループットを一定期間監視し、履歴を基にスレッド数を調整するかどうかを判断します。たとえば、スループットの統計値の履歴に基づき、スレッド数を増やすことでスループットが向上すると判断されると、Oracle Event Processingではスレッド数が自動的に増やされます。同様に、統計値に基づいてスレッドを減らしてもスループットが悪化しないと判断されると、Oracle Event Processingではスレッド数が自動的に減らされます。

10.3 ワーク・マネージャの構成

Oracle Event Processingでは、定義済のパラメータと実行時のパフォーマンスおよびスループットを考慮に入れた実行モデルに基づいて、作業の優先順位が決定されてスレッドが割り当てられます。ユーザーは、一連のスケジューリング・ガイドラインを構成し、それらを1つまたは複数のアプリケーションに関連付けたり、特定のアプリケーション・コンポーネントに関連付けることができます。

たとえば、スケジューリング・ガイドラインのセットを1つのアプリケーションに関連付け、別のガイドラインのセットを別のアプリケーションに関連付けることができます。実行時には、Oracle Event Processingではこのガイドラインに基づいて、保留中の作業やキューに入っているリクエストが実行スレッドに割り当てられます。

アプリケーション内の作業を管理するには、次のうち1つまたは複数のワーク・マネージャ・コンポーネントを定義します。

  • fairshare: リクエストを処理するために必要な平均スレッド使用時間。

    たとえば、Oracle Event Processingで2つのモジュールが実行され、ModuleAのワーク・マネージャではfairshareが80に指定されていて、ModuleBのワーク・マネージャではfairshareが20に指定されています。各モジュールで切れ目なくリクエストを処理している状態(つまり、リクエスト数がスレッド数を超えている状態)が続く間は、Oracle Event Processingでは、スレッド使用時間の80%がModuleAに、20%がModuleBにそれぞれ割り当てられます。

    注意:

    フェア・シェア要求クラスは、割合ではなく相対値として指定します。したがって、上の例でリクエスト・クラスを400と100に設定しても相対値としては同じです。

  • max-threads-constraint: 制約対象の作業セットからのリクエストを実行する同時スレッドの数を制限します。デフォルトは無制限です。たとえば、最大スレッド数が10に定義された制約を3つのエントリ・ポイントで共有するとします。このスケジューリング・ロジックでは、統合された3つのエントリ・ポイントからのリクエストを10個以下のスレッドで実行します。

    max-threads-constraintは、リクエストが依存するリソース(たとえば接続プール)の可用性の観点から定義できます。

    max-threads-constraintは、リクエスト・クラスによるスレッドのフェア・シェアの実現やレスポンス時間の目標値の達成を妨げることがあります。いったん制約条件が満たされると、同時実行数が制限値を下回るまで、Oracle Event Processingではこのタイプのリクエストはスケジューリングされません。制限値を下回ると、Oracle Event Processingでは、フェア・シェアまたはレスポンス時間の目標値に基づいて作業がスケジューリングされます。

  • min-threads-constraint: 制約対象のリクエストに割り当てられるスレッドの数を保証することでデッドロックを回避します。デフォルトはゼロです。min-threads-constraintの値を1に設定すると、ピアから同期的に呼び出されるレプリケーション更新リクエストなどの場合に便利です。

    min-threads-constraintによってフェア・シェアが向上しない場合もあります。このタイプの制約は、主にOracle Event Processingインスタンスがデッドロック状態に近づいたときに効果を発揮します。このような場合は、最近サービス・クラス内のリクエストがフェア・シェアを超えていたときでも、Oracle Event Processingではこの制約によってリクエストがスケジューリングされます。

10.4 アプリケーションの開発とデプロイメント

Oracle Event Processingでは、Jettyへのデプロイメントのためのサーブレット開発をサポートします。

開発者は標準Java EE Webアプリケーションを作成し、サーブレットが実行されるサーバーのconfig.xmlファイルでjetty-web-app構成オブジェクトを使用してそのアプリケーションを構成します。

Oracle Event Processingでは、Java Servletバージョン2.4仕様に規定されているように、warファイルまたは展開されたwarファイルのどちらでもパッケージのサーブレットのデプロイメントをサポートしています。事前に構成されたWebアプリケーションをサーバーの構成に組み込むことによって、展開済ディレクトリまたはwarファイルからアプリケーションをデプロイできます。

標準のweb.xmlファイルに指定されたセキュリティ制約はCommon Security Servicesのセキュリティ・プロバイダにマップされます。サーブレットAPIでは、宣言型のロール・ベース・セキュリティを指定します。つまり、特定のURLパターンをセキュリティ・ロールにマップできます。

10.5 Jettyサーバー・インスタンスの構成

この項では、Jetty構成の例を示し、その後にJetty構成オブジェクトの説明を示します。

構成するサーバーのconfig.xmlファイルでJettyサーバー・インスタンスを構成します。Jettyに影響するセキュリティ構成タスクの詳細は、「Jettyセキュリティの構成」を参照してください。

10.5.1 Jetty構成の例

次のconfig.xmlファイルからのスニペットは、Jetty構成の例を示します。Jetty関連の構成情報のみが示されています。

<config>
  <netio>
    <name>JettyNetIO</name>
    <port>9002</port>
  </netio>
  <work-manager>
    <name>WM</name>
    <max-threads-constraint>64</max-threads-constraint>
    <min-threads-constraint>3</min-threads-constraint>
  </work-manager>
  <jetty>
    <name>TestJetty</name>
    <work-manager-name>WM</work-manager-name>
    <network-io-name>JettyNetIO</network-io-name>
    <debug-enabled>false</debug-enabled>
    <scratch-directory>JettyWork</scratch-directory>
  </jetty>
  <jetty-web-app>
    <name>test</name>
    <context-path>/test</context-path>
    <path>testWebApp.war</path>
    <jetty-name>TestJetty</jetty-nam>
  </jetty-web-app>
</config>

10.5.2 Jetty構成オブジェクト

この項では、次の構成オブジェクトを使用して、Jetty HTTPサーバーのインスタンスを構成する方法を説明します。使用しているOracle Event Processingサーバーを記述するconfig.xmlファイル内にJetty HTTPサーバーを構成します。

jetty

次の表に示すパラメータを使用して、config.xmlファイルにjetty構成オブジェクトを定義します。

表10-1 jetty要素構成パラメータ

パラメータ データ型 説明
network-io-name
String

使用されたNet IOサービスの名前。Net IOサービスは、サーバーがリスニングするポートを定義します。

詳細は、「Jetty構成オブジェクト」を参照してください。

work-manager-name
String

スレッドのプールに使用されるワーク・マネージャの名前。指定しない場合はデフォルトのワーク・マネージャが使用されます。

「Jetty構成オブジェクト」を参照してください。

scratch-directory
String

Webアプリケーション、JSPおよびその他のタイプのWebアーティファクトに必要な一時ファイルを保管するディレクトリの名前。

debug-enabled
boolean

JettyコードでOSGi Log Serviceを使用してデバッグ機能を有効にします。

name
String

jettyサーバー・インスタンスの名前。

netio

次の表に示すパラメータを使用して、config.xmlファイルにnetio構成オブジェクトを定義します。

表10-2 netio要素構成パラメータ

パラメータ データ型 説明
name
String

構成オブジェクトの名前。

port
int

リスニングするポート番号。

listen-address
String

netioサービスのインスタンスが着信接続をリスニングするアドレス。

  • このパラメータは、a.b.c.d形式の数値IPアドレスまたはホスト名に設定できます。

  • 設定しない場合は、すべてのネットワーク・インタフェースがリスニングされます。

このパラメータの値は、サービスが起動されるまで検証できません。

work-manager

次の表に示すパラメータを使用して、config.xmlファイルにwork-manager構成オブジェクトを定義します。

表10-3 work-manager要素構成パラメータ

パラメータ データ型 説明
min-threads-constraint
Integer

このワーク・マネージャが使用する最小スレッド数。

fairshare
Integer

このワーク・マネージャが使用するfairshare値。

max-threads-constraint 
Integer

このワーク・マネージャが使用する最大スレッド数制約。

name 
String 

このワーク・マネージャの名前。

jetty-web-app

次の構成オブジェクトを使用して、Jettyが使用するWebアプリケーションを定義します。

表10-4 jetty-web-app要素構成パラメータ

パラメータ データ型 説明
name 
String 

このワーク・マネージャの名前。

context-path
String

このWebアプリケーションのデプロイ先となるWebサーバーのネームスペースのコンテキスト・パス。

設定しない場合、デフォルトで「/」になります。

scratch-directory
String

JettyがこのWebアプリケーションの一時ファイルを保管する場所。

「Jettyサーバー・インスタンスの構成」scratch-directoryパラメータをオーバーライドします。

path
String

サーバー上のWebアプリケーションの場所を指すファイル名。ディレクトリまたはwarファイルを指定できます。

jetty-name
String

このWebアプリケーションのデプロイ先のJettyサービス名。既存の「Jettyサーバー・インスタンスの構成」の名前と一致している必要があります。

name
String

この構成オブジェクトの名前。