Skip navigation.

最適なパフォーマンスを得るためのポータルの設計

  前 次 前と次、目次/インデックス/pdf を分けるコロン 目次  

最適なパフォーマンスを得るためのポータルの設計

パフォーマンスは、エンタープライズレベルのソフトウェア ソリューションを採用するときに必ず問題になります。WebLogic Portal も例外ではありません。ただし、パフォーマンスの問題の多くは製品の欠陥によるものではなく、アプリケーション開発の設計段階において決定を誤った結果です。適切なプランニングにより、WebLogic Portal の特長を利用して、ポータルの最適なパフォーマンスを実現することができます。

通常、ポータルのパフォーマンスは、訪問者が画面のオブジェクトをクリックしたとき (つまりポータル サーブレットにリクエストを送信したとき) に、ポータルとそのすべての構成要素が実際に表示されるまでにかかる時間で測定されます。さまざまな理由で、予期されるシステムの応答が悪影響を受けることがあります。いずれも適切な設計によって容易に対処および修正できますが、中でも最大の理由はポータルのレイアウトと設計です。

このドキュメントでは、いくつかの概念について説明し、高パフォーマンスのポータルを作成するためのヒントや実例を示します。このドキュメントは、次の節で構成されています。

 


コントロール ツリーの設計

ポータルのパフォーマンスに対する最大の障害は、ポータルのコントロールの数です。ポータルのコントロール (ページ、ポートレット、ボタンなど) が多くなると、コントロール ツリーが大きくなります。ポータルで使用可能なコントロールの詳細については、次の URL にある「ポータル コントロール」を参照してください。

http://edocs.beasys.co.jp/e-docs/wlp/docs81/whitepapers/netix/body.html#1061553 

コントロール ツリーの仕組み

ポータルがインスタンス化されるときに、分類、すなわちポータル リソース (デスクトップ、ブック、ページ、ポートレットなど) の階層が生成されます。各リソースは、図 1 のようにコントロール ツリーのノードとして表されます。

図 1 単純なポータルの図


 

この例では、1 つのポータルに 1 つのメイン ブックがあり、その中に 6 つのサブブックが含まれています。各サブブックにはそれぞれ 2 つのページがあり、各ページはそれぞれ 2 つのポートレットを含みます。これだけでも、このポータルのコントロールは少なくとも 42 になります。ボタン、ウィンドウ、メニュー、およびレイアウトを含めると、ポータルのコントロール数は大幅に増加します。

注意 : この例は、極めて単純化したものです。エンタープライズ ポータルに含まれるコントロールは数千に及ぶことがあります。

コントロール ツリーのパフォーマンスへの影響

コントロール ツリーが構築され、すべてのインスタンス変数がコントロールに設定されたら、ポータル全体を表示する前に、ツリーが各コントロールのライフサイクルを実行する必要があります。ライフサイクル メソッドは、深さ優先順で呼び出されます。つまり、各コントロールの init() メソッドがすべて呼び出されてから、各コントロールの loadState() メソッドが呼び出されるというように続きます。順序は、ポータルの分類における各コントロールの位置によって決まります。たとえば、図 2 のコントロール ツリーに示される分類は、ブック (B1)、ブックに含まれる 2 つのページ (P1 および P2)、各ページに含まれる 2 つのポートレット (p1 ~ p4) で構成される単純なポータルです (p2 にはさらにサブブック、ページ、ポートレットの階層も含まれています)。

図 2 コントロール ツリーとライフサイクル メソッド


 

このポータルが表示されるとき、init() メソッド (_nfpb=true の場合は handlePostBackData() も) が各コントロールで最初に呼び出されます。順序は、B1、P1、p1、p2、B2、P3、p5、p6、P2、p3、p4 の順です。次に、loadState() メソッドが同じ順序で呼び出されます。同様に、saveState() まですべてのライフサイクル メソッドが呼び出されます。

注意 : コントロールのライフサイクル メソッド preRender()render()、および dispose() は、表示されるコントロールのみで呼び出されます。

