Skip navigation.

WebLogic Portal での WSRP の使用

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

リモート ポートレットでのポートレット間通信の確立

WebLogic Portal 8.1 Service Pack 4 では、プロデューサとコンシューマの間のポートレット間通信 (IPC) がサポートされます。つまり、コンシューマのローカル ポートレットが、プロデューサの結合されたポートレットでのイベントに反応できます。逆方向も可能です。たとえば、ローカル ポートレットを最小化すると、最小化イベントをリスンしていたリモート ポートレットのコンテンツが変更されます。

このドキュメントでは、WebLogic Portal で使用される IPC モデルについて説明し、WSRP 準拠のポートレットに IPC モデルを適用する方法を示します。内容は以下のとおりです。

注意 : サポートされるポートレットのリストについては、「WSRP の概要」の「WSRP がサポートするポートレット タイプ」を参照してください。

 


WebLogic Portal の IPC モデル

WebLogic Portal の以前のバージョンでは、 listenTo() メソッドまたはバッキング ファイルをページ フロー ポートレットに追加する方法により、ポートレット間通信を確立することができました。WebLogic Portal 8.1 Service Pack 4 では、イベント ハンドラに基づく新しい IPC モデルが導入されています。イベント ハンドラは、ポータル内の他のポートレットに対して事前定義されたイベントをリスンし、そのイベントが発生したときにアクションを開始する Java オブジェクトです。

イベント ハンドラ

イベント ハンドラは、サブスクライブしたポートレットで発生するイベントを「リスン」して、特定のイベントが検出されるとアクションを開始します。イベント ハンドラがリスンして反応できるのは、次のタイプのイベントです。

イベント

イベント アクションは、発生するイベントのタイプによって異なります。ポータル イベントを除くすべてのイベントは、イベント ハンドラ ツールの [イベント] フィールドで指定できます。ポータル イベント ハンドラで処理できるイベントを表 3-1 に示します。

表 3-1 ポータル イベント ハンドラで処理できるイベント

イベント

アクションの実行

onActivation

ポートレットが表示されたとき。

onDeactivation

ポートレットが表示されなくなったとき。

onMinimize

ポートレットが最小化されたとき。

onMaximize

ポートレットが最大化されたとき。

onNormal

ポートレットが最大化または最小化の状態から通常の状態に戻ったとき。

onDelete

ポータルからポートレットが削除されたとき。

onHelp

ポートレットがヘルプ モードのとき。

onEdit

ポートレットが編集モードのとき。

onView

ポートレットが表示モードのとき。

onRefresh

ポートレットがリフレッシュされたとき。


 

イベント アクション

イベント ハンドラがホスト ポートレットでアクションを開始するのは、アプリケーションの別のポートレットでイベントを検出したときです。たとえば、ユーザが該当のポートレットを最小化すると、onMinimize と呼ばれるポータル イベントが発生し、イベントをリスンしているハンドラがアクションを開始して、ポートレットに追加されているバッキング ファイルを呼び出します。

表 3-2 に、使用可能なイベント アクションを示します。

表 3-2 イベント アクション

アクション

内容

ウィンドウ モードの変更

ウィンドウのモードを現在のモードからユーザ指定のモードに変更する。たとえば、ヘルプ モードから編集モード。

ウィンドウ状態の変更

ウィンドウの状態を現在の状態からユーザ指定の状態に変更する。たとえば、最大化状態から削除状態。

ページのアクティブ化

ユーザ指定のページを開く。

汎用イベントの開始

ユーザ指定の汎用イベントを開始する。

カスタム イベントの開始

ユーザ定義のカスタム イベントを開始する。このイベントはポートレット ファイルに組み込む必要がある。

BackingFile メソッドの呼び出し

ポートレットに追加されているバッキング ファイルを実行する。バッキング ファイルを使用すると、ポートレットにプログラミングによる機能を追加でき、ポータル コントロールを表示する前の事前処理 (認証など) が可能になる。詳細については、「リモート ポートレットに関する特別な考慮事項」を参照。


 

 


