Skip navigation.

ポートレット間通信の確立

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

バッキング ファイルについて

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

この節では、主にバッキング ファイルについて説明します。この節では、以下の内容について説明します。

 


バッキング ファイルとは

バッキング ファイルとは、com.bea.netuix.servlets.controls.content.backing.JspBacking インタフェースの実装または com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking インタフェース抽象クラスの拡張を行う、単純な Java クラスです。インタフェースのメソッドは、コントロール ライフサイクル メソッド (「バッキング ファイルの実行方法」を参照) に類似しており、コントロール ライフサイクル メソッドの呼び出しと同時に呼び出されます。

 


バッキング ファイルをサポートするコントロール

現時点では、以下のコントロールがバッキング ファイルをサポートしています。

 


バッキング ファイルの実行方法

すべてのバッキング ファイルは、JSP 呼び出しの前後に実行されます。ライフサイクルの中で、各バッキング ファイルでは以下のメソッドが呼び出されます。

図 5-1 は、バッキング ファイルのライフサイクルを示しています。

図 5-1 バッキング ファイルのライフサイクル


 

要求を行うたびに、次の処理が発生します。

  1. すべてのバッキング ファイルで、「順番どおり」 (ツリーに表示されている順序) に、すべての init() メソッドが呼び出されます。このメソッドは、コントロール (ポータル、ページ、ブック、デスクトップ) がアクティブなページ上にあるかないかにかかわらず、呼び出されます。
  2. 次に、操作がポストバックであり、コントロール (ポートレット、ページ、ブックのいずれか) が、表示されているページ上にある場合は、すべての handlePostbackData() メソッドが呼び出されます。つまり、ポートレットがいずれかのページ上にあっても、その親ページがアクティブでない場合は、このメソッドは呼び出されません。
  3. 次に、アクティブな (表示されている) ページ上にあるすべてのコントロールに関して、すべての preRender() メソッドが呼び出されます。
  4. 次に、JSP が呼び出され、<render:beginRender> JSP タグを使用してアクティブなページに表示されます。<render:endRender> タグを使用すると、表示は停止されます。
  5. 最後に、バッキング ファイルで dispose() メソッドが呼び出されます。

注意 : 図 5-1 にある roadstead() および savviest() は、バッキング ファイルのライフサイクルではなく、コントロールのライフサイクルの一部です。

実行に関するその他の注意事項

バッキング ファイルがフロート ポートレットの一部である場合は、そのポートレットをフロートすると、その内容のみが実行されます。

ブックがポートレットに埋め込まれている場合、ブックは呼び出されます。ただし、ブックがポートレットの親である場合は、ポートレットに含まれていないため、呼び出されません。

 


バッキング ファイルのスレッドの安全性

バッキング ファイルの新しいインスタンスは要求ごとに作成されるため、スレッドの安全性の問題を心配する必要はありません。新しい Java VM は、有効期限が短いオブジェクト用に特別に調整されているため、以前のようなパフォーマンスの問題は発生しません。さらに、JspContent コントロールでサポートされる特殊なバッキング ファイルを使用すると、バッキング ファイルがスレッド セーフかどうかを指定できます。この値を true に設定すると、バッキング ファイルのインスタンスが 1 つだけ作成され、すべての要求で共有されます。

 


バッキング ファイルの作成

前述したように、バッキング ファイルは、com.bea.netuix.servlets.controls.content.backing.JspBacking インタフェースの実装または com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking 抽象クラスの拡張である必要があります。これらのファイルは、必要なバッキング機能を実装するために、必要な場合にのみ変更します。

コード リスト 5-1 は、「カスタム イベントおよびページ フロー イベントを使用した IPC の確立」で使用されるバッキング ファイルです。このサンプルでは、AbstractJspBacking クラスが拡張され、ポートレットで必要なバッキング機能が使用可能になります。

コード リスト 5-1 バッキング ファイルのサンプル

package backing;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.bea.netuix.events.Event;
import com.bea.netuix.events.CustomEvent;
import com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking;

public class ListenCustomerName extends AbstractJspBacking
{
public void listenCustomerName( HttpServletRequest request,
HttpServletResponse response, Event event)
{

CustomEvent customEvent = (CustomEvent) event;

String message = (String) customEvent.getPayload();

HttpSession mySession = request.getSession();
        mySession.setAttribute("customerName", message);

}

}

バッキング ファイルを作成する際は、次のガイドラインに従う必要があります。

 


ポートレットへのバッキング ファイルの追加

ベスト プラクティスとして、バッキング ファイルは常に Web アプリケーションの WEB-INF/src/backing ディレクトリに保存してください。アプリケーションがバッキング ファイルを最初に検索するのが /src ディレクトリであるためです (初めて Web アプリケーションのバッキング ファイルを保存する場合は、WEB-INF/src の下に /backing ディレクトリを作成する必要があります)。

WebLogic Workshop を使用してバッキング ファイルを追加する

バッキング ファイルをポートレットに追加するには、WebLogic Workshop を使用するか、追加先のファイルにコードを直接入力します。その他すべてのポートレット タイプに関しては、図 5-2 に示すように、プロパティ エディタの [ポートレット プロパティ] セクションの下にある [バッキング ファイル] フィールドで、バッキング ファイルを指定します。バッキング ディレクトリを指定し、ドット区切り文字に続けてバッキング ファイルの名前だけを指定します。バッキング ファイルの拡張子は含めないでください。たとえば次のように入力します。

backing.ListenCustomerName

次の入力例は間違っています。

backing.ListenCustomerName.java

ファイル拡張子を含めた場合、ファイル拡張子がファイル名と解釈されます。これは、ドット区切り文字によってファイル パスが指定されるためです。その結果、アプリケーションは、存在しない ListenCustomerName という名前 (つまり指定したバッキング ファイルの名前) のディレクトリの、存在しない java という名前のファイルを検索します。

図 5-2 IDE を使用してバッキング ファイルを追加する


 

.portlet コードに直接バッキング ファイルを追加する

バッキング ファイルを .portlet ファイルにコード化して追加するには、コード リスト 5-2 に示すように、<netuix:jspContent> 要素の中で backingFile パラメータを使用します。

コード リスト 5-2 バッキング ファイルを .portlet ファイルに追加する

<netuix:content>
<netuix:jspContent
backingFile="portletToPortlet.pageFlowSelectionDisplayOnly.menu.
backing.MenuBacking"
contentUri="/portletToPortlet/pageFlowSelectionDisplayOnly/menu/
menu.jsp"/>
</netuix:content>

 

ページの先頭 前 次