ナビゲーションをスキップ

Administration Console の拡張

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

BEA テンプレートと JSP タグの使用

この節では、Administration Console の JSP テンプレート、スタイル、およびユーザ入力コントロールを使用するポートレットを追加する方法について説明します。たとえば、以下のようなコンテンツを表示するポートレットを追加できます。

図 7-1 にこのプロセスを示します。プロセスの手順、および各手順の結果については、表 7-1 を参照してください。プロセスの各手順の詳細については、それ以降の節を参照してください。

図 7-1 Administration Console 拡張の開発の概要

Administration Console 拡張の開発の概要


 

表 7-1 モデル MBean の開発タスクと結果

手順

説明

結果

1. JSP でのメッセージ バンドルの作成と使用

拡張内に表示する各テキスト文字列の名前/値ペアを格納したテキスト ファイルを作成する。

1 つまたは複数の .properties ファイル。

2. テーブルおよびフォーム用の Struts 情報の作成

フォームとテーブルを表示する WebLogic Server JSP タグでは、Apache Struts がコントローラ エージェントであることを前提としている。JSP タグは、Struts ActionForm (フォーム Bean) によって値が設定される Java Bean を使用して、ユーザ入力を Struts Action に送信する。

org.apache.struts.action.ActionForm および org.apache.struts.action.Action を実装する Struts コンフィグレーション ファイル、Java Bean、および Java クラス。

3. BEA テンプレートと JSP タグを使用する JSP の作成

WebLogic Server には、JSP にインポートできる JSP テンプレートが用意されている。また、Administration Console で使用されているのと同じ UI コントロールを表示するための JSP タグ ライブラリも用意されている。

Administration Console のスタイルと構造に調和する JSP。

5. その他のポータル フレームワーク ファイルの作成と拡張のデプロイメント

拡張の位置を定義する XML ファイルを作成する。

ポートレットを定義し、Struts Action を起動するようにポートレットをコンフィグレーションする .portlet XML ファイル。

ページ コントロールまたはブック コントロールを定義する .pinc XML ファイル (省略可能)、拡張の位置を記述する netuix-extension.xml ファイル、および自動的にデプロイする JAR ファイル。

6. 拡張のアーカイブとデプロイメント

コンソールの拡張のアーカイブとデプロイ」を参照。

拡張を格納した JAR ファイル。

 


JSP でのメッセージ バンドルの作成と使用

JSP で表示するテキスト文字列は、すべてメッセージ バンドルで定義することをお勧めします。メッセージ バンドルの作成の詳細については、「メッセージ バンドルの作成」を参照してください。

バンドルを JSP で使用するには、次の手順に従います。

  1. JSTL fmt.tld タグ ライブラリをインポートします。
  2. <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>

  3. バンドルの名前を宣言します。
  4. <fmt:setBundle basename="bundle" var="current_bundle" scope="page"/>
    bundle はバンドルの名前です。

  5. JSP に文字列を出力させる場合は、次の JSP タグを使用します。
  6. <fmt:message key="property-name" bundle="${current_bundle}"/>

    次に例を示します。

    <fmt:message key="myextension.myTab.introduction" bundle="${current_bundle}"/>

 


フォームとテーブルの概要

WebLogic Server では、テキスト コントロール、チェック ボックス、ラジオ コントロールなどのさまざまな HTML 入力コントロールを表示できる <wl:form> JSP タグを提供しています。フォームは、読み取り専用にすることも、ユーザ入力可能にすることもできます。ユーザ入力可能なフォームには、ビジネス レイヤで処理するためのフォーム データをユーザがポストできるように、ボタンを含める必要があります。

データをテーブル形式で表示する <wl:table> JSP タグも提供されています。テーブル内の各行は、WebLogic Server インスタンス、アプリケーション、ログ メッセージなどの 1 つのエンティティを表します (図 7-2 を参照)。ハイパーテキスト リンクを表示するようにテーブル カラムをコンフィグレーションできます。ハイパーテキスト リンクを利用すると、ユーザはテーブル内の項目に関する詳細情報を表示するページに移動できます。HTML チェック ボックス コントロールを含むテーブル カラムを作成することもできます。ユーザがテーブル行のチェック ボックスを選択して送信ボタンをクリックすると、拡張ではその行全体に対応するビジネス ロジックを呼び出します。たとえば、チェック ボックスを使用して、ある行が表す項目を削除することができます。

これらのタグはいずれも、Apache Struts Action および ActionForm を使用して、ビジネス レイヤとプレゼンテーション レイヤの間でデータを渡します。

フォームとテーブルのデータ モデル

Apache Struts は ActionForm Bean (フォーム Bean) をインスタンス化してデータを設定するための複数の方法をサポートしています。たとえば、フォームの各プロパティのゲッター メソッドとセッター メソッドを含む独自の具象 Java Bean をコーディングできます。また、Struts DynaActionForm Bean を使用できます。この Bean では、Java Bean を動的にコンフィグレーションして、Struts コンフィグレーション ファイルで宣言されているプロパティを格納します。

フォームのデータ モデル

BEA JSP タグを使用して Administration Console にフォームを表示する場合は、Struts がサポートするいずれかの方法を使用して、フォーム Bean を作成してデータを設定できます (「例 : Struts ポートレットによるコンテンツの表示」の例では、カスタム Java Bean をコーディングする代わりに DynaActionForm Bean を使用しています)。

どの方法を選択する場合でも、Java Bean には以下のプロパティを含める必要があります。

テーブルのデータ モデル

BEA JSP タグを使用して Administration Console にテーブルを表示する場合は、2 つのフォーム Bean を作成する必要があります。1 つはテーブル内の行を表す Bean (行 Bean)、もう 1 つは行 Bean の集合を含む Bean (テーブル Bean) です。行 Bean の各プロパティはテーブル カラムとして表示されます。たとえば図 7-2 では、各行 Bean インスタンスに namestatehealth、および listenPort プロパティが含まれています。

図 7-2 行 Bean とテーブル Bean

行 Bean とテーブル Bean


 

行 Bean を作成するには、各プロパティを定義する具象 Java Bean を作成する必要があります。Struts DynaActionForm Bean を使用して、Struts コンフィグレーション ファイルで宣言されているプロパティを動的に格納することはできません。

テーブル Bean を作成する場合は、Struts がサポートするいずれかの方法を使用して、フォーム Bean を作成してデータを設定できます。どの方法を選択する場合でも、テーブル Bean には以下のプロパティを含める必要があります。