ライフサイクルを通して各コントロールを実行するには、オーバーヘッドの処理時間が必要になります。コントロールが数千に及ぶポータルであれば、処理時間も比例して長くなります。このように、ポータルのコントロール ツリーが大きくなると、パフォーマンスへの影響も増大することがわかります。

 


複数のデスクトップの使用

SP3 および以前のバージョンの WebLogic Portal でポータルの柔軟性を損なわずにコントロール ツリーのサイズを制限する最も単純な方法は、ポータルを複数のデスクトップに分割することです。ポータルの分類では、デスクトップは、別のポータルに埋め込まれたポータルとして扱われます。デスクトップは、ポータルに備わっているすべての機能を活用することができ、その中に別のデスクトップを含むことができます。

複数のデスクトップを使用する理由

複雑なポータルを複数のデスクトップに分割すると、コントロールがそれぞれのデスクトップに分散されます。コントロール ツリーは個々のポータルに相当し、デスクトップはポータルと同様の動作をします。このため、各デスクトップが独自のツリーを持ち、そのツリーのコントロールはそのデスクトップが開かれたときにのみ構築されます。このように、大きなコントロール ツリーを持つ複雑なポータルを複数のデスクトップに分割することで、ツリーのコントロール数が、アクティブなデスクトップで必要な数にまで削減されます。つまり、ポータルを 1 つのデスクトップとして表示するために必要な時間が短縮し、ポータルのパフォーマンスが向上します。

ポータルが表示されるとき、処理時間の 15% はコントロール ツリーの構築に使用されます。ライフサイクル メソッドの実行には 70%、ガベージ コレクション (ヒープから不要なオブジェクトを消去して、新しいオブジェクトのために領域を解放するプロセス) には 15% が使用されます。構築とガベージ コレクションは常に実行されますが、ライフサイクル メソッドの実行は表示されるコントロール (デスクトップ上に見えているコントロール) についてのみです。したがって、複数のデスクトップの使用は、オーバーヘッドを大幅に節約し、システムのパフォーマンスの向上につながります。

たとえば、図 1 に示すコントロール ツリーの例は、42 のコントロールを含む 1 つのポータルを表します。このポータルを図 3 のように複数のデスクトップに分割した場合、ポータル全体でのコントロール ツリー数は増加しますが、各ツリーの大きさは約 3 分の 2 に縮小し、処理時間もおよそ 3 分の 2 になり、ポータルの表示に必要な時間が大幅に短縮されます。

図 3 複数のデスクトップに分割された単純なポータル


 

図 4 は、図 3 の例を開いたときにどのように表示されるかを示します。

図 4 複数のデスクトップによるコントロール ツリー サイズの縮小


 

複数のデスクトップを使用する際の設計上の決定

これらの例が示すように、複雑なポータルを複数のデスクトップに分割すると、パフォーマンスの向上の面では非常に効果的です。ただし、複数のデスクトップに分割する追加作業を考慮した場合、必ずしもすべてのポータルで有効な手段であるとは言えません。複数のデスクトップを使用してポータルを実装する前に、設計上の重要な決定事項について考慮する必要があります。以下に例を示します。

デスクトップの作成の詳細については、次の URL にある WebLogic Portal Administration Portal オンライン ヘルプ システムの「デスクトップを作成する」を参照してください。

http://edocs.beasys.co.jp/e-docs/wlp/docs81/adminportal/help/PM_DesktopCreate.html

 


コントロール ツリーの最適化

WebLogic Portal 8.1 SP4 で、コントロール ツリーの最適化という概念が導入されました。ツリーの最適化とは、コントロール ツリーを表示するときに、システムのオーバーヘッドを最小限に抑えながらも、ユーザがポータル インスタンスを正常に使用するために必要なすべてのポータル コントロールを提供するようにすることです。

コントロール ツリー最適化を有効にする

コントロール ツリーの最適化を有効にするには、コード リスト 1 に示すように、.portal ファイルの treeOptimizationEnabled フラグを true に設定します。

コード リスト 1 .portal でツリー最適化を有効にする

