プライマリ・コンテンツに移動
Oracle® Fusion Middleware Forms Servicesデプロイメント・ガイド
12c (12.2.1.1)
E77287-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 Java仮想マシンの構成と管理

この章には、次の項が含まれています。

10.1 Java仮想マシン・プーリング

Oracle Formsアプリケーションからサーバー上のJavaをコールすると、初めてJavaをコールするときにJava Virtual Machine (JVM)が生成されてランタイム・プロセスに接続されます。以降は、プロセスが再びJavaをコールしなくても、そのプロセスが有効なかぎり、このJVMはプロセスに接続された状態を維持します。各Formsランタイム・セッションによって独自のJVMインスタンスが作成されるとすると、サーバー上で消費されるリソースの量が膨大になる可能性があります。

JVMプーリング環境では、複数のFormsランタイム・プロセスによってJVMが共有されます。単一のJVMが、異なるランタイム・プロセスから複数のFormsセッションを処理できます。プーリング環境では、ランタイム・プロセス当たり1つのJVMを接続しなくてすむため、ホストされたマシン上のメモリーのフットプリントを大幅に削減できます。この環境は、構成可能です。Forms管理者は、様々なパラメータを設定したり、ニーズや要件に基づいて環境をチューニングできます。また、単一のJVMプロセスによって管理されるランタイム・セッションの数に対する制限を設定することもできます。

JVMプーリングを使用する場合、JVMコントローラが作成されます。これは、特定の職責を持つJVMです。ランタイム・プロセスから接続を受け入れる以外に、必要に応じて新しいJVMを作成する職責もあります。新しいJVMプロセス(子JVMとも呼ばれます)が作成されるのは、コントローラが(コントローラ自体を含む)プール内の既存のJVMがランタイム・プロセスからの追加セッションに対応できないと判断した場合のみです。

Oracle Forms JVMプーリングは、Forms Java Importerと連携して機能します。また、Oracle ReportsおよびOracle BI-PublisherをコールするFormsの機能とも連携します。Java Importerを使用すると、開発者は設計時にPL/SQLからJavaクラスを参照できます。実行時に、Javaクラスは必要に応じてJVMによってロードおよび実行されます。

Java Importerの詳細は、Oracle Form Builderのオンライン・ヘルプを参照してください。

10.2 子JVMのプロセスについて

各Formsランタイム・プロセスがJVM内に個別にスレッドを持つため、同時実行性が実現します。JVMが同時リクエストの指定数に達すると、負荷を分散させるために子JVMを生成します。さらに、複数のJVMコントローラを持ち、それぞれに子JVMを持つことも可能です。

たとえば、複数のFormsアプリケーションで、オプションやクラスパスが異なるJVMを使用する必要があります。どのJVMコントローラとFormsアプリケーションが必要かは、Forms構成ファイル(formsweb.cfg)の名前付きセクションで指定できます。また、Formsアプリケーションの呼び出しに使用するURLのパラメータとしてこの情報を渡すこともできます。jvmcontrollerパラメータを使用すると、特定のJVMコントローラを使用するようにフォームを構成できます。jvmcontrollerパラメータは、どのJVMコントローラを使用するかをFormsランタイム・プロセスに指示します。jvmcontrollerを起動するときに必要な各種のパラメータは、JVMコントローラの構成ファイルjvmcontrollers.cfgで指定する必要があります。

詳細は、第10.8.6項「Forms構成ファイル設定」を参照してください。

図10-1は、JVMプーリングを使用した場合の環境の例を示しています。2つのJVMコントローラがあり、1つはインプロセスJVMのみを使用し、もう1つは3つのJVMを使用しています。

図10-1 子プロセスを持つ複数のJVMコントローラ

この図はJVMプーリングを使用した環境を示しています。

図10-1には示されていませんが、各JVMコントローラには、起動、停止、またはForms構成ファイル内で参照に使用される一意な名前があります。

図10-1は、複数のFormsアプリケーションで異なるJVMコントローラを使用していることを概念的に示しているだけです。ただし、Formsランタイム・プロセスは、JVMコントローラと通信せず、使用可能なJVMのいずれかと直接通信します。したがって、図の最初の2つのクライアントはインプロセスJVMを使用できるだけですが、残りのクライアントには処理に使用できるJVMが3つあります。

JVMのパフォーマンスが大幅に低下した場合は、そのJVMが処理するリクエストが多すぎる可能性があります。その場合は、そのJVMコントローラで複数の子JVMを持つようにできます。子JVMは必要に応じて動的に作成されます。

JVMパラメータのmaxsessionsは、新しい子JVMが作成されるまでに1つのJVMに対して接続できるFormsランタイム・プロセスの数を指定します。子JVMが起動すると、その子JVMはJVMコントローラと同じパラメータを継承します。

JVMがmaxsessionsで指定された接続数に達すると、そのJVMは新しいFormsランタイム・プロセスからのリクエストを受け付けなくなります。新しいFormsランタイム・プロセスが初めてJavaコードを実行しようとすると、そのプロセスは使用可能なJVM (maxsessionsより少ない接続数のもの)に接続されます。JVMの選択方法は完全に任意で、ロード・バランシングやラウンドロビン・アルゴリズムはありません。

JVMがmaxsessionsで指定された接続数に達しても、別のJVMがそれに達していなければ、新しいJVMは作成されません。すべてのJVMが同時にmaxsessionsで指定された接続数に達した場合は、別の子JVMが作成されます。

子JVMは負荷が低下しても自動的に削除されません。そのため、一部の子JVMを削除する場合は、JVMコントローラを停止する必要があります。これにより、すべての子JVMも停止します。その後、JVMコントローラを再起動できます。

