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

Administration Console の拡張

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

ポートレットとナビゲーション コントロールの追加

Administration Console では、すべてのコンテンツがポートレット内に格納されるため、拡張を最低限にする場合でもポートレット (およびポートレットのコンテンツ) を定義しなければならない場合がほとんどです。ポートレットをデスクトップに直接追加することもできますが、ポートレットを ContentBook 内のタブやサブタブとして表示する場合は、それを格納するブックまたはページを定義する必要があります。拡張で NavTreePortlet にノードを追加することもできます。そうすることで、追加したポートレットに、ユーザがデスクトップから直接移動できるようになります。

この節では、ポートレット、UI コントロール、および NavTreePortlet ノードを Administration Console に追加する方法について説明します。

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

図 6-1 ポートレットとナビゲーション コントロールを追加する開発の概要

ポートレットとナビゲーション コントロールを追加する開発の概要


 

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

手順

説明

結果

1. ポートレットの定義

ポータル フレームワークでインスタンス化できるポートレットを定義するための XML ファイルを作成する。ポートレットの定義には、どの種類のデータ (JSP、Struts Action、または Beehive ページ フロー) をロードするかを示す指示が含まれる。

ポータルのルック アンド フィールによって、ポートレットが枠線や最小化/最大化コントロールを提供するかどうかが決まる。

.portlet XML ファイル。

2. UI コントロールの定義 (省略可能)

ContentBook 内のタブ、サブタブ、またはその他の場所にポートレットを表示する場合は、ページまたはブックを定義する XML ファイルを作成する。

.pinc XML ファイル。

3. ポートレットや UI コントロールの表示位置の指定

ポータルを、ラベル付き UI コントロールの横に表示するか、コントロールを置換して表示するかを記述する XML ファイルを作成する。

netuix-extension.xml ファイル。

4. NavTreePortlet へのノードの追加 (省略可能)

NavTreePortlet から拡張内のブックやページへのリンクを作成できる。

WebLogic Server のデフォルトでは、既存のナビゲーション ツリーの末尾にコントロール名を追加できるようになっている。特定の場所にノードを挿入する場合や、ノード ツリーを作成する場合は、ノードおよびノードの場所を記述する Java クラスを独自に作成する。

.pinc XML ファイルへの追加エントリ。

場合によって、追加したノードをより詳細に制御する Java クラス。

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

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

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

 


ポートレットの定義

ポートレットは XML ファイルで定義します。ポートレットの定義には、ロードするデータの種類 (JSP、Struts Action、または Beehive ページ フロー) についての指示が含まれます。以下の節では、ポートレットを定義する方法について説明します。

ポートレット XML ファイルの詳細については、『Portal Support Schema Reference』の portlet エントリを参照してください。

JSP ポートレットの定義

JSP をロードするポートレットを定義するには、次の手順に従います。

  1. root-dir/portlets に新しいテキスト ファイルを作成し、コード リスト 6-1 のコードをコピーして貼り付けます (「拡張のディレクトリ ツリーの作成」を参照してください)。
  2. 次の命名規約を使用することをお勧めします。
    content-name.portlet

    content-name は、ポートレットに格納する JSP ファイルの名前です。たとえば、ポートレットに monitorEJB.jsp という名前の JSP ファイルを格納する場合は、ポートレット XML ファイルの名前を monitorEJB.portlet にします。

  3. コード リスト 6-1 内の以下の値を変更します。

コード リスト 6-1 JSP ファイルをロードするポートレット XML ファイルのテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
   xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0"
   xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/
      support/1.0.0 portal-support-1_0_0.xsd">
   <netuix:portlet definitionLabel="Label" title="Title" >
      <netuix:content>
         <netuix:jspContent contentUri="URI"/>
      </netuix:content>
   </netuix:portlet>
</portal:root>

Struts ポートレットの定義

拡張のビジネス ロジックとナビゲーション ロジックを JSP ファイルにカプセル化する代わりに、Apache Struts フレームワークを使用できます。「テーブルおよびフォーム用の Struts 情報の作成」を参照してください。

Struts Action をロードする (Struts Action に転送する) ポートレットを作成するには、次の手順に従います。

  1. root-dir/portlets に新しいテキスト ファイルを作成し、コード リスト 6-2 のコードをコピーして貼り付けます (「拡張のディレクトリ ツリーの作成」を参照してください)。
  2. 次の命名規約を使用することをお勧めします。
    action-name.portlet

    action-name はポートレットの転送先となる Struts Action の名前です。

  3. コード リスト 6-2 内の以下の値を変更します。