IPC の実装方法

WebLogic Workshop に含まれる IPC ツールを使用すると、イベント ハンドラの実装は比較的容易になります。このツールを起動するには、次の手順に従います。

  1. WebLogic Workshop でポートレットを開きます。
  2. ポートレットのプロパティ エディタで、[イベント ハンドラ] の横の [...] ボタンをクリックします (イベント ハンドラが追加されていない場合、[イベント ハンドラ] フィールドにこのボタンが表示されます。イベント ハンドラが追加されている場合は、このフィールドには追加された数が表示されます)。
  3. 図 3-1 に示すようにツールが表示されます。

    図 3-1 イベント ハンドラ ツール


     
  4. [ハンドラを追加] をクリックして、イベント ハンドラのドロップダウン メニューを開き、ハンドラを選択します。
  5. ダイアログ ボックスが展開して、ハンドラの設定に使用できるフィールドが追加表示されます (図 3-2)。

    図 3-2 展開されたイベント ハンドラ ツール


     

イベント ハンドラを設定するすべてのプロセスは、このツールで処理できます。次の操作が必要です。

  1. イベント ハンドラを選択します。
  2. ハンドラがリスンするポートレットを決定します。
  3. ハンドラがリスンするイベントを選択します。
  4. イベントが発生したときに開始するアクションを選択して、コンフィグレーションします。
  5. イベント ハンドラを保存します。

 


WSRP での IPC の実装 : 例

この節では、BEA WebLogic Workshop でイベント ハンドラ ツールを使用して、コンシューマとプロデューサの間にポーレット間通信を設定するプロセスについて説明します。コンシューマのローカル ポートレットを最小化すると、プロデューサから結合したポートレットでテキスト文字列が変更される単純な例を示します。

注意 : 現在、プロデューサのメタデータが変更された場合、その変更はコンシューマに通知されません。たとえば、ポートレットのリモート プロキシを作成した後に、プロデューサのポートレットにイベント ハンドラを追加した場合、リモート ポートレットでは変更を認識できないため、イベントが起動されません。適切な手順としては、コンシューマのリモート ポートレットを作成する前に、プロデューサのポートレットにイベント ハンドラを追加します。これは Web サービス全般の基本的な制限です。

この実習は次の 4 つの手順で構成されます。

手順 1 : 環境の設定

この手順では、ドメインとエンタープライズ アプリケーションを作成し、エンタープライズ アプリケーション内に 2 つの Web アプリケーション (Web プロジェクト) を作成します。

注意 : この実習では、ドメインのルート ディレクトリを BEA_HOME¥user_projects¥domains、アプリケーションとアプリケーションのすべてのコンポーネントのルート ディレクトリを BEA_HOME¥user_projects¥applications にしてください。これらは、BEA WebLogic Platform をインストールしたときに作成されるデフォルトのディレクトリです。

ドメインの作成

ドメインを作成するには、次の手順に従います。

  1. WebLogic Workshop を起動します。
  2. [ツール|WebLogic Server|コンフィグレーション ウィザード] を選択します。
  3. Configuration Wizard が起動します。

  4. 表 3-3 に指定された値を使用して、表示される手順に従います。各ダイアログ ボックスの設定が終了したら、[次へ] をクリックします。
  5. 表 3-3 Configuration Wizard の値

    ダイアログ ボックス

    選択または入力

    [コンフィグレーションの作成または拡張]

    新しい WebLogic コンフィグレーションの作成

    [コンフィグレーション テンプレートの選択]

    Basic WebLogic Portal Domain

    [エクスプレスまたはカスタム コンフィグレーションの選択]

    エクスプレス

    [管理ユーザ名とパスワードのコンフィグレーション]

    User name: weblogic

    User password: weblogic

    Confirm user password: weblogic

    [サーバの起動モードおよび Java SDK のコンフィグレーション]

    Sun SDK 1.4.2_05

    [Weblogic コンフィグレーションの作成]

    コンフィグレーション名 : ipcWsrpDomain


     
  6. ドメインが作成されたら、[完了] をクリックします。

