Skip navigation.

WebLogic Portal での WSRP の使用

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

カスタム データ転送の実装

カスタム データ転送によって、ポートレットの開発者はプロデューサとコンシューマの間で任意のデータを交換できます。次に例を示します。

カスタム データ転送により、上記のようなケースや類似した問題を容易に解決できます。単純なプロデューサ複雑なプロデューサの両方でこの機能を利用できます。

この節では、カスタム データ転送を実装する方法について説明します。内容は以下のとおりです。

 


カスタム データ転送のインタフェース

カスタム データ転送によって、次の「マーカ」インタフェースが導入されます。

com.bea.wsrp.ext.holders.InteractionRequestState

対話 (フォームの送信など) が発生したときに、コンシューマが任意のデータをプロデューサに送信できる。

com.bea.wsrp.ext.holders.InteractionResponseState

対話の発生後、プロデューサが任意のデータをコンシューマに返すことができる。

com.bea.wsrp.ext.holders.MarkupRequestState

ポートレットが更新されるときに、コンシューマが任意データをプロデューサに送信できる。

com.bea.wsrp.ext.holders.MarkupResponseState

ポートレットが表示された後、プロデューサがプロデューサに任意のデータを返すことができる。

 


インタフェースの実装

次の例では、com.bea.wsrp.ext.holders.SimpleStateHolder を使用するカスタム データ転送を説明します。このクラスでは、上記のインタフェースのデフォルト実装が提供されます。このクラスを使用すると、単純な名前と値の組み合わせのデータを交換できます。

複雑なプロデューサでのインタフェースの実装 : 例

データを送信するには、このインスタンスのインスタンスを作成し、リクエスト属性としてリクエストに含める必要があります。すると、プロデューサまたはコンシューマがネットワークを通じてオブジェクトを送信し、オブジェクトは送信先でリクエスト属性として使用できるようになります。

次の例では、郵便番号をリモート ポートレットに送信します。

手順 1 : 環境の設定

次の操作を実行して環境を設定します。

注意 : 以下の手順を実行するために必要なコンポーネントを作成する方法については、「リモート ポートレットでのポートレット間通信の確立」の「手順 1 : 環境の設定」を参照してください。

  1. ドメインとポータル アプリケーションを新規作成するか、既存のドメインとポータル アプリケーションを使用します。ドメインとポータル アプリケーションを新規作成する場合は、ドメインの名前を custXferDomain、アプリケーションの名前を custXfer とします。必ず custXferDomain にアプリケーションを配置してください。
  2. ポータル アプリケーション custXfer の下に 2 つのポータル Web アプリケーションを作成し、それぞれの名前を Producer と Consumer にします。

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

環境が準備できたら、次はプロデューサに JSP ファイルを作成し、そのファイルを表示するポートレットを作成します。この JSP ファイルはリクエストの状態を取得します。この手順は、次のとおりです。

注意 : この後の手順では WebLogic Workshop が実行中であることを前提としています。実行中でない場合はここで起動してください。

  1. アプリケーション ツリーで [Producer] を右クリックしてコンテキスト メニューを開き、[新規作成|JSP ファイル] を選択します (図 6-1)。
  2. 図 6-1 新規 JSP ファイルの作成


     

    [新しいファイル] ダイアログ ボックス (図 6-2) が表示されます。

    図 6-2 新規 JSP の [新しいファイル] ダイアログ ボックス


     
  3. [ファイル名] に zipTest.jsp と入力し、[作成] をクリックします。
  4. WebLogic Workshop の中央のペインであるデザイン ビューにデフォルトの JSP ファイルが表示されます (図 6-3)。

    図 6-3 デザイン ビューでのデフォルト JSP


     
  5. [ソース ビュー] をクリックして JSP ソースを表示します (図 6-4)。
  6. 図 6-4 ソース ビューでのデフォルト JSP


     
  7. コード リスト 6-1 のコードをコピーして、JSP ソースの内容をそのコードで置換します。

  8.  

コード リスト 6-1 リクエストの状態を取得するコード