<desktop> element:
<netuix:desktop definitionLabel="defaultDesktopLabel"
markupName="desktop" treeOptimizationEnabled="true"
markupType="Desktop" title="SimplePortal"><netuix:lookAndFeel
definitionLabel="defaultLookAndFeel">
<netuix:desktop/>

注意 : .portal ファイルに treeOptimizationEnabled= が含まれない場合、ポータルはデフォルトで treeOptimizationEnabled=false になります。

このフラグを "true" に設定すると、ポータル フレームワークによってコントロール ツリーの全体ではなく一部が生成されます。この部分的なツリーは、表示されてアクティブになるコントロールだけで構成されます。このように、表示する必要があるコントロールが減るため、処理時間とコストを大幅に削減できます。

注意 : 新しいデスクトップのデフォルト値は treeOptimizationEnabled="true" です。この場合は何も設定する必要はありません。

現在のページを設定する

フラグが実際に機能するためには、コード リスト 2 のように、ファイル url-template-config.xml (<PORTAL_HOME>/webAppName/WEB-INF にある) で <url-template> 要素に {url:currentPage} が設定されていることが必要です。

注意 : WebLogic Workshop で新しいプロジェクトを作成すると、currentPage が自動的に追加されます。ただし、以前のバージョンの WebLogic Portal から移行している場合は、url-template-config.xml を手動で更新する必要があります。


 

コード リスト 2 url-template-config.xml の URL テンプレート コンポーネント

<!-- URL templates -->
<url-template name="default">
{url:scheme}://{url:domain}:{url:port}/{url:path}?{url:queryString}
{url:currentPage}
</url-template>
<url-template name="proxyurl">
{url:scheme}://{url:domain}:{url:port}/{url:prefix}/{url:path}?
{url:queryString}{url:currentPage}
</url-template>
<url-template name="finurl">
https://fin.domain.com:7004/{url:prefix}/{url:path}?{url:queryString}
{url:currentPage}&dept=finance
</url-template>
<url-template name="default-complete">
{url:scheme}://{url:domain}:{url:port}/{url:prefix}/{url:path}?
{url:queryString}{url:currentPage}
</url-template>
<url-template name="jpf-default">
http://{url:domain}:{url:port}/{url:path}?{url:queryString}
{url:currentPage}
</url-template>
<url-template name="jpf-action">
http://{url:domain}:{url:port}/{url:path}?{url:queryString}
{url:currentPage}
</url-template>

ツリー最適化の仕組み

ポータル サーブレットはリクエスト (マウスのクリック) を受け取ると、キャッシュを読み取って、コントロール ツリー ファクトリが存在するかどうかを判断します。存在しない場合は、controlTreeFactoryBuilder を呼び出し、.portal ファイルから XML を渡します。このクラスがコントロール ツリー ファクトリをサーブレットに返し、サーブレットがリクエストを CreateUIControlTree クラスに渡します。

_pageLabeltreeOptimizationEnabled="true" が設定されている場合、CreateUIControlTreeFactoryPartialUIControlTreeCreator() メソッドを呼び出し、このメソッドは、指定のページ ラベルおよびアクティブなページとブックのラベルのセットで識別されるコントロールのみで構成されるコントロール ツリーを返します。これが、部分的なコントロール ツリーです。

たとえば、図 1 のポータルでツリー最適化が有効になっている場合、リクエストを発行する (マウスをクリックする) と、図 7 のようにアクティブなコントロールのみが表示されます。

図 7 ツリー最適化によるコントロール ツリー サイズの縮小


 

saveState() ライフサイクル メソッドの実行時に、このセッションでアクティブなページとブックのラベルのセットが格納されて、構築するコントロールが PartialUIControlTreeCreator() に通知されます。これらのコントロールのみが構築され、ポータルのそれ以外のコントロールは無視されます。結果として、コントロール ツリーを最適化すると、構築する必要のあるコントロールが減少するため、処理オーバーヘッドが大幅に削減され、パフォーマンスが大いに向上します。

ツリー最適化を使用する際の制約