この .portlet では JSP の名前は指定しません。代わりに、正常に処理された場合は、Struts Action マッピングによって特定の JSP に転送されます。

コード リスト 6-2 Struts アクションに転送するポートレット XML ファイルのテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
   xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0"
   xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/
      support/1.0.0 portal-support-1_0_0.xsd">
   <netuix:portlet definitionLabel="Label" title="Title" >
     <netuix:strutsContent module="Struts-module"
          action="
action-path"
          refreshAction="
refresh-action-path"/>
   </netuix:portlet>
</portal:root>

ページ フロー ポートレットの定義

Beehive ページ フローをロードするポートレットを定義するには、次の手順に従います。

  1. root-dir/portlets に新しいテキスト ファイルを作成し、コード リスト 6-3 のコードをコピーして貼り付けます (「拡張のディレクトリ ツリーの作成」を参照してください)。
  2. 次の命名規約を使用することをお勧めします。
    pageFlow-name.portlet

    pageFlow-name はポートレットがロードする (ポートレットの転送先となる) ページ フローの名前です。たとえば、ポートレットが myPageFlow.jpf というページ フローに転送される場合は、ポートレット XML ファイルの名前を myPageFlow.portlet にします。

  3. コード リスト 6-3 内の以下の値を変更します。

コード リスト 6-3 ページ フローに転送するポートレット XML ファイルのテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
   xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0"
   xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/
      support/1.0.0 portal-support-1_0_0.xsd">
   <netuix:portlet definitionLabel="Label" title="Title" >
      <netuix:content>
          <netuix:pageflowContent
                 contentUri="URI"
                 action="Action"/>
                 refreshAction="refresh-Action"/>
      </netuix:content>
   </netuix:portlet>
</portal:root>

ポートレットのタイトル バーの表示

ポートレットを Administration Console のデスクトップ上 (「page」ページのプレースホルダ内) に配置する場合は、タイトル バーを表示するようにポートレットをコンフィグレーションします。ポートレットを ContentBook に置く場合は、タイトル バーは表示しません。

タイトル バーを表示するには、次の手順に従います。

  1. ポートレットの .portlet XML ファイルで、netuix:portlet 要素の title 属性の値を指定します。ローカライズされた値を表示するには、「ポートレット タイトルのローカライズ」を参照してください。
  2. netuix:portlet 要素の子要素として以下の要素を指定します。
  3. <netuix:titlebar/>

    ポートレットを最小化および最大化できるようにするには、空の <netuix:titlebar/> 要素の代わりに以下のスタンザを指定します。

    <netuix:titlebar>
         <netuix:minimize/>
         <netuix:maximize/>
    </netuix:titlebar>

コード リスト 6-4 では、タイトル バーを表示するポートレットを定義しています。このポートレットは最小化または最大化でき、タイトルの値はメッセージ バンドルから取得します。

コード リスト 6-4 例 : ローカライズされたタイトルを表示するポートレット

<?xml version="1.0" encoding="UTF-8"?>
<portal:root xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
   xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0"
   xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/
      support/1.0.0 portal-support-1_0_0.xsd">
   <netuix:portlet definitionLabel="medrecEAR.Monitor.Portlet" 
       title="medrecMBean.myPortlet.title"
       backingFile="com.bea.medrec.extension.utils.DesktopViewBacking">
      <netuix:titlebar>
          <netuix:minimize/>
          <netuix:maximize/>
      </netuix:titlebar>
      <netuix:content>
         <netuix:strutsContent module="/medrecMBean"
              action="RetrieveCustomMBeansAction"
               refreshAction="RetrieveCustomMBeansAction"/>
      </netuix:content>
   </netuix:portlet>
</portal:root>

ポートレット タイトルのローカライズ

デフォルトでは、ポートレットは <netuix:portlet> 要素の title 属性に入力されたリテラル値を表示します。このタイトルをローカライズできるようにするには、次の手順に従います。

  1. title 属性の値を取得し、プロパティ ファイルで title 属性の値に一致するキーを検索して、そのプロパティ キーの値を返す Java クラスを作成します。
  2. たとえば、title="myPortlet.title" と指定した場合、Java クラスはメッセージ バンドルを検索して myPortlet.title=MyCompany's Portlet を見つけ、表示するテキストとして MyCompany's Portlet を返します。

    ポートレット タイトルをローカライズするためのバッキング クラスの作成」を参照してください。

  3. .portlet ファイルで、<netuix:portlet> 要素内に以下の属性を指定します。
  4. 次に例を示します。
    <netuix:portlet definitionLabel="myPortlet" title="myPortlet.title"
          backingFile="com.mycompany.extension.utils.MyPortletBacking">