子JVMの有効範囲は、JVMコントローラのネームスペースのコンテキスト内に限定されます。たとえば、2つのJVMコントローラ、ordersJVMおよびhrJVMがある場合、ordersJVMとその子JVMは、hrJVMやその子JVMに影響を与えることはなく、これらから影響を受けることもありません。

10.2.1 子JVMの例

ordersJVMというJVMコントローラがmaxsessions=50に設定されているとします。実行中の各オーダー・アプリケーションは、ordersJVMにリクエストを送信します。新しいFormsランタイム・プロセスがordersJVMにリクエストを送信すると、そのたびにFormsランタイム・プロセスと通信する新しいスレッドが作成されます。その後、JVMコントローラは新しいリクエストのリスニングに戻ります。ユーザーがセッションを終了すると、JVM内のスレッドも終了します。

ordersJVMコントローラが50番目の同時リクエストを受信すると(一部のユーザーが終了した後で開始するユーザーも存在するため、最初から50番目のユーザーとはかぎりません)、コントローラは子JVMを生成します。子JVMは親の設定を継承するため、この子JVMのmaxsessions50になります。この段階では、JVMコントローラには50の接続があり、子JVMには接続はありません。

新しいユーザーがこのOracle Formsアプリケーションを起動し、Javaコードを実行すると、Formsランタイム・プロセスはそのJVMコントローラのネームスペース内でリスニングを実行しているJVMに接続します。このJVMコントローラには50の接続があり、使用できないため、子JVMがこのリクエストを受信します。その後、親のJVMコントローラで一部のユーザーがアプリケーションを終了し、接続数が減少すると、コントローラはmaxsessionsで指定された接続数に達しないかぎり新しいリクエストを受信することができます。

このような処理が行われる間、hrJVMはこれとは別に動作しています。ordersJVMで接続が超過してもhrJVMには接続されず、ordersJVMの子JVMに対してのみ接続が行われます。

10.2.2 子JVMの管理

12より前のOracle Formsバージョンでは、子JVMプロセスは親コントローラの存続期間中は存続していました。これは、ピーク時に多くの子プロセスが作成されたとしても、負荷が減少したときにこれらの子プロセスをリリースできないことを意味します。Forms 12以降では、コントローラが使用状況を監視し、必要に応じて不要なプロセスをクリーンアップまたは実行できるようになりました。これにより、貴重なサーバー・リリースの浪費を阻止し、パフォーマンスをさらに向上させることが可能になります。デフォルトでは、このクリーンアップ機能は無効です。有効にするには、JVMコントローラ構成でパラメータautoremovalを設定します。有効な値は、次の表10-1「子JVMの管理」にリストされています。

表10-1 子JVMの管理

説明

OFF (デフォルト)

自動削除機能はdisabledです。

JVMは、JVMコントローラによって自動的には削除されません。プール・サイズは増加し続け、縮小しません。子JVMは、手動で終了されるかコントローラの終了時に終了されるまで存続し続けます。

AGGRESSIVE

自動削除機能はenabledです。

子JVMを削除する頻度は最高です。

JVMがこの構成内で最大M個のセッションに対応できると仮定すると、コントローラは将来のセッション・リクエストに対応するためにM/2個のバッファ(スペア)を保持します。

この設定のメリットの1つは、現在の負荷を処理するために最小限推定される数の子JVMと、将来のリクエストに対応するために最大1つのスペアがプール内に常に存在することです。この設定のデメリットは、(セッションが頻繁に開始および停止する)アクティブな環境内でJVMの終了/作成の頻度が高くなることです。コントローラは子を管理するために過度にビジー状態になる可能性があります。

すべてのセッションがクローズされると、プール・サイズは1 (つまり、JVMコントローラ)まで縮小します。

MODERATE

自動削除機能はenabledです。

子JVMを削除する頻度はAGGRESSIVEより低くなります。

JVMがこの構成内で最大M個のセッションに対応できると仮定すると、コントローラは将来のセッション・リクエストに対応するためにM個のバッファ(スペア)を保持します。

すべてのセッションがクローズされると、プール・サイズは1 (つまり、JVMコントローラ)まで縮小します。

CONSERVATIVE

自動削除はenabledです。

子JVMを削除する頻度は前述の2つのオプションより低くなります。

JVMがこの構成内で最大M個のセッションに対応できると仮定すると、コントローラは将来のセッション・リクエストに対応するために3*M/2個のバッファを保持します。

すべてのセッションがクローズされると、プール・サイズは2 (つまり、コントローラと1つの子)まで縮小します。


10.2.3 JVMのロード・バランシング

接続をよく編成され統一されたものにするには、ラウンド・ロビンまたは最小負荷優先(またはその両方)などの負荷分散技術をJVMコントローラに組み込むことができます。この負荷分散機能はオプションであり、JVMコントローラの構成ファイル内で構成できます。この機能を使用するには、構成ファイルでパラメータloadbalanceを設定します。これは、次のいずれかのオプションを使用して設定できます。

  • 最小負荷優先

  • ラウンド・ロビン

  • ランダム

有効な値は、次の表10-2「JVMの負荷分散」で説明されています。

表10-2 JVMの負荷分散

説明

RANDOM (デフォルト)

ランダム・モードでは、JVMコントローラは以前のバージョンのように動作します。コントローラによって作成されたすべての子が新しい接続を自由に受け入れることができます。JVMが新しい接続を受け入れることができると想定されると、JVMは新しい接続を受け入れます。

LEAST_LOADED