WebLogic Portal 8.1 SP4 では、大量のコントロールを必要とする複雑なポータルを作成する場合に最適なポータル パフォーマンスを実現する最も簡単な方法は、ツリーを最適化することです。現在のポータル インスタンスでアクティブでないコントロールは構築されないので、時間とオーバヘッドが大幅に減少します。ただし、ツリー最適化によってポータルの動作が少し変化することや、ポータルの実装によってはツリー最適化を使用することが有効であるとは限らないことに注意してください。以下に例を示します。

これらの条件に十分に注意し、必ず事前にポータルで完全なリグレッション テストを実行してから、treeOptimizationEnabledtrue に設定してください。上記のいずれかの問題が発生した場合は、ポータルの設計を再考するか、ツリー最適化を完全に無効にする必要があります。

ツリー最適化を無効にする

これまで説明したように、コントロール ツリーの最適化はほとんどのポータルに効果的ですが、場合によっては動作の制約があるために無効にする必要があります。最適化を無効にすると、リクエストのたびにポータルによってコントロール ツリー全体が作成されます。このとき大規模なポータルではパフォーマンスに大きな影響が出ることに注意してください。予期されるパフォーマンスの低下が、機能の向上で埋め合わせられるかを判断する必要があります。

ツリー最適化を無効にするには、以下のいずれかを実行します。

PostbackURL url = PostbackURL.createPostbackURL(request, response);
url.addParameter(GenericURL.TRE_OPTIMIZATION_PARAM, "false");

 


パフォーマンスを向上させるその他の方法

WebLogic Portal では、コントロール ツリーを効果的に使用してポータルの分類を管理する他にも、パフォーマンスを向上させる方法があります。これらのソリューションはすべて、複数のデスクトップやコントロール ツリーの最適化と組み合わせて使用でき、ポータルの優れたパフォーマンスを実現します。この節では、WebLogic Portal で提供される最も効果の高いパフォーマンス向上ソリューションについて説明します。

資格を慎重に使用する

資格によって、ポータル アプリケーション内のリソースにどのユーザがアクセスできるか、そのリソースに対してユーザが何をできるかが決定されます。このアクセスはアプリケーションの訪問者に割り当てられているロールに基づいており、これによって柔軟なリソース管理が可能になります。たとえば、「従業員レビュー」というポートレットがある場合、「マネージャ」という訪問者の資格ロールを作成してポートレットに割り当てると、ログインしたユーザのうち、そのロールに属するユーザのみがポートレットを表示できます。

アプリケーションを訪問するユーザには、ユーザ名、ユーザが属するグループ、日時、またはユーザのプロファイルの特徴などを含む条件式に基づいて、ロールが割り当てられます。たとえば、マイレージ サービスの参加者で前年に 50,000 マイル以上搭乗したユーザに「ゴールド メンバー」ロールを割り当てることなどができます。このロールは、ユーザがサイトにログインしたときに動的に割り当てられます。

パフォーマンスへの資格の影響

ポータルの最適なパフォーマンスを実現するためには、資格を慎重に使用する必要があります。資格が多すぎると、パフォーマンスに大きく影響します。資格エンジンは、処理の表示フェーズで呼び出され、システムのオーバーヘッドとルールをチェックする必要があるためです。このチェックによってさらにシステムのオーバーヘッドが増加するため、ポータルでチェックが頻繁に必要になると、パフォーマンスが影響を受けます。また、資格エンジンは管理タスクの管理も行うため、これによってもオーバーヘッドが増加し、パフォーマンスが低下します。

WebLogic Portal 8.1 Service Pack 4 以降のリリースでは、資格を LDAP ではなくデータベースに格納することにより、資格に関連するパフォーマンスが向上しています。その場合でも、資格が多すぎるとパフォーマンスの低下につながることに常に注意する必要があります。

資格を使用する際の推奨事項

資格を慎重に使用するための、簡単な推奨事項を以下に示します。

http://edocs.beasys.co.jp/e-docs/wlp/docs81/perftune/4PortalApplication.html#1073678

ユーザによるカスタマイズを制限する

ユーザ (訪問者) が変更できる対象を 1 ページまたは数ページのセットだけに制限し、残りのページは管理者が管理することをお勧めします。