ポートレット タイトルをローカライズするためのバッキング クラスの作成

バッキング クラスは、ポータル フレームワーク API と直接対話する Java クラスです。ローカライズされたポートレット タイトルを取得するバッキング クラスを作成するには、次の手順に従います。

  1. com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking を拡張します。
  2. AbstractJspBacking.preRender(HttpServletRequest request, HttpServletResponse response) メソッドを実装します。
  3. 『WebLogic Portal API Reference』の「AbstractJspBacking.preRender()」を参照してください。

    このメソッドの実装で以下を行います。

    1. HttpServletRequest オブジェクトからロケールを取得します。
    2. 次の API を使用します。
      javax.servlet.http.HttpServletRequest.getSession().getAttribute( "org.apache.struts.action.LOCALE")

    3. メッセージ バンドルを取得します。
    4. 次の API を使用します。
      org.apache.struts.util.MessageResources.getMessageResources(
          "
      myBundle");
      myBundle はメッセージ バンドルの名前です (「メッセージ バンドルの作成」を参照してください)。

    5. ポートレットの title プロパティの値を取得します。
    6. 次の API を使用します。
      PortletBackingContext bctx =
           PortletBackingContext.getPortletBackingContext(
               HttpServletRequest req);
      MessageResources.getMessage(
      locale, bctx.getTitle());

      localeHttpServletRequest オブジェクトから取得したロケールです。

    7. ポートレットの title プロパティの値を、前述の手順で取得したローカライズされた値にリセットします。
    8. 次の API を使用します。
      PortletBackingContext.getTitle(String title)
      title はメッセージ バンドルから取得した値です。

コード リスト 6-5 例 : ポートレット タイトルをローカライズするためのバッキング クラス

package com.bea.medrec.extension.utils;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.util.MessageResources;
import com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking;
import com.bea.netuix.servlets.controls.portlet.backing.PortletBackingContext;
public class DesktopViewBacking extends AbstractJspBacking {
   public boolean preRender(HttpServletRequest req, HttpServletResponse res) {
      // 現在のポートレットの PortletBackingContext を取得する。
      // PortletBackingContext には、現在のポートレットの
      // プロパティとメソッドが含まれている
      PortletBackingContext bctx =
         PortletBackingContext.getPortletBackingContext(req);
      if (bctx != null) {
         // タイトルにピリオドがない場合は、preLocalized と想定するか、
         // キーのフォーマットに従う
         if (bctx.getTitle().indexOf(".")!=-1){
            // HTTPServletRequest からロケールを取得する
            Locale locale = (Locale) req.getSession().getAttribute(
               "org.apache.struts.action.LOCALE");
            // 「medrecMBean」というメッセージ バンドルを見つける
            MessageResources messages =
               MessageResources.getMessageResources("medrecMBean");
            // ポートレットの「title」プロパティの値を取得する
            String msg = messages.getMessage(locale, bctx.getTitle());
            // 「title」プロパティの値をローカライズされた値で
            // リセットする
            bctx.setTitle(msg);
         }
      }
      return true;
   }
}

 


UI コントロールの定義 (省略可能)

Administration Console にタブまたはサブタブを追加する場合は、既存の階層に適合するブックまたはページ UI を定義する必要があります。

ブックおよびページの定義を、1 つまたは複数のポータル インクルード (.pinc) ファイルに保存します。コントロールの階層グループごとに 1 つの .pinc ファイルを作成します。たとえば、最上位のタブとそのサブタブを作成するブック用に 1 つの .pinc ファイルを作成します。また、既存の WebLogic Server タブにサブタブを追加するページ用にも別の .pinc ファイルを作成します。.pinc ファイルのルート要素 (portal:root) には、直接の子要素を 1 つのみ持たせることができます。その子要素には、複数の子を持たせることができます。

以下の節では、ブックやページの作成について説明します。

サブタブを含まないタブの作成

サブタブのないタブ ([ドメイン : メモ] など) を定義するポータル インクルード (.pinc) XML ファイルを作成するには、次の手順に従います。

  1. コード リスト 6-6 のコードをコピーして、新しいテキスト ファイルに貼り付けます。
  2. たとえば、root-dir/controls/MyApp.pinc というファイルを作成します。
    root-dir は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。

  3. コード リスト 6-6 内の以下の値を変更します。

コード リスト 6-6 では、ブックではなくページを定義している点に留意します。こうすることで、Administration Console のルック アンド フィールによって、ページがサブタブのないタブとして表示されます。

コード リスト 6-6 サブタブのないタブを作成する .pinc ファイルのテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<portal:root
   xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
   xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0"
   xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/support
      /1.0.0 portal-support-1_0_0.xsd">
   <netuix:page markupName="page" markupType="Page"
      definitionLabel="Page-Label" title="Page-Title"
      skeletonUri="/framework/skeletons/default/wlsworkspace/
         page_content.jsp">
         <netuix:meta name="skeleton-resource-bundle" content="Bundle"/>
         <netuix:content>
            <netuix:gridLayout columns="1" markupType="Layout"
               markupName="singleColumnLayout">
            <netuix:placeholder flow="vertical" markupType="Placeholder"
               markupName="singleColumn_columnOne">
               <netuix:portletInstance markupType="Portlet"
                  instanceLabel="Portlet-Instance-Label"
                  contentUri="Portlet-URI"/>
            </netuix:placeholder>
         </netuix:gridLayout>
      </netuix:content>
   </netuix:page>
</portal:root>

サブタブを含むタブの作成

タブと 1 つまたは複数のサブタブを定義するポータル インクルード (.pinc) XML ファイルを作成するには、次の手順に従います。

  1. コード リスト 6-7 のコードをコピーして、新しいテキスト ファイルに貼り付けます。そのファイルを、root-dir の下にあるディレクトリに保存します。
  2. たとえば、root-dir/controls//MyApp.pinc というファイルを作成します。
    root-dir は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。

  3. タブを定義するには、コード リスト 6-7 の値を以下のように置き換えます。
  4. 最初のサブタブを定義するには、コード リスト 6-7 の値を以下のように置き換えます。
  5. サブタブを追加で作成するには、コード リスト 6-7netuix:page 要素の兄弟として別の netuix:page 要素を追加します。

ポータル インクルード XML ファイルの詳細については、『Portal Support Schema Reference』を参照してください。

この .pinc ファイルでは、以下の要素も使用しています。

コード リスト 6-7 サブタブを含む最上位タブを定義する .pinc ファイルのテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<portal:root
   xmlns:netuix="http://www.bea.com/servers/netuix/xsd/controls/netuix/1.0.0"
   xmlns:html="http://www.w3.org/1999/xhtml-netuix-modified/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:portal="http://www.bea.com/servers/netuix/xsd/portal/support/1.0.0"
   xsi:schemaLocation="http://www.bea.com/servers/netuix/xsd/portal/support
      /1.0.0 portal-support-1_0_0.xsd">
   <netuix:book markupName="book" markupType="Book"
      definitionLabel="Book-Label" title="Book-Title">
      <netuix:singleLevelMenu markupType="Menu" markupName="singleLevelMenu"
         skeletonUri="singlelevelmenu_children.jsp"/>
      <netuix:meta name="skeleton-resource-bundle" content="Bundle"/>
      <netuix:content>
         <netuix:page markupName="page" markupType="Page"
            definitionLabel="Page-Label" title="Page-Title"
            skeletonUri="/framework/skeletons/default/wlsworkspace/
               page_content.jsp">
            <netuix:meta name="Metadata-Type" content="Metadata-ID"/>
            <netuix:meta name="breadcrumb-context" content="handle"/>
            <netuix:meta name="skeleton-resource-bundle" content="Bundle"/>
            <netuix:content>
               <netuix:gridLayout columns="1" markupType="Layout"
                  markupName="singleColumnLayout">
                  <netuix:placeholder flow="vertical" markupType="Placeholder"
                     markupName="singleColumn_columnOne">
                     <netuix:portletInstance markupType="Portlet"
                        instanceLabel="Portlet-Instance-Label"
                        contentUri="Portlet-URI"/>
                  </netuix:placeholder>
               </netuix:gridLayout>
            </netuix:content>
         </netuix:page>
         <!-- ここに追加の netuix:page 要素を追加する -->
      </netuix:content>
   </netuix:book>
</portal:root>

サブタブの作成

既存の WebLogic Server タブに追加できるサブタブを作成するには、次の手順に従います。

  1. ページ UI コントロールを定義する .pinc ファイルを作成します。コード リスト 6-6 を参照してください。
  2. netuix-extension.xml ファイルで、サブタブを含める WebLogic Server ブック UI コントロールを指定します。「ContentBook へのタブまたはサブタブの追加」を参照してください。

タブやサブタブのないコントロールの作成

ContentBook 内のブックやページは、必ずしもタブやサブタブでアクセスできるようにする必要はありません。要約テーブルを表示する多くの WebLogic Server ページは、NavTreePortlet からアクセスすることはできますが、タブ付きインタフェースからはアクセスできません (図 2-5 を参照してください)。

これまでの節のすべてのコード リストは、子にアクセスするためのタブやサブタブを表示しない親コントロール内にも挿入できます。「ポートレットや UI コントロールの表示位置の指定」を参照してください。

 


ポートレットや UI コントロールの表示位置の指定

ポートレットや UI コントロールを表示するすべての位置は、Administration Console 内の既存のコントロールに対する相対パスで指定する必要があります。たとえば、作成したポートレットが [システム状態] ポートレットの下のデスクトップに表示されるように指定できます。

ポートレットまたは UI コントロールの表示位置を指定するには、次の手順に従います。

  1. netuix-extension.xml という名前の XML ファイルを作成し、次のディレクトリに保存します。
    root-dir/WEB-INF
    root-dir は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
  2. NetUI 拡張 XML ファイル (netuix-extension.xml) は、拡張のデプロイメント記述子です。拡張の各親 UI コントロールと表示位置を宣言しています (コード リスト 6-8 を参照)。詳細については、『NetUI Extensions Schema Reference』を参照してください。

  3. <weblogic-portal-extension> ルート要素を作成します。
  4. (省略可能) 拡張について説明する <provider-info> 要素を作成します。
  5. この要素は、あくまで拡張の内容を説明するためのものです。ポータル フレームワークでこの要素内のデータが使用されることはありません。

  6. 次の要素を追加します。
    <portal-file>/console.portal</portal-file>
  7. この必須要素では、Administration Console の .portal ファイル (現在拡張しているポータル) の名前と相対位置を指定します。

  8. 以下のいずれかを実行します。

デスクトップへのポートレットの追加

ポートレットを Administration Console デスクトップに追加するには、netuix-extension.xml ファイル内に以下のスタンザを作成します (コード リスト 6-8 を参照)。

<page-extension>
   <page-location>
      <parent-label-location label="page"/>
      <page-insertion-point layout-location="
layout"
         placeholder-position="0"/>
   </page-location>
   <portlet-content
      content-uri="
portlet-URI" title="title"
      orientation="top" default-minimized="false"
      instance-label="
portlet-instance-label"/>
</page-extension>

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

ContentBook へのタブまたはサブタブの追加

タブを表示するコントロールを追加するには、netuix-extension.xml ファイル内に以下のスタンザを作成します (コード リスト 6-8 を参照)。

<book-extension>
   <book-location>
      <parent-label-location label="
Admin-Console-Book-Label"/>
      <book-insertion-point action="append"/>
   </book-location>
   <book-content content-uri="
pinc-URI"/>
</book-extension>

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

既存のタブにサブタブを表示するコントロールを追加するには、前の手順と同じスタンザを作成し、次の値を指定します。

例 : ポートレットと UI コントロールの場所の指定

コード リスト 6-8 は、ポートレットをコンソールのデスクトップに、タブを WebLogic Server の [ドメイン] タブに、サブタブを [ドメイン : コンフィグレーション] タブに追加する netuix-extension.xml ファイルです。

コード リスト 6-8 netuix-extension.xml ファイルのサンプル

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-portal-extension
   xmlns="http://www.bea.com/servers/portal/weblogic-portal/8.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.bea.com/servers/portal/weblogic-portal/
      8.0 netuix-extension-1_0_0.xsd">
   <provider-info>
      <title>My Extension</title>
      <version>1.0</version>
      <description>Inserts a portlet on the desktop, a tab next to
           Domains:Configuration, and a subtab under Domains: Configuration.
      </description>
      <author>Me</author>
      <last-modified>02/03/2005</last-modified>
      <support-url>http://www.mycompany/support/index.jsp</support-url>
   </provider-info>
   <portal-file>/console.portal</portal-file>
   <!-- コンソールのデスクトップにポートレットを追加する -->
   <page-extension>
      <page-location>
         <parent-label-location label="page"/>
         <page-insertion-point layout-location="0" placeholder-position="0"/>
      </page-location>
      <portlet-content content-uri="/portlets/desktop/desktop_view.portlet"
         title="My App Status" orientation="top" default-minimized="false"
          instance-label="PortletExtensionInstanceLabel"
      />
   </page-extension>
   <!-- [ドメイン] タブにタブを追加する -->
   <book-extension>
      <book-location>
         <parent-label-location label="CoreDomainConfigGeneralBook"/>
         <book-insertion-point action="append"/>
      </book-location>
      <book-content content-uri="/controls/page.pinc"/>
   </book-extension>
<!-- [ドメイン : コンフィグレーション] タブにサブタブを追加する -->
   <book-extension>
      <book-location>
         <parent-label-location label="DomainconfigTabPage"/>
         <book-insertion-point action="append"/>
      </book-location>
      <page-content content-uri="/controls/notespage.pinc"/>
   </book-extension>
</weblogic-portal-extension>

 


NavTreePortlet へのノードの追加 (省略可能)

ドメイン構造ポートレット (NavTreePortlet) には、Administration Console のコンテンツに移動するために使用できるツリー コントロールが含まれています。ツリー内の各ノードは UI ページ コントロールへのリンクです。ノードにはサブノードを含めることができます。

拡張では、ツリー内の任意の場所に単一のノードを追加できます。他のノード (ノード ツリー) 含むノードを任意の場所に追加することもできます。たとえば、既存のナビゲーション ツリーのルートにノードまたはノード ツリーを追加できます。また、[環境] ノードにノードまたはノード ツリーを追加できます。図 6-2 を参照してください。

図 6-2 例 : ノードまたはノード ツリーの追加

例 : ノードまたはノード ツリーの追加


 

以下の節では、NavTreePortlet へのノードの追加について説明します。

既存のツリーのルートへの単一ノードの追加

ページ コントロールの 1 つにリンクするノードを追加するには、コントロールの .pinc ファイル内の netuix:page 要素に、次の属性と属性値を追加します。
backingFile="com.bea.console.utils.NavTreeExtensionBacking"

たとえば、作成したページへのリンクを追加する場合、そのページを定義する .pinc ファイルに backingFile 属性を追加します。

<netuix:page definitionLabel="MyAppTableBook" title="My Page"
   markupName="page"
   markupType="Page"
   backingFile="com.bea.console.utils.NavTreeExtensionBacking"
>

NavTreePortlet により、そのページ要素の title 属性の値がリンク テキストとして表示されます。図 6-3 を参照してください。

title 属性の値をメッセージ バンドルのキーにした場合は、そのキーにマッピングされたローカライズ済みの値が表示されます。

図 6-3 既存のツリーのルートへのノードの追加

既存のツリーのルートへのノードの追加


 

複数のノードやノード ツリーの追加または挿入

NavTreePortlet に追加するノードの位置を制御する場合や、ノード ツリーを追加する場合は、独自の NavTreeExtensionBacking バッキング クラスを実装します。

以下の節では、ノードまたはノード ツリーの追加または挿入について説明します。

NavTreeBacking クラスの作成

NavTreeBacking クラスを作成するには、次の手順に従います (コード リスト 6-9 を参照)。

  1. com.bea.console.utils.NavTreeExtensionBacking を拡張します。
  2. このクラスは、あらかじめ WebLogic Server 実行時環境で利用できる状態になっています。ただし、開発とコンパイルの環境をサポートするためには、以下の JAR を環境のクラスパスに追加する必要があります。
    WL_HOME/server/lib/consoleapp/webapp/WEB-INF/lib/console.jar
    WL_HOME/server/lib/consoleapp/webapp/WEB-INF/lib/netuix_servlet.jar

    WL_HOME は、WebLogic Server のインストール先ディレクトリです。

  3. NavTreeExtensionBacking.getTreeExtension(
    PageBackingContext ppCtx, String extensionUrl)
    メソッドをオーバーライドします。
  4. このメソッドの実装で以下を行います。

    1. 親ノードの com.bea.jsptools.tree.TreeNode オブジェクトを作成します。
    2. 次のコンストラクタを使用します。
      TreeNode(String nodeId, String nodeName, String nodeUrl)
      各値の説明は次のとおりです。

      nodeId は、コントロールの definitionLabel の値です。PageBackingContext.getDefinitionLabel() を使用してこの値を取得できます。代わりに、コントロールの .pinc ファイル内の definitionLabel の値を入力することもできます。

      nodeName は、NavTreePortlet に表示するテキストです。テキストを含む String オブジェクトを作成できます。または、PageBackingContext.getTitle() を使用して、ページの .pinc ファイルからこの値を取得できます。

      注意 : PageBackingContext.getTitle() メソッドは .pinc ファイル内の title 属性のリテラル値を返します。この値がキーであるとは想定しないため、メッセージ バンドルから値を検索しようとはしません。NavTreeExtensionBacking クラスでローカライゼーションをサポートする必要がある場合は、ロケールを検索するロジックをクラスに含めます。PageBackingContext.getTitle() メソッドを使用して title 値を取得し、メッセージ バンドルから対応する値を検索します。そのようなロジックの例については、コード リスト 6-5 を参照してください。この例では (ページ タイトルではなく) ポートレット タイトルをローカライズしています。

      nodeURL は、そのコントロールの URL です。このパラメータの値として extensionUrl を指定します。

    3. ノードのツリーを追加する場合は、別の TreeNode オブジェクトを親 TreeNode の子として作成します。
    4. 各子ノードで、次のコンストラクタを使用します。
      TreeNode(String nodeId, String nodeName,
         String
      nodeUrl, TreeNode parent)

      nodeId は、コントロールの definitionLabel の値です。PageBackingContext.getDefinitionLabel() を使用してこの値を取得することはできません。これは、このメソッドで使用できる PageBackingContext が親ノード用であるためです。代わりに、コントロールの .pinc ファイル内の definitionLabel の値を入力する必要があります。

      nodeName は、NavTreePortlet に表示するテキストです。

      nodeURL は、そのコントロールの URL です。次の値を指定します。
      /console/console.portal?_nfpb=true&_pageLabel=definitionLabel
      definitionLabel はリンク先のページの definitionLabel です。

      parent には、作成した TreeNode のいずれかを指定します。ノード ツリーに複数のレベルを作成するには、階層内でより上位にあるノードの子を親として指定します。

    5. TreeNode オブジェクトを com.bea.console.utils.NavTreeExtensionEvent のコンストラクタに渡します。
    6. 次のコンストラクタを使用します。
      NavTreeExtensionEvent(String pageLabel, String url,
         String
      parentPath, TreeNode node, int ACTION)

      pageLabel は、親ノードの TreeNode オブジェクトを作成したときに使用した nodeID と同じ値です。

      url は、親ノードの TreeNode オブジェクトを作成したときに使用した nodeURL と同じ値です。

      parentPath は、ノードに表示するノードの名前です。NavTreePortlet のナビゲーション ツリーのルートを表すには / (スラッシュ) を使用します。

      たとえば、ノードまたはノード ツリーを最上位に表示する場合は / を指定します。ノードを [環境] の子として表示する場合は、/Environments を指定します。

      node は、手順 a で作成した親 TreeNode です。

      ACTION は、NavTreeExtensionEvent.APPEND_ACTION です。使用できるその他のアクションについては、『WebLogic Server Administration Console API Reference』の「NavTreeExtensionEvent」を参照してください。

    7. 作成した NavTreeExtensionEvent オブジェクトを返します。
  5. コンパイルしたクラスを、拡張の WEB-INF/classes ディレクトリ内のパッケージ構造に保存します。

コード リスト 6-9 NavTreeExtensionBacking クラスのサンプル

package com.mycompany.consoleext;
import com.bea.netuix.servlets.controls.page.PageBackingContext;
import com.bea.jsptools.tree.TreeNode;
import com.bea.console.utils.NavTreeExtensionBacking;
import com.bea.console.utils.NavTreeExtensionEvent;
public class CustomNavTreeExtension extends NavTreeExtensionBacking {
   public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
      String extensionUrl){
     /*
      * このメソッドを呼び出したコントロールの TreeNode を作成する
      */
      TreeNode node = new TreeNode(ppCtx.getDefinitionLabel(),
         ppCtx.getTitle(),extensionUrl);
     /*
      * 子 TreeNode を作成する
      */
      TreeNode node1 = new TreeNode("MyAppGeneralTabPage",
         "MyApp General",
         "/console/console.portal?_nfpb=true&_pageLabel=MyAppGeneralTabPage",
           node);
     /*
      * 親ノード (その子ノードを含む) を NavTreePortlet の
      * Environment ノードの下に追加する
      */
      NavTreeExtensionEvent evt =
        new NavTreeExtensionEvent(ppCtx.getDefinitionLabel(),extensionUrl,
        "/Environment",node);
      return evt;
   }
}