最小負荷優先モードでは、JVMコントローラが子JVMの接続受入れ動作を監視および制御します。一度に新しい接続リクエストをリッスンできるのは1つの子JVMのみです。JVMコントローラは、子JVMをスケジュールするために、プール内のすべての子JVMを反復し、処理対象のセッション数が最も少ない子JVMを選択します。選択した子JVMには、次の接続リクエストをリッスンするよう指示します。スケジュールされた子JVMは、セッション・リクエストを受け入れたら、確認応答をJVMコントローラに送信します。JVMコントローラは負荷分散シーケンスを開始し、プール内で次に負荷の小さい子JVMを探します。

ROUND_ROBIN

ラウンド・ロビン・モードでは、JVMコントローラが子JVMの接続受入れ動作を監視および制御します。コントローラは、負荷を分散するために、JVMのリストを反復し、新しい接続リクエストを受け入れる公平な機会を各JVMに与えます。最初に、リスト内の先頭のJVMから始め、接続リクエストの受入れを開始するよう指示します。JVMコントローラは、現在スケジュールされている子JVMからの確認応答を受信し、次に使用可能な子に移動し、負荷分散シーケンスを開始します。コントローラは、使用可能なJVMをすべて繰り返します。


10.3 複数のJVMコントローラについて

JVMプーリングのアーキテクチャでは、複数のJVMコントローラを持ち、それぞれが子JVMを持つことができます。複数のJVMコントローラを使用するのは、次のような場合です。

  • アプリケーションごとにJVMコントローラを持ち、他のコントローラとは個別に起動および停止できるようにする場合。

  • アプリケーションごとに異なる設定が必要な場合。たとえば、複数のコントローラでクラスパスやJVMの設定を分ける場合です。

  • Fusion Middleware ControlからJVMコントローラのリソース使用率を監視する場合。複数のアプリケーションまたはユーザー・グループで異なるJVMコントローラが使用されている場合は、Java Importerコードによってどのようにリソースが消費されているかを確認できます。

  • 同一コンピュータ上に複数の開発環境、テスト環境または本番環境がある場合。

  • 複数の異なるアプリケーションで静的データを共有しない場合。

10.4 JVMプーリングの使用例

ここでは、ユーザー・インタフェースのボタンを持つOracle Formsアプリケーションについて検討します。ユーザーがボタンを押すと、Oracle Formsは画面上のフィールドから値を取得してJavaに渡し(Java Importer機能を使用)、PL/SQLでは実行できないなんらかの複雑な計算を実行します。その後、結果が返され、フォーム内のフィールドに表示されます。このFormsセッションを実行するために、1つのJVMプロセスが実行されています。

図10-2は、JVMプーリングが有効になっていないために、このOracle Formsセッションに個別のインプロセスJVMが存在する様子を示しています。図の左側には、独自のFormsセッションを実行する複数のクライアントが示されています。図の中央で、各クライアントは、独自のJVMプロセスを含む独自のFormsランタイム・プロセスをコールします。

図10-2 JVMプーリングを使用しない場合のFormsランタイム

図10-2の説明が続きます
「図10-2 JVMプーリングを使用しない場合のFormsランタイム」の説明

図10-3は、JVMプーリングが有効になっている場合に、複数のFormsランタイム・プロセスで単一のJVMプロセスが共有される様子を示しています。

図10-3 JVMプーリングが有効な場合のFormsランタイム

図10-3の説明が続きます
「図10-3 JVMプーリングが有効な場合のFormsランタイム」の説明

この例では、同じアプリケーションでそれぞれ独自のランタイム・プロセスを使用して機能している5つのクライアントが、独自のJVMインスタンスを生成するそれぞれのFormsランタイム・プロセスを使用するかわりに、1つのプールされたJVMプロセスを使用しています。このため、メモリー使用率とシステム・リソースを大幅に節約できます。

10.5 設計時の考慮事項

この項は、次の小項目に分かれています。

10.5.1 Javaコードの再インポート

JVMプーリングが利用可能になる時点より前にOracle FormsのJava Importer機能を使用していた場合は、JVMプーリングを使用する前にJavaクラスを再インポートする必要があります。Javaクラスを初めてインポートしたときには、そのJavaクラスのPL/SQLラッパーが生成されています。これは、フォームで作成されたプログラム・ユニット内で確認することができます。ただし、JVMプーリングを使用するJava Importerで生成されているPL/SQLラッパーはこれとは異なります。

Oracle Forms Services 10g以降では、Java Importerは新しいPL/SQLラッパーを生成します。Java Importerを使用し、JVMプーリングを利用しない場合は、インプロセスJVMは新しい PL/SQLラッパーで正常に機能します。また、旧スタイルのPL/SQLラッパーでもこれまでどおりに機能します。

10.5.2 複数のJVM間での静的変数の共有について

JVMプーリングのメリットの1つに、同一クラスの複数のインスタンス間で静的変数を使用してデータを共有する機能があります。ただし、静的変数は1つのJVM内の同一クラスのインスタンス間で共有され、複数のJVM間では共有されません。この条件に従って計画を立案する必要があります。

たとえば、ローン・クラスのすべてのインスタンスで同じ金利を使用して計算を実行するという理由で、interestRateという静的変数が用意されているとします。JVMを1つのみ使用する場合は、ローン・クラスの1つのインスタンスでinterestRateが変更されると、その他のすべてのインスタンスが影響を受けます(これは意図した動作です)。