ユーザがページをカスタマイズすると、ユーザはそのページのユーザ独自のインスタンスを取得します。カスタマイズされていない他のすべてのページは、元のライブラリ インスタンスを指します。管理者がページに変更を加えた場合、そのページをカスタマイズした各ユーザに対してその変更を繰り返し処理する必要があります。多くのユーザがそのページを変更した場合は、データベース処理が必要であるため、変更を伝播するのに時間がかかります。

ページ フロー セッションの占有量を最適化する

レプリケートされたクラスタ環境では、ポータルでページ フロー ポートレットを使用すると、パフォーマンスの問題が発生することがあります。これらのポートレットに追加するリクエスト属性が、ページ フロー ポートレットの状態のコンポーネントとしてセッションに永続化されることがあるためです。追加するリクエスト属性が増えると、セッションのサイズが大きくなり、パフォーマンスが厳しく制約される可能性があります。

ページ フロー ポートレットは、ポータル フレームワーク内で、スコープ サーブレット環境によってホストされます。この環境は、サーブレット コンテナとして効果的に機能しますが、その動作のために、ページ フロー状態を永続化するコンテナ クラス内で、リクエスト属性のスコープがセッションに設定されます。これが特に望ましくないのは、大容量のデータ (このようなページ フロー ポートレットのリクエスト属性を含む) がクラスタ上でレプリケートされる場合です。

このような環境でパフォーマンスを向上させるために、WebLogic Portal 8.1 Service Pack 4 以降ではページ フロー ポートレットに requestAttrPersistence 属性が用意されています。requestAttrPersistence.portlet ファイルに含まれており、WebLogic Workshop のプロパティ エディタで設定できます。

requestAttrPersistence には次の値があります。

ページ フロー ポートレットについてリクエスト属性の永続性の属性を設定するには、図 8 のように、WebLogic Workshop のプロパティ エディタで [ページ フロー コンテンツ] グループの下の [リクエスト属性の永続性] ドロップダウンを開き、必要な値を選択します。

図 8 リクエスト属性の永続性の属性の選択


 

単純なアプリケーションにはファイルベース ポータルを使用する

ポータルには、ファイルベースとストリーミングの 2 種類があります。ファイルベースのポータル (「ライト ポータル」とも呼ばれる) は、名前のとおりユーザのファイル システムからすべてのリソースを取得します。これに対して、ストリーミング ポータルは、リソースを 1 つ以上のデータベースから導出します。ファイルベース ポータルは開発時の使用を目的としていますが、静的ポータル (エンド ユーザや管理者のカスタマイズを必要としないポータル) またはごく単純なファイルを作成する場合は、プロダクション環境でもパフォーマンスが若干向上すると考えられます。

ファイルベース ポータルを使用する理由

単純な静的ポータルでは、ファイル システムからリソースを導出するため、パフォーマンスが向上し、次の利点が得られます。

ファイルベース ポータルを使用する際の制約

ファイルベース ポータルは、ストリーミング ポータルと比較してパフォーマンスが向上しますが、機能は限られます。たとえば、データベースを使用しないため、ユーザ カスタマイズや資格などの機能は利用できません。この他にファイルベース ポータルにない機能を以下に示します。

さらに、ほとんどのケースにおいて、ファイルベース ポータルの使用によるパフォーマンスの向上は、これらの制限の埋め合わせになるとはいえません。

開発時にプロダクション ドメインを作成する

この方法は実行時のパフォーマンス向上に直接はつながりませんが、アプリケーションをプロダクション環境に伝播する前にアプリケーションの実行の様子を確認することができます。開発時にプロダクション ドメインを作成することで、プロダクション環境でのポータルのパフォーマンスをシミュレートおよび評価できます。その後、必要な調整を行ってから、実際にポータルをデプロイすることができます。問題が発生する場合、またはパフォーマンスが最適ではない場合は、エンド ユーザに届く前にそのような状況を修正できます。

プロダクション ドメインを作成するには、起動スクリプトを更新します。WLS_PRODUCTION_MODE= フラグを true に設定し、次のフラグを false に設定します。