ポータル アプリケーションの作成

ポータル アプリケーションを作成するには、次の手順に従います。

  1. [ファイル|新規作成|アプリケーション...] を選択します。
  2. [新しいアプリケーション] ダイアログ ボックスが表示されます。

  3. [Portal アプリケーション] を選択し、次の手順に従います。
  4. [作成] をクリックします。
  5. アプリケーションが正常に作成されると、図 3-3 のように [アプリケーション] パネルに表示されます。

    図 3-3 作成されたプロデューサ ポータル アプリケーション


     


     

Web アプリケーション (Web プロジェクト) の作成

プロデューサとコンシューマのポータル Web アプリケーション (プロジェクト) を ipcWsrpTest ポータル アプリケーションに作成します。次の手順に従います。

  1. ファイル ツリーで [ipcWsrpTest] を右クリックし、[新規作成|プロジェクト...] を選択します。
  2. [新しいプロジェクト] ダイアログ ボックスが表示されます。

  3. [Portal] および [Portal Web プロジェクト] を選択し、[プロジェクト名] に producerWeb と入力します。
  4. [作成] をクリックします。
  5. アプリケーション ツリーで producerWeb が ipcWsrpTest アプリケーションの下に表示されます (図 3-4)。

    図 3-4 プロデューサに追加されたポータル Web アプリケーション (プロジェクト)


     
  6. 手順 1 ~ 3 を繰り返します。このとき、[新しいプロジェクト] ダイアログ ボックスの [名前] フィールドには consumerWeb と入力します。
  7. Web アプリケーションが正常に作成されると、図 3-5 のように [アプリケーション] パネルの ipcWsrpTest の下に表示されます。

    図 3-5 ポータル アプリケーションに追加されたポータル Web アプリケーション (プロジェクト)


     
  8. [ツール|WebLogic Server|WebLogic Server の起動] を選択して、WebLogic Server を起動します。

まとめ

手順 1 : 環境の設定」が終了した時点で、ドメイン、ポータル アプリケーション、2 つのポータル Web アプリケーション producerWeb (プロデューサ) および consumerWeb (コンシューマ) が作成されています。図 3-6 に示すようにファイル システムで BEA_HOME¥user_projects¥ を調べることで、これらのコンポーネントを確認できます。

図 3-6 ファイル システムでの新しいドメインとアプリケーションの表示


 

手順 2 : プロデューサ ポートレットの作成

この手順では、プロデューサ側に 2 つの JSP ファイルと、それぞれのファイルを表示するための JSP ポートレットを作成します。また、2 つのポートレット間の通信を実現するために必要な指示を含むバッキング ファイルも作成し (バッキング ファイルの詳細については「バッキング ファイルについて」を参照)、一方のポートレットにイベント ハンドラを追加します。ポートレットを作成して、バッキング ファイルを追加した後で、アプリケーションをブラウザでテストします。

注意 : この手順を進める前に、WebLogic Workshop が実行中であることと、Web アプリケーション ノード [producerWeb] が展開していることを確認します。

JSP ファイルとポートレットの作成