ただし、JVMコントローラに1つ以上の子JVMが存在する場合は、2つ以上のJVMが存在する場合があります。1つのJVMでinterestRateが変更されても、他のJVMにあるローン・インスタンスでは新しい値が認識されません。子JVMの管理の詳細は、第10.2項「子JVMのプロセスについて」を参照してください。JVMプーリングを使用しておらず、interestRateを変更した場合は、各Oracle Formsのランタイム・プロセスが個別にインプロセスJVMを持つため、その変更により他のインスタンスは影響を受けません。

静的変数を使用してクラスの複数のインスタンス間で情報を共有する場合は、maxsessions65535に設定して、子JVMが生成されないようにしてください。

10.6 JVM構成の概要

Fusion Middleware Controlを使用してJVMを構成するには、次の手順を実行します。

  1. Fusion Middleware Controlを使用して、formsweb.cfgに新しい構成セクションを追加するか、そこにある既存の構成セクションを変更し、アプリケーションでのJVMコントローラの使用を有効または無効にします。詳細は、第10.8.6項「Forms構成ファイル設定」を参照してください。

  2. default.envまたはjvmcontrollers.cfgでCLASSPATHが更新されていることを確認します。

  3. Fusion Middleware Controlを使用してJVMパラメータを構成します。詳細は、第10.8.3項「パラメータの管理」を参照してください。

  4. JVMコントローラを起動します。詳細は、第10.8.5項「Fusion Middleware ControlによるJVMコントローラの起動と停止」を参照してください。

10.6.1 JVMコントローラを使用したネットワーク・プロキシおよびJavaコール

JVMプーリングが有効で、JVMコントローラでJavaが実行される場合、jvmcontrollers.cfgファイルでjvmoptionsパラメータを設定することが必要な場合があります。このパラメータをユーザーが使用し、ネットワーク・プロキシに関連するJavaプロパティを設定できます。Oracle Reports、Oracle BI-Publisherをコールするか、インポートしたJavaを使用するとともに、これらのコールでネットワーク・プロキシを介してアクセスする必要があるアプリケーションの場合、適切なパラメータを使用して、使用中のプロキシに適した環境を構成します

  • http.proxyHost

  • http.proxyPort

  • https.proxyHost

  • https.proxyPort

  • http.nonProxyHosts

これらのプロパティの詳細は、Javaドキュメントで見つかります。詳細は、次を参照してください。

https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html

10.7 コマンドラインからのJVMコントローラの管理

コマンドラインからJVMコントローラを管理するには、JVMコントローラの起動および停止のオプションを理解し、環境を指定する必要があります。JVMコントローラを実行しているコンピュータと同じコンピュータ上にあるJVMコントローラにのみアクセスできます。


注意:

この章で説明するJVMコントローラの制御メカニズムは、主にコマンドラインに関連しています。使いやすい画面とオンライン・ヘルプのあるFusion Middleware Controlを使用する方法のほうが簡単です。ただし、各種のフィールドやオプションの意味およびJVMコントローラの動作の仕組みを理解するために、Fusion Middleware Controlのユーザーも次の情報を参照することをお薦めします。

10.7.1 JVMコントローラのコマンドの例

この項では、JVMコントローラのコマンドの例について説明します。これらの例の詳しい説明は、第10.8.7項「起動の例」を参照してください。


注意:

コマンドラインの使用を試みる前に、環境変数FORMS_INSTANCEを設定する必要があります。

  • dejvm -start jvmcontroller=hrJVM

    hrJVMというIDのJVMコントローラを起動します。コントローラ名hrJVMは、構成ファイルの名前付きセクションで定義されています。このため、JVMオプションとクラスパス・パラメータは構成ファイルから取得されます。maxsessionsはデフォルト・セクションでの定義に従って50になり、他のパラメータはそれぞれのデフォルト値になります。

  • dejvm -start jvmcontroller=myJVM

    myJVMというIDのJVMコントローラを起動します。オプションの指定がなく、jvmcontrollers.cfgに名前付きセクションがないため、JVMオプション・パラメータは、デフォルト・セクションでの設定に従って"-Xms512m -Xmx1024m"およびmaxsessions=50になります。他のパラメータはそれぞれのデフォルト値になります。たとえば、CLASSPATHの値はシステムCLASSPATHです。

  • dejvm -start jvmcontroller=hrJVM jvmoptions="-Xms128m -Xmx256m" maxsessions=75

    名前付きセクションでの定義に従って、クラスパスを/myJava/hrClassesに設定します。コマンド・ラインはjvmcontrollers.cfgファイルをオーバーライドするため、JVMオプションは"-Xms128m -Xmx256m"になります。同様に、maxsessions75になります。他のパラメータはすべて、それぞれのデフォルト値になります。

  • dejvm -start jvmcontroller=myJVM maxsessions=100 classpath=/myJava/myClasses;/moreJava/moreClasses

    jvmcontrollers.cfgのデフォルト・セクションでの定義に従って、コントローラにはjvmoptions="-Xms512m -Xmx1024m"が設定されます。maxsessionsは100になり(デフォルト・セクションをオーバーライドする)、クラスパスは/myJava/myClasses;/moreJava/moreClassesとなります。他のパラメータはすべて、それぞれのデフォルト値になります。

  • dejvm -stop jvmcontroller=hrJVM

    hrJVMコントローラを停止します。これは、このコマンドを正常に発行するために、起動済である必要があります。

10.7.2 コマンドの制限

次のコマンド制限に注意してください。

  • コマンドでは、大文字と小文字が区別されます。

  • 1度に1つのコマンドのみをJVMコントローラに発行できます。

  • 1度に1つのJVMコントローラに対してのみ、コマンドを発行できます。