また、threadcount と JDBCConnectionPool のサイズにはデフォルト値を設定する必要があります。ポートレットをスレッド化 (forkable=true を使用) する場合、config.xml ファイルで portalRenderQueueportalPreRenderQueue をコンフィグレーションし、フォークされたポートレットが WebLogic スレッド プールではなく独自のスレッド プールを使用するようにします。次のコード例は、スレッド数を適切に設定する方法を示します。

<ExecuteQueue Name="default" ThreadCount="15"/>
<ExecuteQueue Name="portalRenderQueue" ThreadCount="5"/>
<ExecuteQueue Name="portalPreRenderQueue" ThreadCount="5"/>

リモート ポートレットを使用する

プロキシすなわち「リモート」ポートレットを実装すると、パフォーマンスが若干向上することがありますが、この方法にも制約が伴います。リモート ポートレットは、WSRP (Web Services for Remote Portlets) によって使用できるようになります。WSRP は、WebLogic Portal 8.1 Service Pack 3 から導入された Web サービス規格であり、これにより、ユーザ インタフェースを持つビジュアル Web サービスを、ポータルまたは他の仲介 Web アプリケーションと「プラグ アンド プレイ」することができます。これにより、エンタープライズから遠く離れた場所にあるアプリケーションでも WSRP 準拠プロデューサから実行して、ポータルにアプリケーションを表示することができます。

WSRP の使用の詳細については、次の URL にある「WebLogic Portal での WSRP の使用」を参照してください。

http://edocs.beasys.co.jp/e-docs/wlp/docs81/wsrp/index.html

リモート ポートレットによるパフォーマンス向上

リモート ポートレットを使用すると開発時間を短縮できますが (実際にポートレットのコンテンツを開発する必要がなく、コンテナのみを開発すればよいため)、パフォーマンスに関する主なメリットは、取得するアプリケーション (ポートレット) 内のすべてのコントロールがポータルではなくプロデューサによって表示されるという点です。コントロールのライフサイクル メソッドを呼び出すコストは、ポータルに関連しないリソースが負担します。

リモート ポートレットの使用によってポータルのパフォーマンスが向上しますが、デメリットもあります。以下に例を示します。

ポータルを表示するコストが転送のコストを上回り、上記のその他の制約がアプリケーションで特に重要でない場合は、リモート ポートレットによってポータルのパフォーマンスが向上します。

ポートレットをカスタマイズして最適化機能を利用する

ポートレットの設定をカスタマイズすると、パフォーマンスの問題を回避することに役立つ場合があります。具体的には、以下のことができます。

表 1 は、WebLogic Workshop でポートレットを作成および変更するときに使用できる、パフォーマンス関連のポートレット プロパティを示しています。ポータル管理者がキャッシュ設定と表示オプションを調整できるようにポートレットが設計されている場合は、Administration Portal でこれらのプロパティを変更できます。

表 1 パフォーマンス関連のポートレット プロパティ

ポートレット プロパティ

用途

[表示キャッシュ可能]

省略可能。パフォーマンスを強化するには、「true」に設定してポートレットをキャッシュする。たとえば、Web サービスを呼び出すポートレットは、コストのかかるプロセスを頻繁に実行する。Web サービス ポートレットをキャッシュすると、パフォーマンスが向上する。

独自のキャッシングを実行している場合は、これを「true」に設定してはならない。ポータル管理者が Administration Portal でキャッシュ設定を変更できるようにする場合は、このプロパティを「false」に設定する必要がある。

[キャッシュの期限 (秒)]

省略可能。[表示キャッシュ可能] プロパティが「true」に設定されている場合、ポートレット キャッシュの期限が切れるまでの秒数を入力する。

[フォーク表示]

ポータルをコンフィグレーションまたはチューニングする際にポータル管理者が使用することを意図している。

「true」に設定すると、ポートレットをマルチスレッド表示する試みを行うべきであることがフレームワークに通知される。このプロパティは、[フォーク可能] プロパティが「true」に設定されている場合のみ、true に設定できる。

[フォーク表示タイムアウト] (秒)

