ポートレット間通信の確立
![]() |
![]() |
![]() |
![]() |
この節では、BEA WebLogic Workshop でイベント ハンドラ ツールを使用して、2 つのポートレット間にポーレット間通信を設定するプロセスについて説明します。1 つのポートレットを最小化すると、ポータルの別のポートレットでテキスト文字列が変更される単純な例を示します。
この例を実行するには、イベント ハンドラ ツールについて理解する必要があります。詳細については、WebLogic Workshop オンライン ヘルプ システムの「WebLogic Workshop でポートレット間通信を確立するには」を参照してください。
開発環境を設定していない場合は、「サンプルの設定」を参照して、次の手順に従ってください。
上記の手順を実行すると、ipcDomain というポータル ドメインと、ipcTest というポータル アプリケーションが作成されます。
この手順では、2 つの JSP ファイルと、それぞれのファイルを表示するための JSP ポートレットを作成します。また、2 つのポートレット間の通信を実現するために必要な指示を含むバッキング ファイルも作成し (バッキング ファイルの詳細については「バッキング ファイルについて」を参照)、一方のポートレットにイベント ハンドラを追加します。ポートレットを作成して、バッキング ファイルを追加した後で、アプリケーションをブラウザでテストします。
注意 : この手順を進める前に、WebLogic Workshop が実行中であり、Web アプリケーション ノード [ipcTest] が展開していることを確認します。
ポートレットによって表示する JSP ファイルを作成するには、次の手順に従います。
index.jsp
がデザイン ビューに表示されます (図 3-1)。
テキストの周囲にボックスが表示され、プロパティ エディタの [General] の下に [innerText] フィールドが表示されます (図 3-2)。
図 3-2 プロパティ メニューの [innerText] フィールド
ダイアログ ボックスが閉じ、図 3-3 のように Minimize Me!!! が [innerText] フィールドとデザイン ビューに表示されます。
[ポートレットの詳細] ダイアログ ボックス (図 3-4) が表示されます。aPortlet.jsp
が [コンテンツ URI] フィールドに表示されていることを確認します。
図 3-4 ポートレットの [ポートレットの詳細] ダイアログ ボックス
<netui:html>
から </netui:html>
までのコードを置換します。コード リスト 3-1 bPortlet.jsp の新しい JSP コード
<netui:html>
<% String event = (String)request.getAttribute("minimizeEvent");%>
<head>
<title>
Web Application Page
</title>
</head>
<body>
<p>
Listening for portlet A minimize event:<%=event%>
</p>
</body>
</netui:html>
ソースは、図 3-5 の例のようになります。
次に、2 つのポートレット間の通信を実現するために必要な指示を含むバッキング ファイルを作成する必要があります (バッキング ファイルの詳細については「バッキング ファイルについて」を参照)。バッキング ファイルを作成するには、次の手順に従います。
新しい Java クラスのソース ビューが表示されます (図 3-6)。
Listening.java
にコピーします。 コード リスト 3-2 Listening.java のバッキング ファイル コード
package backing;
import com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking;
import com.bea.netuix.events.Event;
import com.bea.netuix.events.GenericEvent;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Listening extends AbstractJspBacking
{
private static boolean minimizeEventHandled = false;
public void handlePortalEvent(HttpServletRequest request,
HttpServletResponse response, Event event)
{
minimizeEventHandled = true;
}
public boolean preRender(HttpServletRequest request, HttpServletResponse
response)
{
if (minimizeEventHandled){
request.setAttribute("minimizeEvent","minimize event handled");
}else{
request.setAttribute("minimizeEvent",null);
}
// reset
minimizeEventHandled = false;
return true;
}
}
図 3-7 バッキング ファイル コードが更新された listening.java
ここでは、「バッキング ファイルの作成」で作成したバッキング ファイルを bPortlet に追加します。次の手順を実行します。
backing.Listening
と入力し、〔Tab〕を押します。図 3-8 プロパティ エディタでのバッキング ファイルの追加
bPortlet にイベント ハンドラを追加するには、次の手順に従います。
注意 : bPortlet.portlet が WebLogic Workshop に表示されている必要があります。表示されていない場合は、[アプリケーション] パネルで ipcTest の下にある bPortlet.portlet を見つけてダブルクリックします。
[ポートレット イベント ハンドラ] ダイアログ ボックス (図 3-9) が表示されます。
図 3-9 [ポートレット イベント ハンドラ] ダイアログ ボックス
[ポートレット イベント ハンドラ] ダイアログ ボックスが展開し、詳細を入力できるようになります (図 3-10)。
図 3-10 展開した [ポートレット イベント ハンドラ] ダイアログ ボックス
[開く] ダイアログ ボックスが閉じ、portlet_1 が [リスン先] リストと [ポートレット] フィールドに表示されます (図 3-11)。portlet_1 は、イベント ハンドラがリスンするポートレットの定義ラベルです。
図 3-14 のように [BackingFile メソッドの呼び出し] が [イベント] リストに [ポータル イベントの処理] の子として表示されます。
handlePortalEvent
を選択または入力します (図 3-15)。ポータルがブラウザに表示されます (図 3-17)。
bPortlet のコンテンツが変更されることに注意してください (図 3-18)。
図 3-18 aPortlet を最小化したときの ipcLocal ポータル
この実習では、「サンプルの設定」で作成したポータル アプリケーション コンポーネントに対して 2 つの JSP ポートレットを追加しました。1 つ目のポートレット aPortlet はごく単純ですが、2 つ目のポートレット bPortlet は、複雑な JSP ファイルを表示し、バッキング ファイルを利用し、ポータル イベント ハンドラを含みます。アプリケーションのテストでは、aPortlet でイベントが発生したときに 2 つのポートレットが通信する様子を確認しました。これは、ローカル ポートレット間通信と呼ばれます。
![]() ![]() |
![]() |
![]() |