フォームで使用するビュー・オブジェクト属性のリストを指定すると、JClientアプリケーションとリモートにデプロイされたビジネス・コンポーネントの起動時間を短縮できる場合があります。作成したJClientアプリケーションでは、特にデータ・フォームにバインドされたビュー・オブジェクトの一部の属性しか使用しない場合、ビジネス・コンポーネントへのラウンドトリップ回数が必要以上に多くなることがあります。JClientフォームのコンストラクタを変更すると、クライアントがフォームのレイアウトに必要なメタデータのみをフェッチし、不要な属性のメタデータは無視するように設定できます。この操作は1回のラウンドトリップで完了し、フォームが作成されるたびにビジネス・コンポーネント属性定義に対してgetFormat()
やgetLabel()
などのプロパティ・メソッドがコールされないようにします。
注意: ローカル・モード・デプロイ(クライアントとビジネス・コンポーネントが同一のVMに存在する場合)では、属性プロパティのフェッチはサポートされていません。
属性プロパティを取得するためのネットワーク・コールを最小限に抑えるには、次のようにします。
fetchAttributeProperties()
をコールし、次のように設定します。
このメソッドは、ビュー・オブジェクト名のリストと、各ビュー・オブジェクトの属性名のリストを引数としてとります。リストには属性のすべてまたは一部を含めることができます。フォームでビュー・オブジェクトのすべての属性が必要とされる場合は、属性の引数としてnullを指定します。この場合、ビュー・オブジェクトのすべての属性がフォームで使用されるため、起動時間はそれほど短縮されません。
JClientブートストラップ・コード内で、JUApplicationオブジェクトの作成直後にfetchAttributeProperties()
をコールします。次の例では、最初のビュー・オブジェクトの3つの属性と2番目のビュー・オブジェクトの5つの属性に対するカスタム・プロパティがダウンロードされます。
// bootstrap application
JUMetaObjectManager.setBaseErrorHandler(new JUErrorHandlerDlg());
JUApplication app =
JUMetaObjectManager.createApplicationObject("MyProject.MyAppModule", null,
new JUEnvInfoProvider());
JUPanelBinding panelBinding = new JUPanelBinding("MyProject.MyAppModule",
topPanel);
app.getApplicationModule().fetchAttributeProperties(new String[]
{"VO1", "VO2"}, new String[][]
{
{"VO1Attr1", "VO1Attr2", "VO1Attr3"},
{"VO2Attr1", "VO2Attr2", "VO2Attr3", "VO2Attr4", "VO2Attr5"}
}, null);
panelBinding.setApplication(app);
topPanel.setPanelBinding(panelBinding);
panelBinding.execute();
...