JVMコントローラ(dejvmプロセス)で使用可能なコマンドを表10-3に示します。Enterprise Managerを使用している場合は、これらのコマンドを発行するためのインタフェースを含む画面があります。コマンドラインを使用している場合は、Enterprise Managerを使用したJVMコントローラの管理はできないことがあります。

10.7.3 起動コマンド・パラメータ

表10-3に、コマンドラインからJVMを起動するために使用するJVMパラメータを示します。

表10-3 JVMパラメータ

パラメータ 説明

jvmcontroller

JVMの名前を入力します。この名前は、文字で始まり、英数字、'_'、'$'、または'#'で構成される有効なOracle識別子にする必要があります。Oracle識別子の最大長は30バイトです。

ヒント: 名前は、それにアクセスするアプリケーションの名前に基づいたものを入力することをお薦めします。このJVMコントローラの名前は後から変更できません。

maxsessions

新規JVMが生成される前に該当のJVMが処理する最大同時Oracle Formsセッション数を指定します。この値は、デフォルトJVMコントローラ用のセットをオーバーライドします。

classpath

クラスパスを指定すると、環境で指定されたクラスパスまたはシステムのクラスパス、またはデフォルトJVMコントローラ用のクラスパス・セットをオーバーライドします。

jvmoptions

JVMに渡すために有効なオプションを入力します。この値は、デフォルトJVMコントローラ用のセットをオーバーライドします。有効なJVM起動オプションの詳細は、Oracle Javaドキュメントを参照してください。

logdir

デフォルトJVMコントローラのログ・ディレクトリを使用する場合は、「ログ・ディレクトリ」を空白のままにしておきます。他のディレクトリが設定されている場合は、Enterprise Managerからログ・ファイルにアクセスできないことがあります。

logging

  • off - ロギングは使用されません

  • info - JVMコントローラのアクティビティに関する一般情報をレポートします。(デフォルト)

  • warn - 追加調査が必要な可能性がある潜在的に危険な状況をレポートします。

  • error - 発生したエラーをレポートします。アプリケーションは動作し続けることができますが、機能は削減される可能性があります。

  • crit - JVMコントローラが異常終了する原因となった重大な障害をレポートします。

  • debug - 冗長なデバッグ情報をレポートします


10.8 Fusion Middleware ControlからのJVMプーリングの管理

Fusion Middleware Controlでは、使用可能なすべてのJVMプーリング・オプションを管理するためにWebベースの環境が用意されています。また、環境内のすべてのJVMコントローラが一覧表示され、(リモートで)これらを管理することができます。たとえば、JVMコントローラの起動や停止、新規コントローラの追加、既存のコントローラの再構成などができます。さらに、Fusion Middleware Controlでは、JVMコントローラで消費されるリソース(メモリーやCPU)、接続されているFormsの数、JVMの総数などのメトリック情報も得られます。

Formsランタイム・プロセスが直接JVMと対話的に処理するとき、JVMコントローラではそのJVMを管理(JVMの起動や停止、JVMの状態情報の取得など)します。たとえば、管理者がJVMコントローラを停止すると、JVMコントローラではすべての子JVMを終了したことを確認します。Fusion Middleware Controlを使用してJVMコントローラを管理します。

JVMコントローラは、次の3通りの場合に起動されます。

  • Fusion Middleware Controlから起動した場合

  • 既存のJVMコントローラにバインドされているFormsアプリケーションがコントローラの起動を要求した場合

  • コマンドラインから起動した場合

Fusion Middleware Controlでは、JVMコントローラの構成ファイルが読み取られます。これには、名前と値のペア、デフォルト・セクションおよび名前を付けたセクションが含まれ、Forms構成ファイル(formsweb.cfg)と同様の機能を果たします。jvmcontrollers.cfgに含まれるパラメータは、JVMコントローラの起動パラメータに相当します。


注意:

JVMコントローラの構成ファイルのディレクトリや名前を変更することはできません。

JVMコントローラを起動すると、設定が構成ファイルから取得されます。このファイルでは、デフォルト・セクションと名前を付けたセクションの両方で、オプションをまったく指定しないことも、一部またはすべてのオプションを指定することもできます。

Fusion Middleware Controlの「JVM構成」ページと「JVMコントローラ」ページを使用して、次のようなJVMプーリング・タスクを管理します。

10.8.1 「JVM構成」ページでの一般タスク

この項では、JVM構成ファイルとそのパラメータのセクションで構成を編集するために実行できる、一般的なタスクについて説明します。

表10-4に、JVM構成ファイル内の名前を付けた構成セクションで実行できるタスクを示します。

表10-4 構成セクションで行うタスク

タスク 説明 コメント

類似作成

構成セクションのコピーを作成します。

既存の構成セクションのパラメータに基づいて構成セクションを作成する際に使用します。

編集

「説明の編集」ダイアログを開きます。

構成セクションの説明テキストを編集できます。

削除

構成セクションの削除時に「確認」ダイアログを開きます。

「確認」ダイアログで「削除」を押すと、構成セクションとその内容が無条件に削除されます。

作成

「セクションの作成」ダイアログを開きます。

新しい構成セクションを作成します。必要な名前とオプションの説明を入力する必要があります。


表10-5に、名前を付けた構成セクション内のパラメータを変更するために実行できるタスクを示します。

表10-5 名前を付けた構成セクションでのパラメータ処理のタスク

タスク 説明 コメント

元に戻す

以前のバージョンの構成セクションに戻すことができます。

構成セクション内の個々の変更を元に戻すことはできません。

適用

構成セクション内のパラメータに対するすべての変更を適用およびアクティブ化します。

一度適用すると、個々のパラメータへの変更を元に戻すことはできません。