NavTreeBacking クラスの呼び出し

NavTreeBacking クラスを呼び出して、「例 : NavTreeExtensionBacking クラスによる NavTreePortlet へのノード ツリーの追加方法」に示すプロセスを開始するには、次の手順に従います。

  1. 親ノードとして追加する UI ページ コントロールを決定します。
  2. NavTreePortlet にノードとして追加できるのはページ コントロールのみです。

  3. コントロールの .pinc ファイルにある netuix:page 要素に、次の属性と属性値を追加します。
    backingFile="your-NavTreeBacking-class"
  4. your-NavTreeBacking-class は、手順 1 で作成したクラスの完全修飾名です。

例 : NavTreeExtensionBacking クラスによる NavTreePortlet へのノード ツリーの追加方法

以下の例では、NavTreeExtensionBacking クラスにおいて、図 6-4 に示したノード ツリーを追加する方法について説明します。

  1. ポータル フレームは拡張をロードすると、拡張の .pinc ファイルを解析して netuix:page 要素を検索します。
  2. 次に例を示します。

    <netuix:page definitionLabel="MyAppTablePage" title="My App"
       markupName="page"
       markupType="Page"
       backingFile="com.mycompany.utils.MyNavTreeExtension"
    >

  3. ポータル フレームワークは com.bea.netuix.servlets.controls.page.PageBackingContext オブジェクトをインスタンス化します。このインスタンスはページ UI コントロールをメモリ内で表現したものです。オブジェクトには、ページ コントロールの titledefinitionLabel について記述したプロパティが含まれています。
  4. ポータル フレームワークは netuix:page 要素内の backingFile 属性を見つけると、指定されたクラス (MyNavTreeExtension) を初期化し、ページの PageBackingContext オブジェクトに渡してクラスを作成します。ページ コントロールの URI を含む String オブジェクトも渡します。
  5. MyNavTreeExtension クラスは、次のことを行います。
    1. PageBackingContext オブジェクトから titledefinitionLabel の値を取得します。
    2. com.bea.jsptools.tree.TreeNode オブジェクトを作成して、ページ コントロールの URI と一緒に titledefinitionLabel の値をコンストラクタに渡します。
    3. 「Monitor EJBs」および「Log Messages」というタイトルの 2 つのページ用に、さらに 2 つの TreeNode オブジェクトを作成します。
    4. この 2 つのページの PageBackingContext オブジェクトまたは URI を取得する方法はないため、値を MyNavTreeExtension クラス内にハードコード化する必要があります。

      ページを「My App」ページ ノードの子ノードにするため、MyNavTreeExtension クラスは、親ノードの名前を受け取る TreeNode コンストラクタのフォームを使用します。次に例を示します。

      TreeNode childnode1 = new TreeNode("MyAppMonitorEJB",
        "Monitor EJBs",
        "/console/console.portal?_nfpb=true&_pageLabel=MyAppMonitorEJB",
        node);

    5. com.bea.console.utils.NavTreeExtensionEvent オブジェクトを作成して返します。
    6. NavTreeExtensionEvent オブジェクトには、作成した TreeNode オブジェクトが記述されており、ノード ツリーを追加する既存のナビゲーション ツリー内の位置が示されています。

  6. NavTreePortlet は NavTreeExtensionEvent オブジェクトをリスンします。ポートレットはツリーを初期化した後、ブロードキャストされる NavTreeExtensionEvent オブジェクトで指定されているとおりにノードを追加します。
  7. 図 6-4 例 : NavTreePortlet へのノード ツリーの追加

    例 : NavTreePortlet へのノード ツリーの追加


     

 


