設計時の考慮事項
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ラッパーでもこれまでどおりに機能します。
複数のJVM間での静的変数の共有について
JVMプーリングのメリットの1つに、同一クラスの複数のインスタンス間で静的変数を使用してデータを共有する機能があります。ただし、静的変数は1つのJVM内の同一クラスのインスタンス間で共有され、複数のJVM間では共有されません。この条件に従って計画を立案する必要があります。
たとえば、ローン・クラスのすべてのインスタンスで同じ金利を使用して計算を実行するという理由で、interestRate
という静的変数が用意されているとします。JVMを1つのみ使用する場合は、ローン・クラスの1つのインスタンスでinterestRate
が変更されると、その他のすべてのインスタンスが影響を受けます(これは意図した動作です)。
ただし、JVMコントローラに1つ以上の子JVMが存在する場合は、2つ以上のJVMが存在する場合があります。1つのJVMでinterestRateが変更されても、他のJVMにあるローン・インスタンスでは新しい値が認識されません(「子JVMプロセス」を参照)。JVMプーリングを使用しておらず、interestRateを変更した場合は、各Oracle Formsのランタイム・プロセスが個別にインプロセスJVMを持つため、その変更により他のインスタンスは影響を受けません。
静的変数を使用してクラスの複数のインスタンス間で情報を共有する場合は、maxsessions
を65535
に設定して、子JVMが生成されないようにしてください。