追加

「パラメータの追加」ダイアログを開きます。

必須の名前とオプションの値および説明に基づき、構成セクションにパラメータを追加します。

削除

パラメータを削除します。

変更を保存するには「適用」、破棄するには「元に戻す」をそれぞれ使用します。一度適用すると、個々のパラメータへの変更を元に戻すことはできません。


10.8.2 JVM構成セクションの管理

この項では、名前を付けたJVM構成セクションの作成、編集、複製および削除について説明します。

10.8.2.1 「JVM構成」ページへのアクセス

「JVM構成」ページにアクセスするには: 

  1. Enterprise Manager Fusion Middleware Controlを起動します。

  2. Fusion Middleware Controlのメイン・ページで、構成するForms Servicesインスタンスへのリンクをクリックします。

  3. 「Forms」メニュー・リストから「JVM構成」を選択します。

    「JVM構成」ページ(図10-4)が表示されます。

    図10-4 「JVM構成」ページ

    図10-4の説明が続きます
    「図10-4 「JVM構成」ページ」の説明

10.8.2.2 新しい構成セクションの作成

jvmcontrollers.cfgに新しい構成セクションを作成するには、Fusion Middleware Controlの「JVM構成」ページを使用します。これらの構成は、フォームの実行に使用するエンド・ユーザーのURL問合せ文字列からリクエストできます。

新しい構成セクションを作成するには: 

  1. Fusion Middleware Controlのメイン・ページで、構成するForms Servicesインスタンスへのリンクをクリックします。

  2. 「Forms」メニュー・リストから「JVM構成」を選択します。

  3. 「作成」をクリックします。

    「作成」ダイアログが表示されます。

  4. 新しい構成セクションの名前と説明を入力し、「作成」をクリックします。

    新しい構成セクションが追加されます。

10.8.2.3 名前を付けた構成の説明の編集

名前を付けた構成の説明(コメント)は、「JVM構成」ページで編集できます。

名前を付けた構成の説明を編集するには:

  1. 「JVM構成」リージョンで、説明を編集する名前を付けた構成を含む行を選択します。

  2. 「編集」をクリックします。

  3. 「説明の編集」ダイアログが表示されます。

  4. 「コメント」フィールドに説明を入力します。

  5. 「保存」をクリックします。

    「説明の編集」ダイアログ・ボックスが閉じ、変更内容が保存され、表示されます。

10.8.2.4 名前を付けた構成の複製

名前を付けた構成のコピーをバックアップ用に作成できます。または、既存の構成セクションから新しい構成セクションを作成できます。

名前を付けた構成を複製するには:

  1. 「JVM構成」リージョンで、「類似作成」を選択します。

  2. 「類似作成」ダイアログで、「複製するセクション」メニューから複製する既存の構成セクションの名前を選択します。

  3. 「新規セクション名」フィールドに、新しい構成セクションの名前を入力します。新しい構成セクションには、一意の名前を指定する必要があります。

  4. 「作成」をクリックします。

    複製元のセクションとまったく同じパラメータ、パラメータ値およびコメントを備えた新しいセクションが作成されます。

10.8.2.5 名前を付けた構成の削除

名前を付けた構成セクションを削除すると、構成セクション内の情報はすべて削除されます。特定のパラメータのみを削除する方法は、第10.8.3項「パラメータの管理」を参照してください。

名前を付けた構成を削除するには:

  1. 「JVM構成」リージョンで、削除する構成セクションの行を選択します。

  2. 「削除」をクリックします。

    「確認」ダイアログが表示されます。

  3. 「削除」をクリックします。

    構成セクションが削除されます。

    Oracle Enterprise Managerが「JVM構成」ページに戻り、残りの構成が表示されます。


注意:

デフォルト構成セクションは削除できません。

10.8.3 パラメータの管理

名前を付けた構成内のパラメータを管理するには、Fusion Middleware Controlを使用します。Fusion Middleware Controlを使用して、パラメータを追加、編集または削除できます。

構成セクションでパラメータを編集するには:

  1. 「JVM構成」リージョンで、編集するパラメータを含む構成セクションの行を選択します。

  2. 編集するパラメータの行を選択します。「値」と「コメント」に入力します。

  3. 変更を保存する場合は「適用」をクリックし、破棄する場合は「元に戻す」をクリックします。

構成セクションにパラメータを追加するには:

  1. Fusion Middleware Controlの「JVM構成」リージョンで、パラメータを追加する構成セクションの行を選択します。

  2. 「追加」をクリックして新しいパラメータを追加します。

    「追加」ダイアログが表示されます。

  3. パラメータの「名前」、「値」、および「コメント」に入力します。

  4. パラメータを追加するには、「作成」をクリックします。

  5. 変更を保存する場合は「適用」をクリックし、破棄する場合は「元に戻す」をクリックします。

構成セクションのパラメータを削除するには:

  1. Fusion Middleware Controlの「JVM構成」リージョンで、削除するパラメータを持つ構成セクションを選択します。

  2. 削除するパラメータを含む行を選択します。

  3. 「削除」をクリックします。

  4. 変更を保存する場合は「適用」をクリックし、破棄する場合は「元に戻す」をクリックします。

10.8.4 JVM構成パラメータとそのデフォルト値

表10-6に、JVM構成パラメータとそのデフォルト値を示します。

表10-6 JVM構成パラメータ

タイトル 説明 デフォルト値

maxsessions

新規JVMが生成される前にデフォルトのJVMが処理する、最大同時Oracle Formsセッション数を指定します。

65535

classpath

classpathを指定すると、システムのクラスパスまたは環境で指定されたクラスパスをオーバーライドします。