プロデューサ ポートレットによって表示する JSP ファイルを作成するには、次の手順に従います。

  1. [producerWeb] ノードの下の [index.jsp] をダブルクリックします。
  2. JSP ファイルがデザイン ビューに表示されます (図 3-7)。

    図 3-7 デザイン ビューでの index.jsp


     
  3. [New Web Application Page] という文字列をクリックして強調表示します。
  4. テキストの周囲にボックスが表示され、プロパティ エディタの [General] の下に [innerText] フィールドが表示されます (図 3-8)。

    図 3-8 [プロパティ] メニューの [inner Text] フィールド


     
  5. [innerText] フィールドの [...] ボタンをクリックして [innerText] ダイアログ ボックスを開き、[New Web Application Page] を Minimize Me!!! という文字列で置き換えます。[OK] をクリックします。
  6. ダイアログ ボックスが閉じ、図 3-9 のように Minimize Me!!! が [innerText] フィールドとデザイン ビューに表示されます。

    図 3-9 JSP ファイルに追加された新しいテキスト


     
  7. [ファイル|名前を付けて保存...] を選択します。
  8. ファイルに aPortlet.jsp という名前を付けて保存します。
  9. アプリケーション ツリーで [aPortlet.jsp] を右クリックし、コンテキスト メニューから [ポートレットの生成...] を選択します (図 3-10)。
  10. 図 3-10 index.jsp からのポートレットの生成


     

    [ポートレットの詳細] ダイアログ ボックス (図 3-11) が表示されます。/aPortlet.jsp が [コンテンツ URI] フィールドに表示されていることを確認します。

    図 3-11 aPortlet の [ポートレットの詳細] ダイアログ ボックス


     
  11. [最小化可能]、[最大化可能]、および [削除可能] を選択し、[完了] をクリックします。
  12. aPortlet.portlet がアプリケーション ツリーの producerWeb の下に表示されます。

  13. ポートレット ウィザードが閉じますが、aPortlet.jsp は開いています。開いていない場合は、アプリケーション ツリーでファイル名をクリックして再び開きます。
  14. [ファイル|名前を付けて保存] を選択します。
  15. ['aPortlet.jsp' に名前を付けて保存] ダイアログ ボックスの [名前] フィールドに bPortlet.jsp と入力し、[保存] をクリックします。
  16. JSP の表示で [ソース ビュー] をクリックします。
  17. JSP コードが表示されます (図 3-12)。

    図 3-12 JSP ファイルのソース ビュー


     
  18. コード リスト 3-1 のコードをコピーし、JSP の <netui:html> から </netui:html> までのコードを置換します。このコードによって、後の手順で作成して追加するバッキング ファイルのイベント処理が表示されます。

  19.  


     


     

コード リスト 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-13 の例のようになります。