表示のタイムアウト値を設定できる。[フォーク表示] が「true」に設定されている場合、タイムアウト属性を設定して、各フォーク表示ポートレットのタイムアウト値分だけポータル フレームワークが待機することを示すことができる。デフォルト値は -1 秒 (タイムアウトなし)。ポートレット表示がタイムアウトした場合、エラーがログに記録される。ただし、タイムアウト ポートレットの応答にマークアップは挿入されない。

forkPreRender

preRender ライフサイクル フェーズのフォークを有効にする (コントロール ツリー ライフサイクルの詳細については、「コントロール ツリーのパフォーマンスへの影響」を参照)。preRender フォークは、以下のポートレット タイプでサポートされる。

  • JSP

  • ページ フロー

  • JSR168

  • WSRP (コンシューマ ポートレットのみ)

forkPreRender を true に設定すると、ポートレットの preRender フェーズがフォークされる。

ページフローを使用すると、最初の開始アクションと更新アクションが preRender フェーズ中に実行される。

現時点では、Fork PreRender は WebLogic Workshop インタフェースでサポートされていない。実装するには、WebLogic Workshop オンライン ヘルプ システムの「How Do I: Enable the forkPreRender Attribute?」の説明を参照。

forkPreRender Timeout

整数値を受け取り、preRender フォーク フェーズのタイムアウト値 (秒単位) を設定する。この属性は、forkPreRender="true" の場合にのみ適用される。preRender フォーク フェーズの実行時間がタイムアウト値を超過すると、ポートレット自体がタイムアウトになり (つまり、このポートレットの残りのライフサイクル フェーズは中止される。コントロール ツリーのライフサイクルの詳細については、「コントロール ツリーのパフォーマンスへの影響」を参照)、表示されるページからポートレットが削除され、次のようなエラー レベル メッセージがログに記録される。

<May 26, 2005 2:04:05 PM MDT> <Error> <netuix> <BEA-423350> <Forked render timed out for portlet with id [t_portlet_1_1_1].Portlet will not be included in response.>

現時点では、forkPreRenderTimeout は WebLogic Workshop インタフェースでサポートされていない。実装するには、WebLogic Workshop オンライン ヘルプ システムの「How Do I: Enable the forkPreRenderTimeout Attribute?」の説明を参照。

[フォーク可能]

省略可能。ポートレット開発者が、ポートレットをマルチスレッド表示または事前表示できるかどうかを決定することを可能にする。

「true」に設定すると、ポータル管理者は [フォーク表示] または Fork PreRender プロパティを使用して、ポートレットをマルチスレッド表示できる。


 

バッキング ファイルの使用

バッキング ファイルを使用すると、Java クラスを実装 (または拡張) してポートレットにプログラミングによる機能を追加でき、ポータル コントロールを表示する前の事前処理 (認証など) が可能になります。バッキング ファイルは、WebLogic Workshop を使用するか、または .portlet ファイルにコードを直接入力することによって、ポータルに追加できます。

詳細については、『ポートレット間通信の確立』を参照してください。

ポートレットで大量のデータを表示する際にページネーションを使用する

ポートレットで大量のデータを表示する場合、特にそのデータが表内にある場合は、ページネーションの使用を検討してください。たとえば、Internet Explorer の表の表示方法では、大量のデータを処理する際にパフォーマンスが低下します。Internet Explorer やその他のブラウザで、適切な表示パフォーマンスでデータを表で表示するには、ページネーションを使用して、ポートレットが 1 度にすべてのデータを処理しなくて済むようにします。そうしない場合は、表を使用しないカスタム ルック アンド フィールの作成を検討してください。

 


設計上の優れた決定がもたらす最適なパフォーマンス

これまで説明したように、WebLogic Portal における数多くのパフォーマンスの問題は、設計上の決定ミスが原因です。このドキュメントでは、次のような設計上のいくつかの重要な決定事項に注意すれば、非常に深刻なパフォーマンスの問題のうち、ポータルの表示に関するものは解決できること、また、パフォーマンスの大幅な向上が実現できることを説明してきました。

 

ページの先頭 前 次