チェック ボックスのカラムを含むようにテーブルをコンフィグレーションする場合は (選択されたテーブル行 Bean に対して Struts Action を呼び出すことができる)、テーブル Bean に次のプロパティを含める必要があります。

ActionForm と行 Bean のハンドル

ActionForm Bean または行 Bean のインスタンスをユニークに識別して、Bean と基底のデータソースの相関関係を確立するには、Handle オブジェクトを作成、使用できます。Handle オブジェクトは com.bea.console.handles.Handle インタフェースを実装する Java オブジェクトです。

Apache Struts コントローラ サーブレットは HttpServletRequest オブジェクトに Handle オブジェクトを格納して、Struts Action、Beehive ページ フロー、または JSP で使用できるようにします。

Administration Console は、テーブル JSP 内の行 (図 7-2 を参照) を対応するコンフィグレーション JSP にリンクするときに Handle オブジェクトを使用します。たとえば、Server-0 という名前の ServerMBean インタフェースの場合、Administration Console は Server-0 MBean のデータを行 Bean に設定します。Administration Console は Server-0 の JMX オブジェクト名を新しい Handle オブジェクト (com.bea.console.handles.JMXHandle 型) に渡して、行 Bean の handle プロパティの値として Handle オブジェクトを設定します (図 7-3 を参照)。ユーザがテーブル JSP 内のリンクをクリックすると、Struts コントローラは行 Bean の handle プロパティを確認し、handle 値を使用してどのサーバ インスタンスが選択されたのかを判断して、選択されたサーバのコンフィグレーション ページを表示します。

図 7-3 行 Bean の JMXHandle

行 Bean の JMXHandle


 

ActionForm Bean または行 Bean の基底のデータ ソースが MBean である場合は、com.bea.console.handles.JMXHandle オブジェクトを使用できます。『Administration Console API Reference』の「JMXHandle」を参照してください。

Bean の基底のデータ ソースが MBean でない場合は、com.bea.console.handles.Handle インタフェースを実装する独自の Java クラスを作成できます。『Administration Console API Reference』の「Handle」を参照してください。

 


テーブルおよびフォーム用の Struts 情報の作成

Administration Console では、HTML フォームやテーブルを表示し、それらにデータを入力するために、Java Bean からデータをロードする JSP タグを使用します。通常、これらの Bean には、Struts Action が WebLogic Server MBean からロードしたデータが格納されます。ユーザ入力を送信する場合、JSP タグは Struts Action に転送します。転送されたほとんどの Action は WebLogic Server MBean のデータを更新します。

Administration Console の JSP タグを使用する場合は、独自の Struts ActionForm および Action を作成する必要があります。

以下の節では、フォームやテーブルで使用するために Java Bean、Struts Action および ActionForm を作成する方法について説明します。

