この章には、次の項が含まれています。
FormsアプリケーションからJavaをコールすると、各Formsプロセスは初めてJavaをコールするときにJVMに接続されます。以降は、個別のプロセスが再びJavaをコールしなくても、そのプロセスが有効なかぎり、このJVMはプロセスに接続された状態を維持するので、リソースの競合が発生する可能性があります。JVMプーリングは、関係するすべてのFormsプロセス間で限られた数のJVMを共有するためのプロビジョニングを行います。すべてのFormsプロセスが、ある時点でJavaをコールすることがあったとしても、特定の時点でこれらのプロセスの一部のみがJavaをコールするならば、開始する必要のあるJVMの数は、使用率のピーク時に必要な数のみとなります。JVMプーリングを使用すると、JavaをコールするFormsインストールのリソースの使用率を大幅に低減できる可能性があります。
Formsランタイム・プロセスは、Javaの実行が必要になると、Java仮想マシン(JVM)コントローラに含まれるJVMにメッセージを送信します。JVMは、そのFormsランタイム・プロセス用に新しいスレッドを作成します。その後、JVMは別のFormsランタイム・プロセスからの次の新しいリクエストのリスニングを続行します。一方、リクエストは新しく作成されたスレッドによって処理され、結果がFormsランタイム・プロセスに返されます。該当のFormsセッションが有効である間、Formsランタイム・プロセスはそのスレッドと直接通信します。
Java仮想マシン・プーリングは、JVMコントローラを含む別のプロセスです。JVMプーリングでは、JVMはFormsランタイム・プロセスの外部で実行されます。また、JVMを複数のFormsランタイム・プロセスで共有することもできます。JVMコントローラ・プロセスはJVMそのものではなく、JVMを含むコンテナです。これは、Formsランタイム・プロセスがインプロセスJVMを含む仕組みと同様です。JVMプーリングの使用はオプションです。管理者は、JVMプーリングを使用せず、JVMがFormsランタイム・プロセスに含まれるようにすることもできます。
Java仮想マシン(JVM)プーリングは、Java Importerとの組合せで機能します。また、ReportsをコールするFormsの機能との組合せでも動作します。Java Importerを使用すると、開発者は設計時にForms Builder内のPL/SQLからJavaクラスを参照できます。実行時に、FormsはJava仮想マシン(JVM)を使用してJavaコードを実行します。Oracle Formsの以前のバージョンでは、Java Importerを使用する各Formsセッションに、Javaコードを実行するための個別のJVMインスタンスがありました。このモデルでは、各JVMがサーバー上のメモリーを消費するため、同時に多数のユーザーが存在すると、複数のJVMプロセスによって消費されるメモリーの量は膨大なものになる可能性があります。
Java Importerの詳細は、Oracle Forms Developerのオンライン・ヘルプを参照してください。
JVMプーリングを有効化すると、管理者は実行中のJVMインスタンスの数を整理して、複数のFormsセッションでJVMを共有し、Formsセッションごとに個別のJVMインスタンスを持たないようにすることができます。これにより、メモリー消費が大幅に削減されるため、サーバーのより多くのリソースが解放されます。
アプリケーションの設計および配布においても、JVMプーリングを考慮する必要があります。詳細は、「第10章の「設計時の考慮事項」を参照してください。
10gの場合、Formsランタイム・プロセスではReportsをコールする前にJVMが個別に作成され、ReportsではこのJVMを使用してJavaメソッドを実行します。このJVMはFormsランタイム・プロセスに属しています。10gでJVMプーリング機能を使用するのはJava Importerのみです。一方、JVMプーリングを有効にした11gの場合、Oracle Forms ServicesではOracle Reportsのリクエストに対して共有JVMコントローラを使用します。
各Formsランタイム・プロセスで専用のJVMインスタンスを持たずに、複数のFormsランタイム・プロセスでJVMを共有できます。JVMプーリングでは、JVMを収容するJVMコントローラと呼ばれるプロセスを使用できます。このJVMを複数のFormsランタイム・プロセスで共有できます。これにより、メモリー消費を大幅に削減できるので、サーバーではより多くのリソースを解放できます。
jvmcontrollerパラメータを使用すると、特定のJVMコントローラを使用するようにフォームを構成できます。jvmcontrollerパラメータは、どのJVMコントローラを使用するかをFormsランタイム・プロセスに指示します。これは、Forms構成ファイルformsweb.cfg
で設定できます。また、Formsアプリケーションの呼び出しに使用するURLのパラメータとしてこの情報を渡すこともできます。jvmcontrollerを起動するときに必要な各種のパラメータは、JVMコントローラの構成ファイルjvmcontrollers.cfg
で指定する必要があります。
Reportsの統合でのJVMプーリングの使用の詳細は、第10.10項「FormsとReportsの統合」を参照してください。
各Formsランタイム・プロセスがJVM内に個別にスレッドを持つため、同時実行性が実現します。JVMが同時リクエストの指定数に達すると、負荷を分散させるために子JVMを生成します。さらに、複数のJVMコントローラを持ち、それぞれに子JVMを持つことも可能です。
たとえば、複数のFormsアプリケーションで、オプションやクラスパスが異なるJVMを使用する場合があります。特定のFormsアプリケーションで使用するJVMコントローラは、Forms構成ファイル(formsweb.cfg
)の名前を付けたセクションで指定できます。詳細は、第10.8.6項「Forms構成ファイル設定」を参照してください。
図10-1は、JVMプーリングを使用した場合の環境の例を示しています。2つのJVMコントローラがあり、1つはインプロセスJVMのみを使用し、もう1つは3つの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に影響を与えることはなく、これらから影響を受けることもありません。
ordersJVMというJVMコントローラがmaxsessions=50
に設定されているとします。実行中の各オーダー・アプリケーションは、ordersJVMにリクエストを送信します。新しいFormsランタイム・プロセスがordersJVMにリクエストを送信すると、そのたびにFormsランタイム・プロセスと通信する新しいスレッドが作成されます。その後、JVMコントローラは新しいリクエストのリスニングに戻ります。ユーザーがセッションを終了すると、JVM内のスレッドも終了します。
ordersJVMコントローラが50番目の同時リクエストを受信すると(一部のユーザーが終了した後で開始するユーザーも存在するため、最初から50番目のユーザーとはかぎりません)、コントローラは子JVMを生成します。子JVMは親の設定を継承するため、この子JVMのmaxsessions
も50
になります。この段階では、JVMコントローラには50の接続があり、子JVMには接続はありません。
新しいユーザーがこのOracle Formsアプリケーションを起動し、Javaコードを実行すると、Formsランタイム・プロセスはそのJVMコントローラのネームスペース内でリスニングを実行しているJVMに接続します。このJVMコントローラには50の接続があり、使用できないため、子JVMがこのリクエストを受信します。その後、親のJVMコントローラで一部のユーザーがアプリケーションを終了し、接続数が減少すると、コントローラはmaxsessions
で指定された接続数に達しないかぎり新しいリクエストを受信することができます。
このような処理が行われる間、hrJVM
はこれとは別に動作しています。ordersJVM
で接続が超過してもhrJVM
には接続されず、ordersJVM
の子JVMに対してのみ接続が行われます。
JVMプーリングのアーキテクチャでは、複数のJVMコントローラを持ち、それぞれが子JVMを持つことができます。複数のJVMコントローラを使用するのは、次のような場合です。
アプリケーションごとにJVMコントローラを持ち、他のコントローラとは個別に起動および停止できるようにする場合。
アプリケーションごとに異なる設定が必要な場合。たとえば、複数のコントローラでクラスパスやJVMの設定を分ける場合です。
Fusion Middleware ControlからJVMコントローラのリソース使用率を監視する場合。複数のアプリケーションまたはユーザー・グループで異なるJVMコントローラが使用されている場合は、Java Importerコードによってどのようにリソースが消費されているかを確認できます。
同一コンピュータ上に複数の開発環境、テスト環境または本番環境がある場合。
複数の異なるアプリケーションで静的データを共有しない場合。
ここでは、ユーザー・インタフェースのボタンを持つOracle Formsアプリケーションについて検討します。ユーザーがボタンを押すと、Oracle Formsは画面上のフィールドから値を取得してJavaに渡し(Java Importer機能を使用)、PL/SQLでは実行できないなんらかの複雑な計算を実行します。その後、結果が返され、フォーム内のフィールドに表示されます。このFormsセッションを実行するために、1つのJVMプロセスが実行されています。
図10-2は、JVMプーリングが有効になっていないために、このOracle Formsセッションに個別のインプロセスJVMが存在する様子を示しています。図の左側には、独自のFormsセッションを実行する複数のクライアントが示されています。図の中央で、各クライアントは、独自のJVMプロセスを含む独自のFormsランタイム・プロセスをコールします。
図10-3は、JVMプーリングが有効になっている場合に、複数のFormsランタイム・プロセスで単一のJVMプロセスが共有される様子を示しています。
この例では、同じアプリケーションでそれぞれ独自のランタイム・プロセスを使用して機能している5つのクライアントが、独自のJVMインスタンスを生成するそれぞれのFormsランタイム・プロセスを使用するかわりに、1つのプールされたJVMプロセスを使用しています。このため、メモリー使用率とシステム・リソースを大幅に節約できます。
この項は、次の小項目に分かれています。
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ラッパーでもこれまでどおりに機能します。
JVMプーリングのメリットの1つに、同一クラスの複数のインスタンス間で静的変数を使用してデータを共有する機能があります。ただし、静的変数は1つのJVM内の同一クラスのインスタンス間で共有され、複数のJVM間では共有されません。この条件に従って計画を立案する必要があります。
たとえば、ローン・クラスのすべてのインスタンスで同じ金利を使用して計算を実行するという理由で、interestRate
という静的変数が用意されているとします。JVMを1つのみ使用する場合は、ローン・クラスの1つのインスタンスでinterestRate
が変更されると、その他のすべてのインスタンスが影響を受けます(これは意図した動作です)。
ただし、JVMコントローラに1つ以上の子JVMが存在する場合は、2つ以上のJVMが存在する場合があります。1つのJVMでinterestRateが変更されても、他のJVMにあるローン・インスタンスでは新しい値が認識されません。子JVMの管理の詳細は、第10.2項「子Java仮想マシンのプロセスについて」を参照してください。JVMプーリングを使用しておらず、interestRateを変更した場合は、各Oracle Formsのランタイム・プロセスが個別にインプロセスJVMを持つため、その変更により他のインスタンスは影響を受けません。
静的変数を使用してクラスの複数のインスタンス間で情報を共有する場合は、maxsessions
を65535
に設定して、子JVMが生成されないようにしてください。
Fusion Middleware Controlを使用してJVMを構成するには、次の手順を実行します。
Fusion Middleware Controlを使用して、formsweb.cfg
に新しい構成セクションを追加するか、そこにある既存の構成セクションを変更し、アプリケーションでのJVMコントローラの使用を有効または無効にします。詳細は、第10.8.6項「Forms構成ファイル設定」を参照してください。
default.env
またはjvmcontrollers.cfg
でCLASSPATHが更新されていることを確認します。
Fusion Middleware Controlを使用してJVMパラメータを構成します。詳細は、第10.8.3項「パラメータの管理」を参照してください。
JVMコントローラを起動します。詳細は、第10.8.5項「Fusion Middleware ControlによるJVMコントローラの起動と停止」を参照してください。
コマンドラインからJVMコントローラを管理するには、JVMコントローラの起動および停止のオプションを理解し、環境を指定する必要があります。JVMコントローラを実行しているコンピュータと同じコンピュータ上にあるJVMコントローラにのみアクセスできます。
注意: この章で説明するJVMコントローラの制御メカニズムは、主にコマンドラインに関連しています。使いやすい画面とオンライン・ヘルプのあるFusion Middleware Controlを使用する方法のほうが簡単です。ただし、各種のフィールドやオプションの意味およびJVMコントローラの動作の仕組みを理解するために、Fusion Middleware Controlのユーザーも次の情報を参照することをお薦めします。 |
この項では、JVMコントローラのコマンドの例について説明します。これらの例の詳しい説明は、第10.8.7項「起動の例」を参照してください。
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"
になります。同様に、maxsessions
は75
になります。他のパラメータはすべて、それぞれのデフォルト値になります。
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コントローラを停止します。これは、このコマンドを正常に発行するために、起動済である必要があります。
次のコマンド制限に注意してください。
コマンドでは、大文字と小文字が区別されます。
1度に1つのコマンドのみをJVMコントローラに発行できます。
1度に1つのJVMコントローラに対してのみ、コマンドを発行できます。
JVMコントローラ(dejvmプロセス)で使用可能なコマンドを表10-1に示します。Enterprise Managerを使用している場合は、これらのコマンドを発行するためのインタフェースを含む画面があります。コマンドラインを使用している場合は、Enterprise Managerを使用したJVMコントローラの管理はできないことがあります。
表10-1に、コマンドラインからJVMを起動するために使用するJVMパラメータを示します。
表10-1 JVMパラメータ
パラメータ | 説明 |
---|---|
jvmcontroller |
JVMの名前を入力します。この名前は、文字で始まり、英数字、'_'、'$'、または'#'で構成される有効なOracle識別子にする必要があります。Oracle識別子の最大長は30バイトです。 ヒント: 名前は、そのJVMにアクセスするアプリケーションの名前に基づいたものを入力することをお薦めします。このJVMコントローラの名前は後から変更できません。 |
maxsessions |
新規JVMが生成される前に該当のJVMが処理する最大同時Oracle Formsセッション数を指定します。この値は、デフォルトJVMコントローラ用のセットをオーバーライドします。 |
classpath |
クラスパスを指定すると、環境で指定されたクラスパスまたはシステムのクラスパス、またはデフォルトJVMコントローラ用のクラスパス・セットをオーバーライドします。 |
jvmoptions |
JVMに渡すために有効なオプションを入力します。この値は、デフォルトJVMコントローラ用のセットをオーバーライドします。有効なJVM起動オプションの詳細は、Sun社のJavaドキュメントを参照してください。 |
logdir |
デフォルトJVMコントローラのログ・ディレクトリを使用する場合は、「ログ・ディレクトリ」を空白のままにしておきます。他のディレクトリが設定されている場合は、Enterprise Managerからログ・ファイルにアクセスできないことがあります。 |
logging |
オンまたはオフ。 |
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コントローラを管理します。
Fusion Middleware Controlから起動した場合
既存のJVMコントローラにバインドされているFormsアプリケーションがコントローラの起動を要求した場合
コマンドラインから起動した場合
Fusion Middleware Controlでは、JVMコントローラの構成ファイルが読み取られます。これには、名前と値のペア、デフォルト・セクションおよび名前を付けたセクションが含まれ、Forms構成ファイル(formsweb.cfg
)と同様の機能を果たします。jvmcontrollers.cfg
に含まれるパラメータは、JVMコントローラの起動パラメータに相当します。
注意: JVMコントローラの構成ファイルのディレクトリや名前を変更することはできません。 |
JVMコントローラを起動すると、設定が構成ファイルから取得されます。このファイルでは、デフォルト・セクションと名前を付けたセクションの両方で、オプションをまったく指定しないことも、一部またはすべてのオプションを指定することもできます。
Fusion Middleware Controlの「JVM構成」ページと「JVMコントローラ」ページを使用して、次のようなJVMプーリング・タスクを管理します。
この項では、JVM構成ファイルとそのパラメータのセクションで構成を編集するために実行できる、一般的なタスクについて説明します。
表10-2に、JVM構成ファイル内の名前を付けた構成セクションで実行できるタスクを示します。
表10-2 構成セクションで行うタスク
タスク | 説明 | コメント |
---|---|---|
類似作成 |
構成セクションのコピーを作成します。 |
既存の構成セクションのパラメータに基づいて構成セクションを作成する際に使用します。 |
編集 |
「説明の編集」ダイアログを開きます。 |
構成セクションの説明テキストを編集できます。 |
削除 |
構成セクションの削除時に「確認」ダイアログを開きます。 |
「確認」ダイアログで「削除」を押すと、構成セクションとその内容が無条件に削除されます。 |
作成 |
「セクションの作成」ダイアログを開きます。 |
新しい構成セクションを作成します。必要な名前とオプションの説明を入力する必要があります。 |
表10-3に、名前を付けた構成セクション内のパラメータを変更するために実行できるタスクを示します。
表10-3 名前を付けた構成セクションでのパラメータ処理のタスク
タスク | 説明 | コメント |
---|---|---|
元に戻す |
以前のバージョンの構成セクションに戻すことができます。 |
構成セクション内の個々の変更を元に戻すことはできません。 |
適用 |
構成セクション内のパラメータに対するすべての変更を適用およびアクティブ化します。 |
一度適用すると、個々のパラメータへの変更を元に戻すことはできません。 |
追加 |
「パラメータの追加」ダイアログを開きます。 |
必須の名前とオプションの値および説明に基づき、構成セクションにパラメータを追加します。 |
削除 |
パラメータを削除します。 |
変更を保存するには「適用」、破棄するには「元に戻す」をそれぞれ使用します。一度適用すると、個々のパラメータへの変更を元に戻すことはできません。 |
この項では、名前を付けたJVM構成セクションの作成、編集、複製および削除について説明します。
「JVM構成」ページにアクセスするには:
Enterprise Manager Fusion Middleware Controlを起動します。
Fusion Middleware Controlのメイン・ページで、構成するForms Servicesインスタンスへのリンクをクリックします。
「Forms」メニュー・リストから「JVM構成」を選択します。
「JVM構成」ページ(図10-4)が表示されます。
jvmcontrollers.cfg
に新しい構成セクションを作成するには、Fusion Middleware Controlの「JVM構成」ページを使用します。これらの構成は、フォームの実行に使用するエンド・ユーザーのURL問合せ文字列からリクエストできます。
新しい構成セクションを作成するには:
Fusion Middleware Controlのメイン・ページで、構成するForms Servicesインスタンスへのリンクをクリックします。
「Forms」メニュー・リストから「JVM構成」を選択します。
「作成」をクリックします。
「作成」ダイアログが表示されます。
新しい構成セクションの名前と説明を入力し、「作成」をクリックします。
新しい構成セクションが追加されます。
名前を付けた構成の説明(コメント)は、「JVM構成」ページで編集できます。
名前を付けた構成の説明を編集するには:
「JVM構成」リージョンで、説明を編集する名前を付けた構成を含む行を選択します。
「編集」をクリックします。
「説明の編集」ダイアログが表示されます。
「コメント」フィールドに説明を入力します。
「保存」をクリックします。
「説明の編集」ダイアログ・ボックスが閉じ、変更内容が保存され、表示されます。
名前を付けた構成のコピーをバックアップ用に作成できます。または、既存の構成セクションから新しい構成セクションを作成できます。
名前を付けた構成を複製するには:
「JVM構成」リージョンで、「類似作成」を選択します。
「類似作成」ダイアログで、「複製するセクション」メニューから複製する既存の構成セクションの名前を選択します。
「新規セクション名」フィールドに、新しい構成セクションの名前を入力します。新しい構成セクションには、一意の名前を指定する必要があります。
「作成」をクリックします。
複製元のセクションとまったく同じパラメータ、パラメータ値およびコメントを備えた新しいセクションが作成されます。
名前を付けた構成セクションを削除すると、構成セクション内の情報はすべて削除されます。特定のパラメータのみを削除する方法は、第10.8.3項「パラメータの管理」を参照してください。
名前を付けた構成を削除するには:
「JVM構成」リージョンで、削除する構成セクションの行を選択します。
「削除」をクリックします。
「確認」ダイアログが表示されます。
「削除」をクリックします。
構成セクションが削除されます。
Oracle Enterprise Managerが「JVM構成」ページに戻り、残りの構成が表示されます。
注意: デフォルト構成セクションは削除できません。 |
名前を付けた構成内のパラメータを管理するには、Fusion Middleware Controlを使用します。Fusion Middleware Controlを使用して、パラメータを追加、編集または削除できます。
構成セクションでパラメータを編集するには:
「JVM構成」リージョンで、編集するパラメータを含む構成セクションの行を選択します。
編集するパラメータの行を選択します。「値」と「コメント」に入力します。
変更を保存する場合は「適用」をクリックし、破棄する場合は「元に戻す」をクリックします。
構成セクションにパラメータを追加するには:
Fusion Middleware Controlの「JVM構成」リージョンで、パラメータを追加する構成セクションの行を選択します。
「追加」をクリックして新しいパラメータを追加します。
「追加」ダイアログが表示されます。
パラメータの「名前」、「値」、および「コメント」に入力します。
パラメータを追加するには、「作成」をクリックします。
変更を保存する場合は「適用」をクリックし、破棄する場合は「元に戻す」をクリックします。
構成セクションのパラメータを削除するには:
Fusion Middleware Controlの「JVM構成」リージョンで、削除するパラメータを持つ構成セクションを選択します。
削除するパラメータを含む行を選択します。
「削除」をクリックします。
変更を保存する場合は「適用」をクリックし、破棄する場合は「元に戻す」をクリックします。
表10-4に、JVM構成パラメータとそのデフォルト値を示します。
表10-4 JVM構成パラメータ
パラメータ | 説明 | デフォルト値 |
---|---|---|
JVM当たりの最大セッション数 |
新規JVMが生成される前にデフォルトのJVMが処理する、最大同時Oracle Formsセッション数を指定します。 |
65535 |
クラスパス |
クラスパスを指定すると、システムのクラスパスまたは環境で指定されたクラスパスをオーバーライドします。 |
|
JVMオプション |
JVMに渡すために有効なオプションを入力します。有効なJVM起動パラメータの詳細は、Sun社のJavaドキュメントを参照してください。 |
Null |
ログ・ディレクトリ |
デフォルトJVMコントローラのログ・ディレクトリを使用する場合は、「ログ・ディレクトリ」を空白のままにしておきます。他のディレクトリが設定されている場合は、ログ・ファイルはEnterprise Managerで表示できません。 |
|
ロギング |
ロギングが有効かどうかを指定します。有効値: On、Off |
|
コメント |
このテキスト領域に、デフォルトのJVMに関するコメントを追加します。 |
Null |
Fusion Middleware Controlは、JVMコントローラの起動、停止、再起動など、Oracle Forms Servicesを管理するツールです。Oracle Forms Servicesの管理には、このツールの使用をお薦めします。
JVMコントローラが停止した場合は、起動することができます。JVMコントローラがすでに実行中の場合は、手動で停止せずに再起動することができます。Fusion Middleware Controlでは、自動的にこの手順が実行されます。
注意: JVMを停止または再起動する前に、JVMコントローラを使用しているFormsセッションをユーザーが停止したことを確認します。JVMを再起動すると、ユーザー側ではセッションの再起動が必要になることがあります。 |
「JVMコントローラ」ページにアクセスするには:
Enterprise Manager Fusion Middleware Controlを起動します。
「Forms」ホームページで、「JVMコントローラ」を選択します。
「JVMコントローラ」ページ(図10-5)が表示されます。
実行中でないJVMコントローラを起動するには:
「Forms」メニューで、「JVMコントローラ」を選択します。
「JVMコントローラ」ページが表示されます。
起動するJVMコントローラを選択します。実行されていないJVMコントローラには赤い下矢印が表示されています。
「起動」をクリックします。
JVMコントローラが起動すると、「ステータス」に緑色の上矢印(図10-5)が表示されます。
実行中のJVMコントローラを再起動するには:
「Forms」メニューで、「JVMコントローラ」を選択します。
「JVMコントローラ」ページが表示されます。
再起動するJVMコントローラを選択します。
「再起動」をクリックします。
「確認」ダイアログで「はい」をクリックします。
「JVMコントローラ」ページが再表示されます。
JVMコントローラが再起動すると、「ステータス」に緑色の上矢印が表示されます。
JVMコントローラを停止するには:
「Forms」メニューで、「JVMコントローラ」を選択します。
「JVMコントローラ」ページが表示されます。
停止する対象となる実行中のJVMコントローラ(緑色の上矢印で表示されているコントローラ)を選択します。
「停止」をクリックします。
「確認」ダイアログで「はい」をクリックします。
JVMコントローラが停止すると、「ステータス」に赤色の下矢印(図10-5)が表示されます。
JVMコントローラのその他の詳細を表示するには:
「Forms」メニューで、「JVMコントローラ」を選択します。
「JVMコントローラ」ページが表示されます。
JVMコントローラの横にあるプラス記号をクリックします。行が開き、JVMコントローラに関する追加の詳細(図10-5)が表示されます。
この項では、アプリケーションでのJVMコントローラの使用を有効または無効にするためにForms構成ファイル(formsweb.cfg
)で使用するJVMプーリング・パラメータについて説明します。パラメータ名には大/小文字の区別はありません。Fusion Middleware Controlを使用して、Forms構成ファイルを管理できます。
表10-5「Oracle FormsのJVMコントローラ起動パラメータ」に、formsweb.cfg
ファイルで指定する起動オプションを示します。
formsweb.cfg
でのパラメータの変更の詳細は、第4.2.4項「パラメータの管理」を参照してください。
表10-5 Oracle FormsのJVMコントローラ起動パラメータ
パラメータ | 説明 |
---|---|
|
有効値: jvmcontrollerの名前。空白のままにしてJVMを指定しないこともできます。 デフォルト値はありません。 注意: このパラメータはデフォルト・セクションでグローバルに設定することも、アプリケーション・セクションを選択してオーバーライドすることもできます。これによって、Formsランタイム・プロセスで使用するJVMコントローラが決まります。dejvm実行可能ファイルの
|
|
有効値: デフォルト値: true JVMコントローラを使用するようにFormsが構成されていて、そのJVMコントローラが実行されていない場合、このパラメータにより、Oracle FormsでJVMコントローラを実行することができます。 |
この例では、複数のアプリケーションで複数のJVMを使用する環境を示します。
表10-6に示すように、formsweb.cfg
は4つの構成セクションで構成されます。
図10-6 複数のアプリケーションで使用する複数のJVM
名前を付けた構成セクション | JVM構成 |
---|---|
|
|
ordersApp |
なし |
hrApp |
|
salesApp |
|
ユーザーが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に示すようにメモリーの消費量が多くなります。
ロギングを有効にすると、JVMコントローラは次のような情報をログ・ファイルに記録します。
JVMパラメータ(maxsessions、classpathなど)の値。
JVMコントローラが起動および終了した日時。
子JVMが生成された日時。
Formsランタイム・プロセスが新規の接続を開始した日時とそのプロセスID。
この情報は、診断または管理の目的でどのFormsランタイム・プロセスがどのJVMコントローラに接続されているかを調べるうえで役立ちます。
Formsランタイム・プロセスのセッションが終了しJVMとの接続が解除された日時。
この項は、次の小項目に分かれています。
Fusion Middleware Controlを使用して、JVMコントローラのロギング・プロパティを管理します。
「JVM構成」ページで、JVM構成セクションを選択します。
「ロギング」パラメータに、「オン」または「オフ」を入力します。
「適用」をクリックします。
ログ・ファイルのディレクトリはJVMコントローラで指定できます。また、他のJVMコントローラが使用するデフォルトJVMコントローラのログ・ファイル・ディレクトリも指定できます。
ログ・ファイルのディレクトリの場所を指定するには:
JVMコントローラを作成します。詳細は、第10.8.2.2項「新しい構成セクションの作成」または第10.8.2.4項「名前を付けた構成の複製」を参照してください。
「ログ・ディレクトリ」パラメータを追加します。詳細は、第10.8.3項「パラメータの管理」を参照してください。
「ログ・ディレクトリ」パラメータが定義されている名前の付いた構成セクションを複製した場合は、第10.8.3項「パラメータの管理」にあるように、既存のそのパラメータを編集できます。
「適用」をクリックして変更を保存します。
「JVM構成」ページが再表示されます。
ログ・ファイルが存在する場合は、「ログ・ファイル」列にアイコンが表示されます。
ログ・ファイルにアクセスするには:
該当のJVMコントローラで使用可能な「ログ・ファイル」列の「ログ・ファイル」リンクをクリックします。
「ログ・ファイル」ページが開き、そのログの情報が表示されます。
Fusion Middleware Controlを使用して、ログ・ファイルを削除します。
JVMコントローラのログ・ファイルを削除するには:
「JVMコントローラ」ページで、ターゲットJVMを選択します。
「ログ・ファイルを削除」をクリックします。
「削除の確認」ダイアログが表示されます。
「削除」をクリックします。
ログ・ファイルが削除され、「JVMコントローラ」ページが再び表示されます。
注意: 実行中のJVMのログ・ファイルを削除した場合、JVMを再起動すると、そのログ・ファイルが再び使用可能になります。ロギングを可能にするには、JVMを再起動する必要があります。 |
FormsでのReportsの統合にはJVMコントローラ(dejvm
)を使用します。Reports Serverでのレポートの実行、レポートのステータスの取得、Reports出力の取得、Reports Serverに送信したジョブのキャンセルなど、Reportsに関するすべてのリクエストはdejvmにルーティングされ、dejvm対応のランフォームがReportsをコールします。
Reportsの統合でdejvm
を使用するには、次の手順を実行します。Oracle FormsからReportsを直接コールする場合、この設定は不要です。
Reportsの統合にdejvmを使用するには:
formsweb.cfg
でJVMプーリングを有効にします。詳細は、第10.8.6項「Forms構成ファイル設定」を参照してください。
Reportsの統合では、2つの.jar
ファイルがdejvm
で別途必要です。jvmcontrollers.cfg
で、クラスパスにこの2つのJARファイル、zrcclient.jar
($ORACLE_HOME/jlib/zrclient.jar
)とrwrun.jar
($ORACLE_HOME/reports/jlib/rwrun.jar
)を追加します。
注意: JVMコントローラを使用してレポートを実行する場合にReports Serverの名前を返すようにするには、次に示すようにREPORTS_SERVERMAP環境変数をjvmcontrollers.cfgに定義する必要があります。 [myjvm] jvmoptions=-DREPORTS_SERVERMAP=<value> <other-jvmoption-parameters> |