$ORACLE_HOME/oracle_common/jdk/bin

jvmoptions

JVMに渡すために有効なオプションを入力します。有効なJVM起動パラメータの詳細は、Oracle Javaドキュメントを参照してください。

Null

logdir

デフォルトJVMコントローラのログ・ディレクトリを使用する場合は、「ログ・ディレクトリ」を空白のままにしておきます。他のディレクトリが設定されている場合は、ログ・ファイルはEnterprise Managerで表示できません。

$DOMAIN_HOME/system_components/FORMS/forms1/tools/jvm/log

logging

loggingが有効かどうかを指定します。有効な値は、Off、Debug、Warn、Error、Crit、Infoです。

Info

autoremoval

autoremovalが有効な場合、JVMコントローラは子JVMを監視および管理し、これらが必要かどうかを決定できます。子JVMプロセスが不要になると、autoremoval機能によってこれらのJVMは完全に終了されます。

Off

loadbalance

loadbalanceが有効な場合、JVMコントローラは、各子JVMプロセスのステータスを監視できます。選択されたloadbalanceの設定に基づいて、JVMコントローラは、処理のためのリクエストの送信先を決定します。

ランダム


10.8.5 Fusion Middleware ControlによるJVMコントローラの起動と停止

Fusion Middleware Controlは、JVMコントローラの起動、停止、再起動など、Oracle Forms Servicesを管理するツールです。Oracle Forms Servicesの管理には、このツールの使用をお薦めします。

JVMコントローラが停止した場合は、起動することができます。JVMコントローラがすでに実行中の場合は、手動で停止せずに再起動することができます。Fusion Middleware Controlでは、自動的にこの手順が実行されます。


注意:

JVMを停止または再起動する前に、JVMコントローラを使用しているFormsセッションをユーザーが停止したことを確認します。JVMを再起動すると、ユーザー側ではセッションの再起動が必要になることがあります。

「JVMコントローラ」ページにアクセスするには:

  1. Enterprise Manager Fusion Middleware Controlを起動します。

  2. 「Forms」ホームページで、「JVMコントローラ」を選択します。

    「JVMコントローラ」ページ(図10-5)が表示されます。

図10-5 「JVMコントローラ」ページ

図10-5の説明が続きます
「図10-5 「JVMコントローラ」ページ」の説明

実行中でないJVMコントローラを起動するには:

  1. 「Forms」メニューで、「JVMコントローラ」を選択します。

    「JVMコントローラ」ページが表示されます。

  2. 起動するJVMコントローラを選択します。実行されていないJVMコントローラには赤い下矢印が表示されています。

  3. 「起動」をクリックします。

    JVMコントローラが起動すると、「ステータス」に緑色の上矢印(図10-5)が表示されます。

実行中のJVMコントローラを再起動するには:

  1. 「Forms」メニューで、「JVMコントローラ」を選択します。

    「JVMコントローラ」ページが表示されます。

  2. 再起動するJVMコントローラを選択します。

  3. 「再起動」をクリックします。

  4. 「確認」ダイアログで「はい」をクリックします。

    「JVMコントローラ」ページが再表示されます。

    JVMコントローラが再起動すると、「ステータス」に緑色の上矢印が表示されます。

JVMコントローラを停止するには:

  1. 「Forms」メニューで、「JVMコントローラ」を選択します。

    「JVMコントローラ」ページが表示されます。

  2. 停止する対象となる実行中のJVMコントローラ(緑色の上矢印で表示されているコントローラ)を選択します。

  3. 「停止」をクリックします。

  4. 「確認」ダイアログで「はい」をクリックします。

    JVMコントローラが停止すると、「ステータス」に赤色の下矢印(図10-5)が表示されます。

JVMコントローラのその他の詳細を表示するには:

  1. 「Forms」メニューで、「JVMコントローラ」を選択します。

    「JVMコントローラ」ページが表示されます。

  2. JVMコントローラの横にあるプラス記号をクリックします。行が開き、JVMコントローラに関する追加の詳細(図10-5)が表示されます。

10.8.6 Forms構成ファイル設定

この項では、アプリケーションでのJVMコントローラの使用を有効または無効にするためにForms構成ファイル(formsweb.cfg)で使用するJVMプーリング・パラメータについて説明します。パラメータ名には大/小文字の区別はありません。Fusion Middleware Controlを使用して、Forms構成ファイルを管理できます。

表10-7「Oracle FormsのJVMコントローラ起動パラメータ」に、formsweb.cfgファイルで指定する起動オプションを示します。

formsweb.cfgでのパラメータの変更の詳細は、第3.2.4項「パラメータの管理」を参照してください。

表10-7 Oracle FormsのJVMコントローラ起動パラメータ

パラメータ 説明

jvmcontroller

有効値: jvmcontrollerの名前。空白のままにしてJVMを指定しないこともできます。

デフォルト値はありません。

注意: formsweb.cfgでこのパラメータを指定するには、jvmcontroller=%jvmcontroller%の形式でotherparamsにこのパラメータを指定する必要があります。otherparamsの詳細は、表3-13「詳細構成パラメータ」を参照してください。

このパラメータはデフォルト・セクションでグローバルに設定することも、アプリケーション・セクションを選択してオーバーライドすることもできます。これによって、Formsランタイム・プロセスで使用するJVMコントローラが決まります。dejvm実行可能ファイルのjvmcontrollerパラメータに対応します。

jvmcontrollerに値を指定していない場合(jvmcontroller=)、Formsランタイム・プロセスは自身のインプロセスJVMを起動します。これは、Java Importerの動作は10gより前のリリースのものとなることを意味します。