<%@ page import ="com.bea.wsrp.ext.holders.SimpleStateHolder,
com.bea.wsrp.ext.holders.MarkupRequestState"%>
<%
SimpleStateHolder state = (SimpleStateHolder)
request.getAttribute(MarkupRequestState.KEY);
String zip = (String) state.getParameter("zipCode");
%>
<%=zip%>

この操作が終わると、ソース ビューは 図 6-5 のようになります。

図 6-5 zipTest.jsp の新しい JSP ソース


 
  • ファイルを保存します。
  • アプリケーション ツリーで [zipTest.jsp] を右クリックし、[ポートレットの生成...] を選択します。
  • [ポートレットの詳細] ダイアログ ボックスが表示されます。[コンテンツ URI] フィールドにすでに zipTest.jsp が表示されていることに注意してください (図 6-6)。

    図 6-6 zipTest.jsp が表示されている [ポートレットの詳細]


     
  • [状態] で [最小化可能] と [最大化可能] を選択し、[完了] をクリックします。
  • ポートレット zipTest.portlet が作成され、アプリケーション ツリーに表示されます (図 6-7)。

    図 6-7 追加された新規 JSP ポートレット zipTest.portlet


     

    手順 3 : zipTest.portlet のコンシューマへの結合

    次は、プロデューサの zipTest.portlet を表示するために、コンシューマにリモート ポートレットを設定する必要があります。次の手順を実行します。

    注意 : 開始する前に、[ツール|WebLogic Server|WebLogic Server の起動] を選択して、WebLogic Server を起動します。

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

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

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


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

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


       
    7. [プロデューサの検索] を選択し、フィールドに次のように入力します。
    8. http://localhost:7001/Producer/producer?WSDL

      [検索] をクリックします。

      しばらくすると、[プロデューサの検索] または [プロデューサの選択] ダイアログ ボックスが更新され、次のようにプロデューサの詳細が表示されます。

      図 6-10 プロデューサの検索結果


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

      図 6-11 [登録] ダイアログ ボックス


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

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

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


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

      図 6-13 [プロキシ ポートレット詳細] ダイアログ ボックス


       
    18. [完了] をクリックします。
    19. [プロキシ ポートレット詳細] ダイアログ ボックスが閉じて、WebLogic Workshop が再び表示され、新しいポートレットがデザイン ビューに表示されます (図 6-14)。

      図 6-14 デザイン ビューでの新規リモート ポートレット zipPrime.portlet


       
    20. 必要に応じて、このファイルを保存します。

    手順 4 : バッキング ファイルの作成とコンシューマへの追加

    この手順では、CustomDataBacking.java という名前のバッキング ファイルをコンシューマ側に作成し、「手順 3 : zipTest.portlet のコンシューマへの結合」で作成したポートレットにそのバッキング ファイルを追加します。次の手順を実行します。

    1. [Consumer] ノードを展開して WEB-INF/src を表示し、右クリックしてコンテキスト メニューを開き、図 6-15 に示すように [新規作成|フォルダ] を選択します。
    2. 図 6-15 WEB-INF/src での新規フォルダの作成


       

      [新しいフォルダの作成] ダイアログ ボックス (図 6-16) が表示されます。

      図 6-16 [新しいフォルダの作成] ダイアログ ボックス


       
    3. [新しいフォルダ名を入力してください] に backing と入力し、[OK] をクリックします。
    4. 図 6-17 のように、backing フォルダがアプリケーション ツリーの WEB-INF/src の下に表示されます。

      図 6-17 WEB-INF/src 内の backing フォルダ


       
    5. [backing] を右クリックしてコンテキスト メニューを開き、[新規作成|Java Class] を選択します (図 6-18)。
    6. 図 6-18 新規 Java クラスの作成


       

      [新しいファイル] ダイアログ ボックスが表示されます。

    7. [ファイル名] に CustomDataBacking.java と入力し、[作成] をクリックします。
    8. バッキング ファイル テンプレートが WebLogic Workshop に表示されます (図 6-19)。

      図 6-19 バッキング ファイル テンプレート


       
    9. コード リスト 6-2 のコードをテンプレートにコピーして、ファイルを保存します。

    10.  

    コード リスト 6-2 SimpleStateHolder インスタンスの追加

    package backing;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking;
    import com.bea.wsrp.ext.holders.MarkupRequestState;
    import com.bea.wsrp.ext.holders.SimpleStateHolder;
    public class CustomDataBacking extends AbstractJspBacking
    {
       public boolean preRender(HttpServletRequest request, 
    HttpServletResponse response)
    {
    SimpleStateHolder state = new SimpleStateHolder();
    state.addParameter("zipCode", "80501");
    request.setAttribute(MarkupRequestState.KEY, state);
          return true;
    }
    }

    テンプレートは、このとき 図 6-20 の例のようになっているはずです。

    図 6-20 WebLogic Workshop の CustomDataBacking.java


     
  • [zipPrime.portlet] をダブルクリックして、WebLogic Workshop に表示します。
  • 図 6-21 のようにプロパティ エディタの [バッキング ファイル] フィールドに backing.CustomDataBacking と入力してバッキング ファイルを zipPrime.portlet に追加し、〔Tab〕を押します。
  • 図 6-21 バッキング ファイルの追加


     

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

    アプリケーションのコンポーネントの準備が整ったところで、アプリケーションをテストできます。テストが正常に終了すると、郵便番号 80501 (コンシューマに作成されたバッキング ファイルから提供される) がポートレットと同時に表示されます。

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

    1. アプリケーション ツリーで [Consumer] を右クリックしてコンテキスト メニューを開き、[新規作成|ポータル] を選択します。
    2. [新しいファイル] ダイアログ ボックスが表示されます。

    3. [ファイル名] に zipTest.portal と入力し、[作成] をクリックします。
    4. ポータルが作成され、WebLogic Workshop デザイン ビューに表示されます (図 6-22)。

      図 6-22 WebLogic Workshop デザイン ビューでの zipTest.portal


       

    1. [zipTest] をデータ パレットからポータルにドラッグします (どちらのプレースホルダにも配置できます。図 6-23 では右側のプレースホルダにあります)。
    2. 図 6-23 zipTest.portal への zipTest.portlet の追加


       
    3. ポータルを保存します。
    4. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
    5. ブラウザが開いてポータルが表示されます (少し時間がかかることがあります)。郵便番号 80501 がポートレットに表示されることに注意してください (図 6-24)。

      図 6-24 正常に表示された zipTest.portal


       

    単純なプロデューサでのこの例の使用

    複雑なプロデューサでのインタフェースの実装 : 例」で説明した手順は、複雑なプロデューサのみに対応します。この例を単純なプロデューサを使用する場合は、少し変更する必要があります。単純なプロデューサにインタフェースを実装するには、次の手順に従います。

    1. アプリケーション custXfer に新しいプロジェクトを作成します。このプロジェクトは、ポータル Web プロジェクトではなく単純な Web プロジェクトとして作成し、名前を simpleProducer と付けます。手順については、「手順 1 : 環境の設定」を参照してください。
    2. アプリケーション ツリーで [simpleProducer] を右クリックしてコンテキスト メニューを開き、[インストール|WSRP プロデューサ] を選択します (図 6-25)。
    3. 図 6-25 WSRP プロデューサのインストール


       

      アプリケーション ツリーが更新されて、wsrp-producer-config.xmlsimpleProducer/WEB-INF ディレクトリの下に表示されます。

    4. 次の手順に従い、simpleProducer に Java ページ フローを作成します。
      1. [simpleProducer] を右クリックしてコンテキスト メニューを開き、[新規作成|ページ フロー] を選択します。
      2. [ページ フロー ウィザード - ページ フロー名] ダイアログ ボックスが表示されます (図 6-26)。

        図 6-26 [ページ フロー ウィザード - ページ フロー名] ダイアログ ボックス


         
      3. [ページ フロー名] に ZipTestPF と入力します。[コントローラ名] に zipTestController.jpf と表示されます。
      4. [次へ] をクリックします。
      5. [ページ フロー ウィザード - ページ フロー タイプを選択] ダイアログ ボックスが表示されます (図 6-27)。

        図 6-27 [ページ フロー ウィザード - ページ フロー タイプを選択] ダイアログ ボックス


         
      6. [基本のページ フロー] を選択し、[作成] をクリックします。
      7. WebLogic Workshop が再表示され、フロー ビューに基本のページ フローが表示されます (図 6-28)。

        図 6-28 フロー ビューの基本のページ フロー


         

      このときページ フローにファイル index.jsp が含まれていることに注意してください。

    5. index.jsp アイコンをダブルクリックします。
    6. index.jsp がデザイン ビューに表示されます。

    7. [ソース ビュー] をクリックし、index.jsp のソースを表示します (図 6-29)。
    8. 図 6-29 index.jsp のソース ビュー


       
    9. コード リスト 6-3 のコードを index.jsp にコピーして、デフォルトの内容をすべて上書きします。

    10.  

    コード リスト 6-3 単純なプロデューサでのページ フロー ポートレットの使用

    <%@ page import="com.bea.wlw.netui.pageflow.scoping.ScopedRequest"%>
    <%@ page import ="com.bea.wsrp.ext.holders.SimpleStateHolder,
    com.bea.wsrp.ext.holders.MarkupRequestState"%>
    <%
    SimpleStateHolder state = (SimpleStateHolder)
    ((ScopedRequest) request).getOuterRequest().
    getAttribute(MarkupRequestState.KEY);
        String zip = (String) state.getParameter("zipCode");
    %>
    <%=zip%>

    index.jsp のソース ビューは、このとき図 6-30 のようになっているはずです。

    図 6-30 WebLogic Workshop での更新された index.jsp


     
  • ファイルを保存します。
  • アプリケーション ツリーで [ZipTestPFController.jpf] を右クリックしてコンテキスト メニューを開き、[ポートレットの生成...] を選択します。
  • [ポートレットの詳細] ダイアログ ボックス (図 6-31) が表示されます。

    図 6-31 JPF ポートレットの [ポートレットの詳細]


     

    [コンテンツ URI] フィールドにすでに /zipTestPF/ZipTestPFController.jpf が入力されていることに注意してください。

  • [最小化可能] と [最大化可能] を選択し、[完了] をクリックします。
  • ポートレットが作成され、ZipTestPFController.portletsimpleProducerWeb/WEB-INF の下に表示されます (図 6-32)

    図 6-32 アプリケーション ツリーに追加された ZipTestPFController


     
  • 上記の「手順 3 : zipTest.portlet のコンシューマへの結合」の手順に従って、ZipTestPFController.portlet をコンシューマのポータル Web アプリケーションに結合します。手順を次のように変更してください。
  • 注意 : WebLogic Server が実行中であることを確認します。

  • プロパティ エディタの [バッキング ファイル] フィールドに backing.CustomDataBacking と入力して、バッキング ファイル CustomDataBacking.java を追加します。〔Tab〕を押します。
  • ポートレット ファイルを保存します。
  • 次の手順に従ってアプリケーションをテストします。
    1. コンシューマ Web アプリケーションの下にある、zipTest.portal を開きます。
    2. データ パレットから [ZipTestPFController.portlet] を [zipTest.portal] にドラッグします。
    3. ポータル ファイルを保存します。
    4. [ポータル] メニューを開き、[現在のポータルを開く] を選択します。
    5. ブラウザが開き、しばらくするとポータルが表示されて、図 6-33 のように郵便番号 80501 が表示されます。

      図 6-33 ブラウザでの zipTest.portal


       

    独自のインタフェース実装のデプロイ

    これらのインタフェースの独自の実装をデプロイする場合は、次の考慮事項に注意してください。

    実装のルール

    コンシューマまたはプロデューサがカスタム データを送信できるかどうかは、リクエストのタイプによって決まります。次のルールが適用されます。

     

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