Apache Struts については、「The Apache Struts Web Application Framework」(http://struts.apache.org/) を参照してください。

フォーム JSP の Struts 情報の作成 : 主な手順

ビジネス レイヤとプレゼンテーション レイヤの JSP との間でデータを渡すための Struts 情報を作成するには、次の手順に従います。

  1. Java Bean (フォーム Bean) にビジネス レイヤのデータを設定する org.apache.struts.action.Action クラスを作成します。
  2. ユーザ入力が可能なフォームの場合は、ユーザがフォームからポストするデータを処理するために別の Action クラスを作成します。

    フォーム データを処理するための Struts Action クラスの作成」を参照してください。

  3. Struts コンフィグレーション ファイルで次の手順を行います。
    1. Action クラスがデータを設定して使用するフォーム Bean の名前とプロパティを宣言します。
    2. ユーザ入力が可能なフォームの場合は、同じフォーム Bean を使用して、フォームにデータを設定したり、データを処理する Action クラスにユーザ入力を返したりできます。

    3. Struts コントローラがフォーム Bean をインスタンス化して、フォームにデータを設定する Action クラスを呼び出す際に使用する Action マッピングを作成します。
    4. ユーザ入力が可能なフォームの場合は、ユーザがフォームを送信したときに Struts コントローラが使用する別の Action マッピングを作成します。

    Struts ActionForm および Action マッピングのコンフィグレーション」を参照してください。

フォーム データを処理するための Struts Action クラスの作成

フォーム データを処理する Struts Action クラスを作成するには、次の手順に従います。

  1. フォーム Bean にデータを設定する org.apache.struts.action.Action クラスを作成します (コード リスト 7-1 を参照)。
  2. Struts コントローラは Action クラスに空の ActionForm Bean を渡します。Bean にデータを設定するには、次のメソッドを実装します。
    Action.execute(ActionMapping actionMapping,
       ActionForm actionForm,
       HttpServletRequest httpServletRequest,
       HttpServletResponse httpServletResponse)

    実装では次のことを行います。

    1. 基底のソース (MBean など) からデータを収集します。
    2. 空の ActionForm Bean を DynaActionForm Bean としてキャストします。
    3. <form-bean> 要素で定義した各プロパティ (handle プロパティを除く) に対して DynaActionForm.set() メソッドを呼び出します。
    4. たとえば、nametotalRx という 2 つのプロパティを定義している場合は、次のようになります。

      DynaActionForm form = (DynaActionForm) actionForm;
      form.set("name",namefromMBean);
      form.set("totalRx",totalRxfromMBean);

    5. フォーム Bean と基底のデータ ソースとの間に相関関係を確立するには、handle プロパティの値を設定します (「ActionForm と行 Bean のハンドル」を参照してください)。
    6. たとえば、基底のデータ ソースが MBean である場合は、JMXHandle を使用し、handle プロパティを MBean の ObjectName に設定します。

      ObjectName anMBean = new
          ObjectName("
      com.bea.medrec:Type=com.bea.medrec.controller.
                    RecordSessionEJBMBean,Name=MedRecEAR");
      form.setHandle(new JMXHandle(anMBean));

    7. クラスに渡されたリクエスト オブジェクトに DynaActionForm Bean を格納します。
    8. httpServletRequest.setAttribute("form-bean-name", form);

      form-bean-name は Struts コンフィグレーション ファイルでフォーム Bean に対してコンフィグレーションした名前に相当します (「Struts ActionForm および Action マッピングのコンフィグレーション」を参照してください)。

    9. Action クラスに渡された ActionMapping オブジェクトの ActionMapping.findForward() メソッドで「success」を返します。
      return actionMapping.findForward("success");
  3. ビジネス レイヤで処理するためのデータをフォームがポストする場合は、フォーム データを処理する別の Action クラスを作成します。
  4. ユーザが (HTML ボタンをクリックして) フォームからデータをポストすると、Struts コントローラはデータが設定された ActionForm Bean を Action クラスに渡します。データを処理するには、次のメソッドを実装します。
    Action.execute(ActionMapping actionMapping,
       ActionForm actionForm,
       HttpServletRequest httpServletRequest,
       HttpServletResponse httpServletResponse)

    実装では次のことを行います。

    1. リクエストに渡された ActionForm Bean を DynaActionForm Bean としてキャストします。
    2. 処理する各プロパティに対して DynaActionForm.get() メソッドを呼び出します。
    3. たとえば、nametotalRx、および handle というプロパティを処理する場合は、次のようになります。

      DynaActionForm form = (DynaActionForm) actionForm;
      String nameValue = (String) form.get(namefromMBean);
      Integer totalValue = (Integer) form.get(totalRxfromMBean);
      JMXHandle handle = (JMXHandle) form.get(handle);

    4. データを処理します。
    5. たとえば、name および totalRx プロパティが MBean の属性を表しており、この MBean 属性の値を変更する場合は、handle プロパティを使用して MBean インスタンスの JMX オブジェクト名を取得し、次に JMX API を使用して MBean 属性にフォームからポストされた値を設定します。

      ObjectName oName = handle.getObjectName();
      MBeanServer.setAttribute(oName, new Attribute(("Name", nameValue));
      MBeanServer.setAttribute(oName, new Attribute(("TotalRx", totalValue));

    6. Action クラスに渡された ActionMapping オブジェクトの ActionMapping.findForward() メソッドで「success」を返します。
      return actionMapping.findForward("success");
  5. Action クラスをコンパイルして、root-dir/WEB-INF/classes ディレクトリで始まるパッケージ構造に保存します。

コード リスト 7-1 は、カスタム MBean にアクセスし、その MBean を使用してフォーム Bean にデータを設定する org.apache.struts.action.Action クラスの例です。

コード リスト 7-1 例 : フォーム Bean にデータを設定する Action クラス

import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class MedRecMBeanFormAction extends Action {
   public ActionForward execute(ActionMapping actionMapping,
                                 ActionForm actionForm,
                                 HttpServletRequest httpServletRequest,
                                 HttpServletResponse httpServletResponse)
      throws Exception {
      try {
         // 実行時 MBean サーバへのローカル接続を確立する
         InitialContext ctx = new InitialContext();
         MBeanServer server =
            (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
         // 実行時 MBean サーバに登録されたカスタム MBean に対応する
         // ObjectName を作成する
         ObjectName anMBean = new ObjectName(
            "com.bea.medrec:Type=com.bea.medrec.controller.
              RecordSessionEJBMBean,Name=MedRecEAR");
         // カスタム MBean の「Name」属性の値を取得する
         String namefromMBean = (String)server.getAttribute
            (anMBean, "Name");
        // カスタム MBean の「TotalRx」属性の値を取得する
         Integer totalRxfromMBean = (Integer) server.getAttribute
            (anMBean, "TotalRx");
        // フォーム Bean にデータを設定する
        DynaActionForm form = (DynaActionForm) actionForm;
        form.set("name",namefromMBean);
        form.set("totalRx",totalRxfromMBean);
        form.set("handle",(new JMXHandle(anMBean)));
        // フォーム Bean をリクエスト内に設定する。フォーム Bean の
        // 名前は Struts コンフィグレーション ファイルの「form-bean」名に
        // 一致しなければならない
        httpServletRequest.setAttribute("medrecMBeanEJBForm", form);
      } catch (Exception ex) {
          ex.printStackTrace();
      }
      return actionMapping.findForward("success");
   }
}

Struts ActionForm および Action マッピングのコンフィグレーション

ActionFormAction マッピングを宣言する Struts コンフィグレーション ファイルを作成するには、次の手順に従います。

  1. コード リスト 7-2 のコードをコピーして、Struts モジュールのコンフィグレーション ファイルに貼り付けます。
  2. コンフィグレーション ファイルをまだ作成していない場合は、root-dir/WEB-INF にテキスト ファイルを作成します (「拡張のディレクトリ ツリーの作成」を参照してください)。ファイル名は struts-auto-config-module.xml にします。

    module は、Struts モジュールに付けた名前です。名前の衝突を避けるため、会社名を使用することをお勧めします。デフォルトの Struts モジュールは BEA Action および ActionForm 用に予約されているため、独自の Struts モジュールを作成する必要があります。Struts モジュールの詳細については、Apache Struts の『User Guide』(http://struts.apache.org/struts-doc-1.2.x/userGuide/index.html) を参照してください。

  3. ビジネス レイヤからプレゼンテーション レイヤの JSP にデータを転送するために Struts が使用するフォーム Bean をコンフィグレーションするには、コード リスト 7-2 の以下の値を置き換えます。
  4. フォーム Bean にデータを設定するために Struts が使用する Action マッピングをコンフィグレーションするには、Bean をシリアライズして、HTTP リクエストに格納し、そのリクエストを JSP に転送します。コード リスト 7-2 の以下の値を置き換えます。
  5. ビジネス レイヤで処理するためのデータをフォームからポストする場合は、別の <action> 要素を作成して、フォーム データを処理するために作成するカスタム クラスを指定します。
  6. この 2 番目の <action> 要素の form-bean-name には、フォームに最初にデータを設定した同じフォーム Bean を使用できます。処理用にデータのサブセットのみをポストする場合は、同じフォーム Bean を使用する代わりに、処理すべきプロパティのみを定義した別のフォーム Bean をコンフィグレーションできます。

    処理に成功すると、この追加の <action> 要素は、前述の手順でコンフィグレーションした Action マッピングに転送できます。更新後のデータで JSP が再ロードされます。

コード リスト 7-2 Struts コンフィグレーション ファイルのテンプレート

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
   "struts-config_1_1.dtd">
<struts-config>
   <form-beans>
      <form-bean name="form-bean-name"
        type="org.apache.struts.action.DynaActionForm">
        <form-property name="handle" type="com.bea.console.handles.Handle"/>
         <!-- insert additional "form-property" elements here -->
      </form-bean>
   </form-beans>
   <action-mappings>
      <action path="/action-name"
         type="custom-Action-class"
         name="form-bean-name"
         scope="request"
         validate="false">
         <forward name="success" contextRelative="true"
            path="/ext_jsp/form-jsp.jsp"/>
      </action>
      <!-- insert additional "action" elements here -->
   </action-mappings>
   <message-resources parameter="global"/>
   <message-resources parameter="validationmessages" key="VALIDATIONMESSAGES"/>
   <message-resources parameter="genresources" key="GENRESOURCES"/>
   <message-resources parameter="global" key="GLOBAL"/>
</struts-config>

テーブル JSP の Struts 情報の作成

WebLogic Server <wl:table> JSP タグを使用する JSP 用の Java 行 Bean、Struts Action、および ActionForm を作成するには、次の手順に従います。

  1. 行 Bean として機能する Bean をコンフィグレーションするには、テーブルに表示するデータ項目ごとに 1 つのプロパティを含む標準の Java Bean を作成します。
  2. Java Bean をコンパイルして、root-dir/WEB-INF/classes ディレクトリで始まるパッケージ構造に保存します。

  3. テーブル Bean として機能する Bean をコンフィグレーションするには、次の手順に従います。
    1. コード リスト 7-2 のコードをコピーして、Struts モジュールのコンフィグレーション ファイルに貼り付けます。
    2. コンフィグレーション ファイルをまだ作成していない場合は、root-dir/WEB-INF にテキスト ファイルを作成します (「拡張のディレクトリ ツリーの作成」を参照してください)。ファイル名は struts-auto-config-module.xml にします。

      module は、Struts モジュールに付けた名前です。名前の衝突を避けるため、会社名を使用することをお勧めします。デフォルトの Struts モジュールは BEA Action および ActionForm 用に予約されているため、独自の Struts モジュールを作成する必要があります。Struts モジュールの詳細については、Apache Struts の『User Guide』(http://struts.apache.org/userGuide/index.html) を参照してください。

    3. コード リスト 7-2 の以下の値を置き換えます。
    4. form-bean-nameDynaActionForm Bean のこのインスタンスに割り当てるユニークな名前です。Action クラスは、Bean にデータを設定して Struts コントローラに返すときに、この Bean 名を参照します。

      Bean インスタンスにデータを設定するときに使用する Struts Action の名前が反映された名前を使用してください。

    5. 以下のプロパティを追加します。
    6. <form-property name="contents" type="java.util.Collection"/>

      このプロパティには、Action クラスがインスタンス化してデータを設定する行 Bean の集合が含まれています。

  4. 行 Bean とテーブル Bean にデータを設定するために Struts が使用する Action マッピングをコンフィグレーションするには、Bean をシリアライズして、HTTP リクエストに格納し、そのリクエストを JSP に転送します。コード リスト 7-2 の以下の値を置き換えます。
  5. 行 Bean とテーブル Bean にデータを設定する org.apache.struts.action.Action クラスを作成します (コード リスト 7-3 を参照)。
  6. Bean にデータを設定するには、次のメソッドを実装します。
    Action.execute(ActionMapping actionMapping,
       ActionForm actionForm,
       HttpServletRequest httpServletRequest,
       HttpServletResponse httpServletResponse)

    実装では次のことを行います。

    1. 基底のソース (MBean のインスタンスなど) からアプリケーションを収集します。
    2. 行 Bean のインスタンスを作成し、Bean の各プロパティに対するセッターを呼び出して、インスタンスにデータを設定します。
    3. すべての行 Bean インスタンスを ArrayList に割り当てます。
    4. 空の ActionForm Bean (テーブル Bean) を DynaActionForm Bean としてキャストします。
    5. 行 Bean の ArrayList を格納するように、テーブル Bean の content を設定します。
    6. DynaActionForm table = (DynaActionForm) actionForm;
      table.set("contents",
      rowBeanArray);

    7. クラスに渡されたリクエスト オブジェクトにテーブル Bean を格納します。
    8. httpServletRequest.setAttribute("table-bean-name", table);

      table-bean-name は Struts コンフィグレーション ファイルでテーブル Bean に対してコンフィグレーションした名前です (コード リスト 7-2 を参照)。

    9. Action クラスに渡された ActionMapping オブジェクトの ActionMapping.findForward() メソッドで「success」を返します。
      return actionMapping.findForward("success");
  7. Action クラスをコンパイルして、root-dir/WEB-INF/classes ディレクトリで始まるパッケージ構造に保存します。

コード リスト 7-3 例 : 行 Bean とテーブル Bean にデータを設定する Action クラス

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class RetrieveCustomMBeansAction extends Action {
   public ActionForward execute(ActionMapping actionMapping,
                                 ActionForm actionForm,
                                 HttpServletRequest httpServletRequest,
                                 HttpServletResponse httpServletResponse)
      throws Exception {
      try {
         // 実行時 MBean サーバへのローカル接続を確立する
         InitialContext ctx = new InitialContext();
         MBeanServer server =
            (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
         // すべての MedRec EJB MBean の名前パターンを作成する
         ObjectName namepattern = new
              ObjectName("com.bea.medrec:Type=com.bea.medrec.controller.
               RecordSessionEJBMBean,*");
         // すべてのアプリケーションのすべての MedRec EJB MBean を取得する
         Set objects = server.queryNames(namepattern, null);
         // これらの各 MBean を処理して、オブジェクト名と
         // TotalRX 属性の値を取得する
         Iterator i = objects.iterator();
         while (i.hasNext()) {
            ObjectName anMBean = (ObjectName) i.next();
            String identifier = anMBean.toString();
            Integer totalRxfromMBean =
               (Integer) server.getAttribute(anMBean, "TotalRx");
            // 行 Bean をインスタンス化する
            MedRecMBeanTableBean row = new MedRecMBeanTableBean(anMBean);
               // 行 Bean のプロパティを設定する
               row.setCanonicalName(anMBean.getCanonicalName());
               row.setTotalRxinTableBean(totalRxfromMBean);
               // 各行 Bean を ArrayList に追加する
               result.add(row);
         }
      } catch (Exception ex) {
            ex.printStackTrace();
      }
      // テーブル Bean をインスタンス化する
      DynaActionForm form = (DynaActionForm) actionForm;
      // 行 Bean の配列をテーブル Bean の「contents」プロパティの値として
      // 設定する
      form.set("contents",result);
      // テーブル Bean をリクエスト内に設定する。テーブル Bean の
      // 名前は Struts コンフィグレーション ファイルの「form-bean」名に
      // 一致しなければならない
      httpServletRequest.setAttribute("genericTableForm", form);
      return actionMapping.findForward("success");
   }
}

 


BEA テンプレートと JSP タグを使用する JSP の作成

Administration Console JSP 内のほとんどのポートレットは、tableBaseLayout_netui および configBaseLayout_netui テンプレートをベースにしています。

以下の節では、これらのテンプレートを使用して JSP を作成する方法について説明します。

WebLogic Server の JSP テンプレート

表 7-2 では、Administration Console の拡張で使用できる JSP テンプレートについて説明します。すべてのテンプレートは、Administration Console の WEB-INF ディレクトリ内にある /layouts ディレクトリに格納されています。WebLogic Server ではテンプレート自体は公開されていませんが、テンプレートの使用方法については「BEA テンプレートと JSP タグの使用」で説明します。

テンプレートがニーズに合わない場合は、独自のテンプレートを作成し、JSP 内に直接コンテンツを構造化できます。

表 7-2 Administration Console の JSP テンプレート

テンプレート

説明

tableBaseLayout_netui.jsp

Administration Console では、単一のテーブルを表示するすべての JSP でこのテンプレートを使用する (図 2-5 を参照)。

ドキュメント全体の構造を作成するため、このテンプレートから 2 行の HTML テーブルが出力される。1 行目には、そのドキュメントの <beehive-template:section name="configAreaIntroduction"> タグ内のすべてが格納される。通常、これがドキュメントの概要を示すテキストになる。

2 行目には、そのドキュメントの <beehive-template:section name="table"> タグ内のすべてが格納される。通常、これが WebLogic Server リソースのリストやリソースを操作するためのボタン バーを表示するテーブルになる。

configBaseLayoutNoTransact.jsp

このテンプレートを使用すると、概要の説明、HTML フォーム、カスタム Java クラスで処理するためにフォーム データをポストする [保存] ボタンを表示できる。

このテンプレートでは、ユーザ パーミッションのチェックは行わない。ユーザはチェンジ センタ ポートレットの [ロックして編集] ボタンをクリックする必要はない。

テンプレートは 4 行の HTML テーブルを出力する。1 行目と 4 行目には [保存] ボタンが表示される。

2 行目には、そのドキュメントの <beehive-template:section name="configAreaIntroduction"> タグ内のすべてが格納される。通常、これがドキュメントの概要を示すテキストになる。

3 行目には、そのドキュメントの <beehive-template:section name="form"> タグ内のすべてが格納される。通常、これがユーザ入力コントロールと説明になる。

configBaseLayout_netui.jsp

Administration Console では、概要の説明、HTML フォーム、[保存] および [キャンセル] ボタンを表示するすべての JSP でこのテンプレートを使用する (図 2-4 を参照)。

このテンプレートからの出力は、ドメインのコンフィグレーションを変更する特権がユーザにあるかどうかに応じて行われる。

ユーザにパーミッションがある場合は、4 行の HTML テーブルが出力される。1 行目と 4 行目には、[保存] および [キャンセル] ボタンと、ユーザがロックしていて変更が可能な状態になっているかどうかを示すメッセージが表示される。ユーザにパーミッションがない場合、テーブルにはこれらの行が含まれない。

2 行目には、そのドキュメントの <beehive-template:section name="configAreaIntroduction"> タグ内のすべてが格納される。通常、これがドキュメントの概要を示すテキストになる。

3 行目には、そのドキュメントの <beehive-template:section name="form"> タグ内のすべてが格納される。通常、これがユーザ入力コントロールと説明になる。


 

フォーム JSP の作成

フォーム JSP を作成する前に、ビジネス レイヤと JSP の間でデータを渡す Struts 情報を作成します。「フォーム JSP の Struts 情報の作成 : 主な手順」を参照してください。

フォーム JSP を作成するには、次の手順に従います (コード リスト 7-4 を参照)。

  1. JSP を作成して、開発用ディレクトリ内に保存します。拡張内のすべての JSP を格納するサブディレクトリを作成することをお勧めします。たとえば、root-dir/jsp を作成します。
    root-dir は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
  2. 以下のタグを含めて JSP タグ ライブラリをインポートします。
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
    <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
    <%@ taglib uri="/WEB-INF/beehive-netui-tags-template.tld" prefix="beehive-template" %>
  3. これらのタグ ライブラリについては、「JSP タグ ライブラリ」を参照してください。

  4. (省略可能) ローカライズされたテキストを <fmt:message> タグを使用して表示する予定がある場合は、<fmt:setBundle/> を使用してメッセージ バンドルの名前を指定します。
  5. この <fmt:setBundle/> タグを使用すると、一度バンドル名を指定すれば、変数を使用して <fmt:message> タグからこの値を参照できます。

  6. 次の開始タグを作成して、コンフィグレーション ページの JSP テンプレートを宣言します。
  7. <beehive-template:template templatePage="/layouts/configBaseLayoutNoTransact.jsp">

    このタグはまだ閉じないでください。フォーム JSP の他の JSP タグは、すべてのこのテンプレート タグ内にネストします。

    注意 : フォームで WebLogic Server MBean の属性を変更する場合は、代わりに configBaseLayout_netui.jsp テンプレートを使用してください。「JSP タグ ライブラリ」を参照してください。

  8. <beehive-template:section name="configAreaIntroduction"> タグを作成します。このタグの中に、フォームの概要を説明する文章を入力します。この説明は、フォームの上に表示されます。
  9. 次の開始タグを作成します。
    <beehive-template:section name="form">
  10. このタグはまだ閉じないでください。

  11. 次のタグを作成して、それ以降の JSP タグが XHTML を出力することを示します。
  12. <html:xhtml/>

  13. <wl-extension:template
    name="/WEB-INF/templates/form.xml">
    開始タグを作成します。
  14. このテンプレートは、Administration Console のコンフィグレーション ページ (たとえば [ドメイン : コンフィグレーション : 全般]) と調和するフォームを作成します。

    このテンプレートでは、フォームを送信するボタンも生成されます。

  15. <wl-extension:form> 開始タグを作成し、以下の属性の値を指定します。
  16. フォームに表示するフォーム Bean のプロパティのそれぞれについて、表示するコントロールの種類に対応した <wl-extension> タグを作成します (『WebLogic Server 9.1 JSP Tags Reference』を参照してください)。
  17. これらのタグの代わりに、<wl-extension:reflecting-fields> タグを使用することもできます。このタグは、フォーム Bean 内の各プロパティについて HTML 入力タグを生成します。たとえば、java.lang.String を保持する Bean プロパティの場合はテキスト コントロールが生成され、ブール型のプロパティの場合はチェック ボックスが生成されます。このタグでは、リクエストにおいて JSP に渡されるデフォルトのフォーム Bean を使用します。

  18. ユーザ入力を受け付けるフォームで、WebLogic Server MBean の属性は変更しない場合は、前述の手順で説明した <wl-extension> タグ内に singlechange="false" 属性を指定してください。
  19. この属性を使用すると、ユーザは WebLogic Server の編集セッションを開始せずにフォーム データをポストできます。

  20. ユーザに対して各コントロールの目的を説明するテキストを表示するには、前の手順で作成した各 <wl-extension> タグに inlineHelpId 属性を含めます。
  21. <wl-extension:form> タグ、<beehive-template:section> タグ、および <beehive-template:template> タグを閉じます。

コード リスト 7-4 例 : 単純なフォーム JSP

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/beehive-netui-tags-template.tld"
   prefix="beehive-template" %>
<fmt:setBundle basename="mycompany" var="current_bundle" scope="page"/>
<beehive-template:template templatePage="/layouts/configBaseLayoutNoTransact.jsp">
   <beehive-template:section name="configAreaIntroduction">
      <fmt:message key="mycompany.myresource.introduction"
           bundle="${current_bundle}"/>
   </beehive-template:section>
   <beehive-template:section name="form">
      <html:xhtml/>
      <wl-extension:template name="/WEB-INF/templates/form.xml">
         <wl-extension:form action="/MyCompanyMyResourceUpdated" bundle="core">
            <wl-extension:text property="MyResourceName"
               labelId="mycompany.myresource.name.label"
                inlineHelpId="mycompany.myresource.name.label.inlinehelp"
                singlechange="false"/>
             <wl-extension:select
                 property="MyResourceWidgets"
                 labelId="mycompany.myresource.widgets.label"
                 inlineHelpId="mycompany.myresource.widgets.label.inlinehelp"
                 singlechange="false">
                 <wl-extension:optionsCollection
                     property="MyResourceAvailableWidgets"
                     label="label" value="value"/>
              </wl-extension:select>
         </wl-extension:form>
      </wl-extension:template>
   </beehive-template:section>
</beehive-template:template>

モニタ用のテーブル JSP の作成

テーブル JSP を作成する前に、ビジネス レイヤと JSP の間でデータを渡す Struts 情報を作成します。「テーブル JSP の Struts 情報の作成」を参照してください。

リソースをモニタするためのテーブル JSP を作成するには、次の手順に従います (コード リスト 7-5 を参照)。

  1. JSP を作成して、開発用ディレクトリ内に保存します。拡張内のすべての JSP を格納するサブディレクトリを作成することをお勧めします。たとえば、root-dir/jsp を作成します。
    root-dir は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
  2. 以下のタグを含めて JSP タグ ライブラリをインポートします。
    <%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
    <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
    <%@ taglib uri="/WEB-INF/beehive-netui-tags-template.tld" prefix="beehive-template" %>
  3. これらのタグ ライブラリについては、「JSP タグ ライブラリ」を参照してください。

  4. (省略可能) ローカライズされたテキストを <fmt:message> タグを使用して表示する予定がある場合は、<fmt:setBundle/> を使用してメッセージ バンドルの名前を指定します。
  5. この <fmt:setBundle/> タグを使用すると、一度バンドル名を指定すれば、変数を使用して <fmt:message> タグからこの値を参照できます。

  6. 次の開始タグを作成して、テーブルの JSP テンプレートを宣言します。
  7. <beehive-template:template
       templatePage="/layouts/tableBaseLayout_netui.jsp">

    このタグはまだ閉じないでください。テーブル JSP の他の JSP タグは、すべてのこのテンプレート タグ内にネストします。

  8. <beehive-template:section name="configAreaIntroduction"> タグを作成します。このタグの中に、テーブルの概要を説明する文章を入力します。この説明は、テーブルの上に表示されます。
  9. 次の開始タグを作成します。
    <beehive-template:section name="table">
  10. このタグはまだ閉じないでください。

  11. <wl-extensions:table> 開始タグを作成し、少なくとも以下の属性の値を指定します。
  12. captionEnabled 属性に「true」を指定した場合は、<wl-extension:caption> タグを作成します。このタグの中に、テーブルのタイトルを入力します。
  13. テーブルに表示する行 Bean のプロパティのそれぞれについて <wl-extension:column> タグを作成し、以下の属性の値を指定します。
  14. <wl-extension:table> タグ、<beehive-template:section> タグ、および <beehive-template:template> タグを閉じます。

コード リスト 7-5 例 : モニタ用のテーブル JSP

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl" %>
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/beehive-netui-tags-template.tld" prefix="beehive-template" %>
<fmt:setBundle basename="core" var="current_bundle" scope="page"/>
<beehive-template:template templatePage="/layouts/tableBaseLayout_netui.jsp">
   <beehive-template:section name="configAreaIntroduction">
      <fmt:message key="core.server.servertable.introduction"
            bundle="${current_bundle}"/>
   </beehive-template:section>
   <beehive-template:section name="table">
      <wl-extension:table name="extensionForm"
             property="contents"
             captionEnabled="true"
            bundle="core">
         <wl-extension:caption>
            <fmt:message key="server.table.caption"
                 bundle="${current_bundle}"/>
         </wl-extension:caption>
         <wl-extension:column property="name"
            label="server.table.label.name"/>
         <wl-extension:column property="clusterName"
            label="server.table.label.cluster"/>
         <wl-extension:column property="machineName"
            label="server.table.label.machine"/>
      </wl-extension:table>
   </beehive-template:section>
</beehive-template:template>

他のページに移動するためのテーブル カラムの作成

テーブル JSP では、各行からコンフィグレーション ページまたは他の関連ページへのリンクを提供できます。リンクのメカニズムでは Handle オブジェクトを使用して、特定のテーブル行に関連しているページを判断します (「ActionForm と行 Bean のハンドル」を参照してください)。

以下のいずれかの JSP タグを使用して、テーブルからリンクさせることができます。

この章では、ナビゲーション用のテーブル カラムの作成方法について説明します。

行 Bean および Action クラスへのハンドルの追加

handle プロパティを作成してデータを設定するには、次の手順に従います。

  1. 行 Bean に、データ型が com.bea.console.handles.Handlehandle という名前のプロパティを追加します。
  2. public com.bea.console.handles.Handle getHandle() {
       return handle;
    }
    public void setHandle(Handle handle) {
       this.handle = handle;
    }

  3. 行 Bean にデータを設定する Struts Action クラス内で、handle プロパティの値を設定します。
  4. 行 Bean に MBean のデータを設定する場合は、その MBean の JMX ObjectName を格納する com.bea.console.handles.JMXHandle オブジェクトを作成します。次に、JMXHandle オブジェクトを handle プロパティの値として設定します。

    javax.management.ObjectName anMBean = new
        ObjectName("
    com.bea.medrec:Type=com.bea.medrec.controller.
                  RecordSessionEJBMBean,Name=MedRecEAR");
    row.setHandle(new JMXHandle(anMBean));

    その他の種類のデータ ソースのデータを行 Bean に設定する場合は、ObjectName ではなくコンストラクタに String を渡すことで、JMXHandle オブジェクトを作成できます。String には Type=identifier という文字シーケンスを含める必要があります。identifier は分かりやすいものにします。

    row.setHandle(new JMXHandle("Type=myDataSource"));

    Handle オブジェクトを作成して設定することもできます。『Administration Console API Reference』の「Handle」を参照してください。

  5. 行 Bean と Action クラスを再コンパイルします。

column-link タグの使用

<wl:column-link> タグを使用するには、次の手順に従います。

  1. テーブル JSP の最上部に以下の文を追加して、render タグ ライブラリをテーブル JSP にインポートします。
  2. <%@ taglib uri="render.tld" prefix="render" %>

    BEA はこのタグ ライブラリを実行時環境で提供しています。

  3. <wl:table> タグ内に次の属性を追加します。
    checkBoxValue="handle"
  4. リンク元となるカラムを表示する <wl:column> タグの中に、<wl:column-link> JSP タグをネストします。
  5. <wl:column-link portlet="portlet-instanceLabel">
       <render:pageUrl pageLabel="
    page-definitionLabel"/>
    </wl:column-link>

    各値の説明は次のとおりです。

    次に例を示します。
    <wl:column property="Name"
       label="medrecMBean.name.label">
       <wl:column-link portlet="medrecMonitorTabPortlet">
          <render:pageUrl pageLabel="medrecMonitor"/>
       </wl:column-link>
    </wl:column>

    注意 : <render:pageUrl/> タグは、ポータル フレームワーク URL を生成するためのコンビニエンス タグです。WebLogic Workshop ヘルプの「<render:pageUrl> Tag」を参照してください。

column-dispatch タグの使用

<wl:column-dispatch> タグを使用するには、次の手順に従います。

  1. リンク先のページを定義する .pinc ファイルで、そのページの <netuix:page> 要素を見つけて、以下の要素をネストします。
  2. <netuix:meta name="perspective-name" content="ObjectType-value"/>

    各値の説明は次のとおりです。

    次に例を示します。
    <netuix:meta name="myCompany-configuration-page" content="myAppMBean"/>

  3. テーブル JSP の <wl:table> タグ内に次の属性を追加します。
    checkBoxValue="handle"
  4. リンク元となるカラムを表示する <wl:column> タグの中に、<wl:column-dispatch> JSP タグをネストします。
  5. <wl:column-dispatch perspective="perspective-name"/>

    各値の説明は次のとおりです。

    次に例を示します。
    <wl:column property="Name"
       label="medrecMBean.name.label">
       <wl:column-dispatch perspective="myCompany-configuration-page"/>

       </wl:column-link>
    </wl:column>

テーブルへのボタンとチェック ボックスの追加

<wl:table> タグを使用して作成するテーブルには、単独で、またはチェック ボックスやラジオ ボタンのカラムと組み合わせて、ボタンを使用できます。

単独で使用する場合、ボタンはページ UI コントロールへの転送を行えます。たとえば、WebLogic Server の [サーバ] テーブルでは (図 7-2 を参照)、ユーザが [新規作成] ボタンをクリックすると、[新しいサーバの作成] アシスタントが開きます。

チェック ボックスと組み合わせて使用する場合、ボタンは 1 つまたは複数のテーブル行のためにデータを処理できます。たとえば、テーブル内の各行が、アプリケーションのモニタ データを提供するカスタム MBean のインスタンスを表す場合、1 つまたは複数の行のチェック ボックスを選択してボタンをクリックすると、対応する MBean インスタンスの値がリセットされるようにすることができます。

以下の節では、チェック ボックスとボタンをテーブルに追加する方法について説明します。

テーブルへのボタンの追加

テーブルにボタンを追加するには、次の手順に従います。

  1. テーブル JSP で、<wl-extension:table> タグに以下の属性を追加します。
  2. singlechange="false"
    controlsenabled="true"

    controlsenabled 属性を使用すると、テーブルにボタンを表示できるようになります。singlechange 属性は、ユーザがドメインのコンフィグレーションをロックせずにボタンをクリックできるようにします (『WebLogic Server 9.1 JSP Tags Reference』を参照してください)。

  3. <wl-extension:table> 開始タグの直後に、以下のタグを追加します。
  4. <wl:button-bar>
       <wl:button-bar-button labelid="
    button-label"
          pageLabel="
    page-definitionLabel"/>
    </wl:button-bar>

    各値の説明は次のとおりです。

    <wl:button-bar>
       <wl:button-bar-button
          labelid="Servers"
          pageLabel="ServerTableBook" />
    </wl:button-bar>


     

テーブルへのチェック ボックスとボタンの追加

1 つまたは複数のテーブル行のデータを処理するには、チェック ボックスと、HTTP リクエストにデータをポストするためのボタンを使用します。ポストされたデータを取得して処理できる Struts Action またはページ フローを作成する必要もあります。

  1. 1 つまたは複数のテーブル行のデータを HTTP リクエストにポストするには、次の手順に従います。
    1. Struts コンフィグレーション ファイルで、テーブルの ActionForm Bean の定義に chosenContents というプロパティを追加します。
    2. このプロパティのデータ型はプリミティブ型の配列か com.bea.console.handles.Handle の配列にする必要があります。

      <wls:table> タグでは、ユーザがテーブルを送信するときに、選択された各チェック ボックスごとに 1 つの要素をこの配列に追加します。

      次に例を示します。
      <form-property name="chosenContents"
      type="[Lcom.bea.console.handles.Handle;"/>

    3. テーブル JSP で、<wl-extension:table> タグに以下の属性を追加します。
    4. singlechange="false"
      controlsenabled="true"
      showcheckboxes="true"
      checkBoxValue="
      property-name"

      property-name は行 Bean のプロパティの名前です。このプロパティのデータ型は、chosenContents プロパティに対して宣言したデータ型と一致する必要があります。

      <wl:table> タグでは、この行 Bean の値を、テーブル Bean の chosenContents プロパティの配列に追加します。

      ラジオ ボタン (ユーザは 1 つの行のみを選択できる) を表示する場合は、次の属性を追加します。

      singlechoice="true"

    5. <wl-extension:table> 開始タグの直後に、以下のタグを追加します。
    6. <wl:button-bar>
         <wl:button-bar-button labelid="
      button-label"
         portlet="
      portlet-instanceLabel"
         pageLabel="
      page-definitionLabel"/>
      </wl:button-bar>

      各値の説明は次のとおりです。

      button-label。ボタン上に表示するテキスト、または、JSP の <fmt:setBundle> 要素で宣言されたバンドルで定義されているプロパティの名前です。

      portlet-instanceLabel。ユーザがボタンをクリックしたときに起動する Struts Action または Beehive ページ フローを含むポートレット インスタンスのラベルです。ラベルは <netuix:portletInstance> 要素の instanceLabel 属性で定義されています。この要素はポートレットが含まれるページの .pinc ファイルにあります。

      Action またはページ フローをすぐに起動する代わりに、JSP を含むポートレットを指定することができます。JSP では、Action またはページ フローを起動する前に、ユーザに確認を求めることができます。

      page-definitionLabel。転送先のポートレット インスタンスが含まれているページのユニークなラベルです。

      ラベルは <netuix:page> 要素の definitionLabel 属性で定義されています。この要素はページの .pinc ファイルにあります。

  2. ポストされたデータを処理できる Struts Action を作成するには、次の手順に従います。
    1. Struts Action に転送するポートレットを作成します。ポートレットの instanceLabel が手順 1c で指定した値と一致するようにしてください。
    2. 次に例を示します。

      <netuix:portletInstance markupType="Portlet"
          instanceLabel="
      medrecMonitor.Tab.Portlet"
         contentUri="/portlets/medrec_monitor_tab.portlet"/>

      ポートレットの作成の詳細については、「ポートレットの定義」を参照してください。

    3. Struts コンフィグレーション ファイルで、chosenContents というプロパティを含む ActionForm Bean を定義します。このプロパティのデータ型は、手順 1a で指定したデータ型と同じにする必要があります。
    4. 次に例を示します。
      <form-bean name="processButtonForm"
         type="org.apache.struts.action.DynaActionForm">
         <form-property name="chosenContents"
            type="
      [Lcom.bea.console.handles.Handle;"/>
      </form-bean>

    5. Struts コンフィグレーション ファイルで、ActionForm Bean のデータを、処理を行う Java クラスに送信する Struts Action マッピングを定義します。
    6. 次に例を示します。
      <action path="/ProcessButtonAction"
         type="com.bea.medrec.extension.MedrecMBeanButtonAction"
         name="processButtonForm"
         scope="request"
         validate="false">
         <forward name="success" contextRelative="true"
            path="/ext_jsp/button_view.jsp"/>
      </action>

例 : チェック ボックスとボタンによるデータの処理

以下の手順では、テーブル行と基底の MBean データ ソースを関連付けて、その MBean の属性の値を消去するテーブルについて説明します。

  1. テーブル JSP で、チェック ボックスを表示する <wl-extension:table> タグをコンフィグレーションします。ある行のチェック ボックスをユーザが選択すると、その行 Bean の handle プロパティの値がリクエスト オブジェクトにポストされることを指定します。
  2. <wl-extension:table
        showcheckboxes="true"
        checkBoxValue="handle"
    ...
    >

    行 Bean の handle プロパティは JMXHandle オブジェクトを格納します。このオブジェクトには、その行にデータが入力された MBean インスタンスの ObjectName が含まれています。

  3. ユーザが行を選択してボタンをクリックすると、ボタンはその行 Bean の JMXHandle オブジェクトを、テーブル Bean の chosenContents プロパティ内の配列に追加します。次に、テーブル Bean をポストします (図 7-4 を参照)。
  4. Struts コントローラはテーブル Bean (Struts ActionForm Bean) をシリアライズして、シリアライズした Bean を HTTP リクエスト オブジェクトに書き込みます。次に、そのリクエストを指定されたポートレットに転送します。
  5. ポートレットは Struts Action マッピングを起動します。Action マッピングは次のことを行います。
    1. ActionForm Bean を作成して、HTTP リクエストのデータをその Bean に設定します。
    2. Action クラスを呼び出して、ActionForm Bean をそのクラスで使用できるようにします。
    3. Action クラスはフォーム Bean の chosenContents 配列 (JMXHandle のインスタンスが格納されている) を反復処理します。配列内の各要素ごとに、クラスは次のことを行います。
      JMXHandle オブジェクト内にエンコードされている MBean ObjectName を取得します。
      MBeanServer を使用してその MBean をルックアップします。
      MBeanServer を使用して、属性値を消去する MBean オペレーションを呼び出します。
    4. 処理に成功すると、Action マッピングは JSP に転送します。
    5. 図 7-4 例 : テーブルから Struts Action へのデータ フロー

      例 : テーブルから Struts Action へのデータ フロー


       

テーブル プリファレンスのコンフィグレーション

<wl:table> タグに属性を 1 つ追加すると、テーブルに表示されるテーブル カラムをユーザがコンフィグレーションできるようになります。Administration Console では、各ユーザのプリファレンスや、テーブルを表示するポートレットの各インスタンスのプリファレンスを永続化します。複数のポートレット インスタンスで 1 つのテーブルを再利用する場合、各ユーザは各ポートレット インスタンスのテーブルごとに異なるプリファレンスを設定できます。

テーブルに表示されるテーブル カラムのセットをユーザがコンフィグレーションできるようにするには、<wl:table> タグに customize="true" という属性を追加します。

次に例を示します。

<wl-extension:table
    customize="true"
...
>

Administration Console がこのテーブルを含む JSP を表示する場合、テーブル タイトルの上に [このテーブルのカスタマイズ] リンクが表示されます。このリンクがある場合、テーブル JSP は選択コントロールと [適用] または [リセット] ボタンを含むセクションを表示します。

 


その他のポータル フレームワーク ファイルの作成と拡張のデプロイメント

ポートレットをデスクトップに直接追加することもできますが、ポートレットを ContentBook 内のタブやサブタブとして表示する場合は、それを格納するブックまたはページを定義する必要があります。また、netuix-extension.xml ファイルを作成する必要もあります。このファイルは、ポートレット、ブック、およびページの位置を指定し、拡張のデプロイメント記述子として機能します。

ポートレットとナビゲーション コントロールの追加」を参照してください。

 

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