allowJVMControllerAutoStart

有効値: truefalse

デフォルト値: true

JVMコントローラを使用するようにFormsが構成されていて、そのJVMコントローラが実行されていない場合、このパラメータにより、Oracle FormsでJVMコントローラを実行することができます。


10.8.7 起動の例

この例では、複数のアプリケーションで複数のJVMを使用する環境を示します。

表10-8に示すように、formsweb.cfgは4つの構成セクションで構成されます。

図10-8 複数のアプリケーションで使用する複数のJVM

名前を付けた構成セクション JVM構成

default

jvmcontroller=commonJVM

ordersApp

なし

hrApp

jvmcontroller=hrJVM

salesApp

jvmcontroller=


ユーザーがordersAppアプリケーションを起動し、アプリケーションがJavaコードを実行すると、Formsランタイム・プロセスはそのリクエストをcommonJVMという名前のJVMコントローラにルーティングします。[ordersApp]アプリケーション・セクションでは使用するJVMコントローラが指定されていないので、Formsランタイム・プロセスはグローバルなJVMコントローラを使用します。JVMコントローラが起動していない場合は、動的に起動します。別のユーザーが同じアプリケーションを起動すると、同様にcommonJVMに接続します。

ユーザーがhrAppアプリケーションを起動し、アプリケーションがJavaコードを実行すると、Formsランタイム・プロセスはそのリクエストをhrJVMという名前のJVMコントローラに送ります。これは、[hrApp]アプリケーション・セクションがグローバル設定をオーバーライドするためです。JVMコントローラが起動していない場合は、動的に起動します。別のユーザーが同じアプリケーションを起動すると、同様にhrJVMに接続します。

ユーザーがsalesAppアプリケーションを起動し、アプリケーションがJavaコードを実行すると、Java ImporterがJVMプーリングなしで機能するのと同様に、Formsランタイム・プロセスはインプロセスJVMを起動します。別のユーザーが同じアプリケーションを起動すると、そのアプリケーションは自身のインプロセスJVMを取得するため、図10-6に示すようにメモリーの消費量が多くなります。

図10-6 複数のアプリケーションで使用する複数のJVM

図10-6の説明が続きます
「図10-6 複数のアプリケーションで使用する複数のJVM」の説明

10.9 JVMコントローラのロギング

ロギングを有効にすると、JVMコントローラは次のような情報をログ・ファイルに記録します。

  • JVMパラメータ(maxsessions、classpathなど)の値。

  • JVMコントローラが起動および終了した日時。

  • 子JVMが生成された日時。

  • Formsランタイム・プロセスが新規の接続を開始した日時とそのプロセスID。

    この情報は、診断または管理の目的でどのFormsランタイム・プロセスがどのJVMコントローラに接続されているかを調べるうえで役立ちます。

  • Formsランタイム・プロセスのセッションが終了しJVMとの接続が解除された日時。

この項は、次の小項目に分かれています。

10.9.1 デフォルトのJVMロギング・プロパティの指定

Fusion Middleware Controlを使用して、JVMコントローラのロギング・プロパティを管理します。

  1. 「JVM構成」ページで、JVM構成セクションを選択します。

  2. 「ロギング」パラメータに、「オン」または「オフ」を入力します。

  3. 「適用」をクリックします。

10.9.2 JVMログのディレクトリ場所の指定

ログ・ファイルのディレクトリはJVMコントローラで指定できます。また、他のJVMコントローラが使用するデフォルトJVMコントローラのログ・ファイル・ディレクトリも指定できます。

ログ・ファイルのディレクトリの場所を指定するには:

  1. JVMコントローラを作成します。詳細は、第10.8.2.2項「新しい構成セクションの作成」または第10.8.2.4項「名前を付けた構成の複製」を参照してください。

  2. 「ログ・ディレクトリ」パラメータを追加します。詳細は、第10.8.3項「パラメータの管理」を参照してください。

    「ログ・ディレクトリ」パラメータが定義されている名前付き構成セクションを複製した場合は、第10.8.3項「パラメータの管理」にあるように、既存のそのパラメータを編集できます。

  3. 「適用」をクリックして変更を保存します。

    「JVM構成」ページが再表示されます。

10.9.3 ログ・ファイルへのアクセス

ログ・ファイルが存在する場合は、「ログ・ファイル」列にアイコンが表示されます。

ログ・ファイルにアクセスするには:

  • 該当のJVMコントローラで使用可能な「ログ・ファイル」列の「ログ・ファイル」リンクをクリックします。

    「ログ・ファイル」ページが開き、そのログの情報が表示されます。

10.9.4 JVMコントローラのログ・ファイルの削除

Fusion Middleware Controlを使用して、ログ・ファイルを削除します。

JVMコントローラのログ・ファイルを削除するには:

  1. 「JVMコントローラ」ページで、ターゲットJVMを選択します。

  2. 「ログ・ファイルを削除」をクリックします。

    「削除の確認」ダイアログが表示されます。

  3. 「削除」をクリックします。

    ログ・ファイルが削除され、「JVMコントローラ」ページが再び表示されます。


注意:

実行中のJVMのログ・ファイルを削除した場合、JVMを再起動すると、そのログ・ファイルが再び使用可能になります。ロギングを可能にするには、JVMを再起動する必要があります。

10.10 JVMプーリングのエラー・メッセージ

PDE-JM001: JVMコントローラ: <jvm_name>と通信できません。

原因: JVMコントローラの起動または既存のJVMコントローラへの接続に失敗しました。

処置: 管理者に連絡してください。