カスタム セキュリティ プロバイダ ページへのナビゲーション

カスタム セキュリティ プロバイダを作成し、プロバイダを管理する MBean を WebLogic MBeanMaker を使用して作成した場合、Administration Console ではそのプロバイダのコンフィグレーション データを表示するページが自動的に生成されます。また、[セキュリティ : プロバイダ] テーブルからそのプロバイダ ページへのリンクも生成されます。

しかし、独自のページを作成してこの表示をカスタマイズすることもできます。独自のページを作成した場合は、[セキュリティ : プロバイダ] テーブルからのリンク先を、Administration Console によって自動生成されたページからカスタム ページに変更する必要があります。

リンク先を変更するには、作成したページの <netuix:page> 要素の子として次の要素を含めます。

<netuix:meta type="configuration" content="MBean-class-name"/>

MBean-class-name は、作成したプロバイダの MBean クラスの完全修飾名です。

次に例を示します。

<netuix:page markupName="page" markupType="Page"
   definitionLabel="SimpleSampleAuthorizerAuthorizerConfigCommonTabPage"
   title="tab.common.label"
   skeletonUri="/framework/skeletons/default/wlsworkspace
      /page_content.jsp">
   
<netuix:meta name="configuration"
   content="examples.security.providers.authorization.simple.
      SimpleSampleAuthorizerMBean"/>
   <netuix:content>
...

 

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