ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発
12c (12.1.2)
E48100-01
  目次へ移動
目次

前
 
次
 

10 ADF Swingアプリケーションの実行時パフォーマンスの最適化

この章では、ADF Swingアプリケーションの実行時のパフォーマンスを向上する方法について説明します。最適なパフォーマンスを得るためのデータ同期手法だけでなく、ADF SwingアプリケーションでのADFビジネス・コンポーネント属性のフェッチを制限する手法について説明します。

この章の構成は、次のとおりです。

10.1 ADF Swingアプリケーションの実行時パフォーマンスの最適化について

ADF Swingコードでメソッド・コールを行い、クライアントとリモート・デプロイメント・モードのADFビジネス・コンポーネント・ビジネス・サービスとの間のネットワーク・トラフィックを最適化できます。

10.2 ADF SwingからADFビジネス・コンポーネントへの更新を遅延する方法

JDeveloperのデザイン・タイム・ツールで作業しているユーザーは、デフォルトでこの項で説明する最適化を得られます。

ただし、JDeveloperの外部で、ADFビジネス・コンポーネントに対して提供されているAPIを使用してアプリケーションを開発しており、JDeveloperデザイン・タイムを使用してADF Swingクライアントを作成していない場合は、これらの最適化の実行が必要になることがあります。

ADFビジネス・コンポーネント・アプリケーション・モジュールのデータ同期モードをバッチに設定することで、ADFビジネス・コンポーネント・クライアント・アプリケーションからリモートにデプロイされたビジネス・コンポーネントに送信される実行頻度の少ない検証を犠牲にすると、ネットワーク・トラフィックを向上させることができます。バッチ・モードとは、ユーザーによって行われた属性値の変更が、その変更の送信を強制するアクションをユーザーが実行するまでクライアント層に保持されることを意味します。バッチ・モードは、遅延同期モードとも呼ばれ、ネットワーク上のトリップ回数を削減します。その結果、ADFビジネス・コンポーネントによる属性の検証が遅延します。

データ同期は、デフォルトでは"即時"モードであり、変更は行われるとただちに適用され、その結果、属性値は即時に検証されます。


注意:

ローカル・モード・デプロイメント(クライアントとADFビジネス・コンポーネントが同じVM上に常駐する)では、同期モードが常に"即時"です。


JDeveloper内で、クライアントの同期設定を変更する手順は次のとおりです。

  1. 「アプリケーション」ウィンドウで、表示モードを「ディレクトリの表示」に変更し、ユーザー・インタフェース・プロジェクトを開き、DataBindings.cpxファイルを選択します。

    DataBindings.cpxファイルが、ユーザー・インタフェース・プロジェクトのadfmsrcフォルダに追加されます。

  2. 「構造」ウィンドウで、dataControlUsagesを開き、目的のデータ・コントロールを選択します。

  3. 「プロパティ」ウィンドウで「その他」セクションを開き、「syncMode」フィールドのドロップダウン・リストから目的の設定を選択します。

アプリケーション・モジュールの同期モードを設定する手順は次のとおりです(JDeveloperデザイン・タイムの外部の場合)。

ApplicationModuleImplを拡張するクラス内である場合は、それによってApplicationModuleインタフェースが実装されるため、単に例10-1に示すコードを追加できます。

例10-1 クラスによってApplicationModuleImplが拡張される場合のコード

ApplicationModule yourAm = panelBinding.getApplication().getApplicationModule();
yourAm.setSyncMode(SYNC_LAZY); 

ただし、別のクラス内(たとえば、クライアント・コード内)である場合は、例10-2のように、それが出現するインタフェースでその定数を修飾する必要があります。

例10-2 別のクラス内の場合のコード

ApplicationModule yourAm = panelBinding.getApplication().getApplicationModule();
yourAm.setSyncMode(ApplicationModule.SYNC_LAZY);

ADF Swingブートストラップ・コードで、データ・コントロール・オブジェクトを作成後、ただちにsetSyncMode()をコールする必要があります。または、getApplication()をコールし、ADF Swingパネルのコンストラクタで同期モードを設定できます。選択する場所は、同期モードをアプリケーション全体で保持するのか、パネルのレベルで変更するのかによって異なります。

10.3 同期モード・プロパティに関する必知事項

ApplicationModuleに対してプログラムでデータの同期を設定することに決定した場合は、ADFビジネス・コンポーネント・データ・コントロールのsyncModeプロパティ設定で行われる相互作用に注意する必要があります。存在する有効な組合せは次の3つのみです。

10.4 ADF SwingでのADFビジネス・コンポーネント属性のフェッチを制限する方法

JDeveloperのデザイン・タイム・ツールで作業しているユーザーは、デフォルトでこの項で説明する最適化を得られます。

ただし、JDeveloperの外部で、ADFビジネス・コンポーネントに対して提供されているAPIを使用してアプリケーションを開発しており、ビュー・オブジェクト・メタデータ(XMLファイル)を作成しない場合は、これらの最適化の実行が必要になることがあります。

クライアントが使用するビュー・オブジェクト属性のリストを指定することで、ADFビジネス・コンポーネント・クライアント・アプリケーションおよびリモートにデプロイされているビジネス・コンポーネントの起動時間を最適化できます。APIにコーディングすることでメタデータなしでプロジェクトを作成する場合、フォームによって使用される属性のみのリストでfetchAttributeProperties()をクライアント・フォームのブートストラップ・コードに追加します。このメソッド・コールがない場合、クライアント・フォームは、1回のネットワーク・ラウンドトリップで、アプリケーション・モジュールで指定されているビュー・オブジェクトのすべての属性のすべてのコントロール・ヒント・プロパティ(たとえば、属性の書式やラベルなど)がフェッチされます。

たとえば、ADF Swingフォームのバインドされたビュー・オブジェクトの一部の属性を使用しない場合、fetchAttributeProperties()メソッドで、ADF Swingフォームは、フォームのレイアウトに必要な情報のみをフェッチし、不要な属性は無視します。


注意:

ローカル・モード・デプロイメント(クライアントとADFビジネス・コンポーネントが同じVM上に常駐する)では、属性プロパティのフェッチはサポートされていません。


属性プロパティの取得を最短時間にする手順は次のとおりです(JDeveloperデザイン・タイムの外部の場合)。