図 3-13 更新された JSP ソース


 
  • 保存ボタンをクリックするか [ファイル|保存] を選択して、ファイルを保存します。
  • 手順 6 と 7 を繰り返して、bPortlet の JSP ポートレットを作成します。
  • バッキング ファイルの作成

    バッキング ファイルを作成するには、次の手順に従います。

    1. producerWeb の [WEB-INF] ノードを展開し、[src] を右クリックしてコンテキスト メニューを開きます。
    2. [新規作成|フォルダ] を選択します。
    3. [新しいフォルダの作成] ダイアログ ボックスが表示されます。

    4. [新しいフォルダ名を入力してください] に backing と入力し、[OK] をクリックします。
    5. 図 3-14 のようにフォルダ backingWEB-INF/src の下に表示されます。

      図 3-14 WEB-INF/src の下の backing フォルダ

      o.


       
    6. [backing] を右クリックし、[新規作成|Java Class] を選択します。
    7. [新しいファイル] ダイアログ ボックスが表示されます。

    8. [ファイル名] に Listening.java と入力し、[作成] をクリックします。
    9. 新しい Java クラスのソース ビューが表示されます (図 3-15)。

      図 3-15 Listening.java ソース ファイル


       
    10. コード リスト 3-2 のコードを Listening.java にコピーします。

    11.  


       

    コード リスト 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-16 のようになります。

    図 3-16 バッキング ファイル コードが更新された Listening.java


     
  • [ファイル|保存] を選択するか保存ボタンをクリックして、Listening.java を保存します。
  • バッキング ファイルの追加

    ここでは、「バッキング ファイルの作成」で作成したバッキング ファイルを bPortlet に追加します。次の手順を実行します。

    1. アプリケーション ツリーで、[bPortlet.portlet] をダブルクリックして開きます。
    2. 図 3-17 に示すようにプロパティ エディタの [ポートレット プロパティ] の下の [バッキング ファイル] フィールドに backing.Listening と入力し、〔Tab〕を押します。
    3. 図 3-17 プロパティ エディタでのバッキング ファイルの追加


       
    4. ファイルを保存します。

    イベント ハンドラの bPortlet への追加

    ここでは、イベント ハンドラを bPortlet に追加します。特定のポートレットのイベントをリスンし、イベントに反応してアクションを開始するように、このハンドラを設定します。イベント ハンドラを追加するには、次の手順に従います。

    注意 : bPortlet.portlet が WebLogic Workshop に表示されている必要があります。表示されていない場合は、[アプリケーション] パネルで producerWeb の下にある bPortlet.portlet を見つけてダブルクリックします。

    1. プロパティ エディタで [イベント ハンドラ] の横の [...] ボタンをクリックします。
    2. [ポートレット イベント ハンドラ] ダイアログ ボックス (図 3-18) が表示されます。

      図 3-18 [ポートレット イベント ハンドラ] ダイアログ ボックス


       
    3. [ハンドラを追加] をクリックし、イベント ハンドラのドロップダウン リストを開きます。
    4. [ポータル イベントの処理] を選択します。
    5. [ポートレット イベント ハンドラ] ダイアログ ボックスが展開し、詳細を入力できるようになります (図 3-19)。

      図 3-19 展開した [ポートレット イベント ハンドラ] ダイアログ ボックス


       
    6. [ポートレット] を除くすべてのフィールドでデフォルトを受け入れます。
    7. [ポートレット] では [...] ボタンをクリックします。
    8. producerWeb の [開く] ダイアログ ボックスが表示されます。

    9. [aPortlet.portlet] をダブルクリックします。
    10. [開く] ダイアログ ボックスが閉じ、portlet_1 が [リスン先] リストと [ポートレット] フィールドに表示されます (図 3-20)。portlet_1 は、イベント ハンドラがリスンするポートレットの定義ラベルです。

      図 3-20 portlet_1 の追加


       
    11. [イベント] ドロップダウン コントロールをクリックして、ハンドラがリスンできるポータル イベントのリストを開き、図 3-21 に示すように [onMinimize] を選択します。
    12. 図 3-21 [イベント] ドロップダウン リスト


       
    13. [アクションを追加...] をクリックしてアクションのドロップダウン リストを開き、図 3-22 に示すように [BackingFile メソッドの呼び出し] を選択します。
    14. 図 3-22 [アクションを追加] ドロップダウン リスト


       

      図 3-23 のように [BackingFile メソッドの呼び出し] が [イベント] リストに [ポータル イベントの処理] の子として表示されます。

      図 3-23 アクションが追加された [イベント] リスト


       
    15. [メソッド] ドロップダウン コントロールを開き、handlePortalEvent を選択します (図 3-24)。
    16. 図 3-24 バッキング ファイル メソッドの追加


       
    17. [OK] をクリックします。
    18. イベント ハンドラが追加されます。プロパティ エディタの [イベント ハンドラ] フィールドに [1 つのイベント ハンドラ] と表示されていることに注意します。

    アプリケーションのテスト

    アプリケーションをテストするには、次の手順に従います。

    注意 : 開始する前に、すべてのファイルを保存したことを確認します。

    1. 次の手順に従って、ipcLocal.portal というポータルを作成します。
      1. [producerWeb] を右クリックし、[新規作成|ポータル] を選択します。
      2. [新しいファイル] ダイアログ ボックスの [ファイル名] フィールドに ipcLocal と入力します。
      3. [作成] をクリックします。
      4. ポータルが正常に作成された場合は、ポータルのレイアウトが WebLogic Workshop に表示されます。

    2. 図 3-25 に示すように、データ パレットから [aPortlet] と [bPortlet] の両方をポータル レイアウトにドラッグします。
    3. 図 3-25 ポートレットが追加されたポータル レイアウト


       
    4. 保存ボタンをクリックするか [ファイル|保存] を選択して、ポータルを保存します。
    5. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
    6. ポータルがブラウザに表示されます (図 3-26)。

      図 3-26 ブラウザでの ipcLocal ポータル


       
    7. aPortlet を最小化します。
    8. bPortlet のコンテンツが変化することに注意してください。

      図 3-27 aPortlet を最小化したときの ipcLocal ポータル


       

    まとめ

    この手順では、「手順 1 : 環境の設定」で作成したポータル アプリケーション コンポーネントに、プロデューサで構築した 2 つの JSP ポートレットを追加しました。1 つ目のポートレット aPortlet はごく単純ですが、2 つ目のポートレット bPortlet は、複雑な JSP ファイルを表示し、バッキング ファイルを利用し、ポータル イベント ハンドラを含みます。プロデューサ アプリケーションのテストでは、aPortlet でイベントが発生したときに 2 つのポートレットが通信する様子を確認しました。これは、ローカル ポートレット間通信と呼ばれます。

    手順 3 : コンシューマ ポートレットの作成

    この手順では、コンシューマに 2 つのポートレット (JSP ポートレットとリモート ポートレット) を作成します。「手順 2 : プロデューサ ポートレットの作成」と同じく、JSP ポートレットは aPortlet.jsp ファイルを表示し、リモート ポートレットは「JSP ファイルとポートレットの作成」で作成した bPortlet を消費します。

    実習の設定

    この実習を続ける前に、次の手順を実行します。

    JSP ポートレットの作成

    JSP ポートレットを作成するには、次の手順に従います。

    1. [aPortlet.jsp] を右クリックし、[ポートレットの生成...] を選択します。
    2. /aPortlet.jsp が [コンテンツ URI] フィールドにすでに入力された状態で [ポートレットの詳細] ダイアログ ボックスが表示されます (図 3-28)。

      図 3-28 [ポートレットの詳細] ダイアログ ボックス


       


       
    3. 次のように詳細を入力します。
    4. [完了] をクリックします。
    5. WebLogic Workshop が更新され、図 3-29 に示すように新しいポートレット レイアウトが表示されます。

      図 3-29 新しいポートレット


       

    リモート ポートレットの作成

    このリモート ポートレットを作成するには、次の手順に従います。

    1. [consumerWeb] を右クリックし、[新規作成|ポートレット] を選択します。
    2. [新しいファイル] ダイアログ ボックスが表示されます。

    3. [ファイル名] に bPrime.portlet と入力し、[作成] をクリックします。
    4. ポートレット ウィザードが起動し、[ポートレット タイプの選択] ダイアログ ボックスが表示されます (図 3-30)。

      図 3-30 [ポートレット タイプの選択] ダイアログ ボックス


       
    5. [リモート ポートレット] を選択してから [次へ] をクリックします。
    6. [プロデューサの検索] または [プロデューサの選択] ダイアログ ボックスが表示されます (図 3-31)。

      図 3-31 [プロデューサの検索] または [プロデューサの選択] ダイアログ ボックス


       
    7. [プロデューサの検索] を選択し、プロデューサのサービスの説明 (Web Services Description Language すなわち WSDL) をサービスの説明フィールドに入力します。WSDL によって、Web サービスのプロデューサとコンシューマの間でインタフェース情報が伝達されるため、サービスのソース コードを処理せずにサービスの機能を利用できます。この実習では次のように入力します。
    8. http://localhost:7001/producerWeb/producer?WSDL
    9. [検索] をクリックします。
    10. しばらくすると、ダイアログ ボックスが更新され、プロデューサの詳細が表示されます。

    11. [登録] をクリックします。
    12. [登録] ダイアログ ボックス (図 3-32) が表示されます。

      図 3-32 [登録] ダイアログ ボックス


       
    13. [プロデューサ ハンドル] に myProducer と入力し、[登録] をクリックします。
    14. [プロデューサの選択] フィールドに myProducer が表示された状態で [プロデューサの検索] ダイアログ ボックスが再表示されます。

    15. [次へ] をクリックします。
    16. [リストからポートレットを選択] ダイアログ ボックスが表示されます (図 3-33)。

      図 3-33 [リストからポートレットを選択] ダイアログ ボックス


       
    17. [bPortlet] を選択してから [次へ] をクリックします。
    18. [プロキシ ポートレット詳細] ダイアログ ボックスが表示されます。

    19. [完了] をクリックします。
    20. リモート ポートレットが作成され、[アプリケーション] パネルの consumerWeb の下に bprime.portlet として表示されます。

    21. bPortlet のプロパティ エディタで、[表示キャッシュ可能] を [false] に設定し (図 3-34)、〔Tab〕を押します。
    22. 図 3-34 [表示キャッシュ可能] の [false] への設定


       
    23. ポートレットを保存します。

    まとめ

    2 つのコンシューマ ポートレットが完成し、リモート ポートレットとローカル ポートレットのポートレット間通信を実行するために必要なすべてのコンポーネントを作成したことになります。次の手順では、コンシューマのポートレットをコンシューマのポータルに追加し、1 つのポートレットでイベントを発生させることで、もう 1 つのポートレットで反応を引き起こします。

    手順 4 : アプリケーションのテスト

    この手順では、コンシューマ アプリケーションをテストして、aPortlet の最小化により bPrime のコンテンツが変化することを確認します。ポータルを作成し、「手順 3 : コンシューマ ポートレットの作成」で作成した 2 つのポートレットを追加します。このアプリケーションを構築し、ブラウザでポータルを表示することができます。

    ポータルの構築

    アプリケーションをテストするためのポータルを作成するには、次の手順に従います。

    注意 : すべてのファイルを保存していることを確認します。

    1. [consumerWeb] を右クリックし、[新規作成|ポータル] を選択します。
    2. [新しいファイル] ダイアログ ボックスの [ファイル名] フィールドに ipcConsumer と入力します。
    3. [作成] をクリックします。
    4. ポータルが正常に作成されている場合は、ポータルのレイアウトが WebLogic Workshop に表示されます。

    5. 図 3-35 に示すように、データ パレットから [aPortlet] と [bPortlet] (bPrime を指定する) の両方をポータル レイアウトにドラッグします。
    6. 図 3-35 ipcConsumer ポータル レイアウト


       
    7. ポータルを保存します。

    ポータルのテスト

    構築が終了したら、次の手順に従って、aPortlet のイベントが bPortlet のコンテンツに影響を及ぼすことを確認します。

    1. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
    2. ブラウザが開き、ipcConsumer ポータルが表示されます (図 3-36)。

      図 3-36 ブラウザで表示した ipcConsumer ポータル


       
    3. aPortlet の最小化ボタンをクリックします。
    4. aPortlet が最小化され、図 3-37 に示すように bPortlet のコンテンツが変化します。

      図 3-37 最小化イベント後のブラウザの ipcConsumer ポータル


       

     


    リモート ポートレットに関する特別な考慮事項

    1 つのイベントに、プロデューサで処理する必要がある 1 つ以上のイベントが含まれる場合 (たとえば、netuix:invokePageFlowActionnetuix:invokeStrutsActionnetuix:invokeJavaPortletMethod、および netuix:invokeBackingFileMethod)、プロデューサによって dispatchToRemotePortlet() メソッドが追加されます。この要素は、コンシューマがこのイベントをプロデューサにディスパッチする必要があることを指示します。

     


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

    WSRP での IPC の実装 : 例」で作成したポータルでは、2 つのポートレット間の通信を実現するためにバッキング ファイルが使用されます。バッキング ファイルを使用すると、Java クラスを実装または拡張し、ポータル コントロールを表示する前の事前処理 (認証など) を可能にすることによって、ポートレットに対してプログラム的に機能を追加できます。

    バッキング ファイルとは

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

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

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

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

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

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

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

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

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

     

    ナビゲーション バーのスキップ  ページの先頭 前 次