Oracle® Fusion Middleware

Oracle WebLogic Server管理コンソールの拡張

12c (12.1.2)

E48058-02(原本部品番号:E28109-02)

2014年2月

このマニュアルでは、Oracle WebLogic Server管理コンソールを拡張し、ルック・アンド・フィールを変更しおよびコンソール拡張機能のヘルプの追加する方法について説明します。

Oracle Fusion Middleware Oracle WebLogic Server管理コンソールの拡張, 12c (12.1.2)

E48058-02

Copyright © 2001, 2014, Oracle and/or its affiliates. All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- ドキュメントのアクセシビリティについて

- 表記規則

1 概要とロードマップ

- ドキュメントの内容と対象読者

- このドキュメントの手引き

- 関連ドキュメント

- このリリースでの新機能と変更された機能

2 管理コンソール拡張の理解

- 管理コンソール拡張とは

- WebLogic PortalフレームワークとWebLogic Portalの違い

- 管理コンソールの拡張ポイント

- UIコントロールの階層

- 管理コンソールのデスクトップ

- デスクトップの拡張

- 管理コンソールのルック・アンド・フィール

- ルック・アンド・フィールの拡張

- Homeブックとページ

- Homeブックの拡張

- ContentBook

- ContentBookの拡張

- 管理コンソールのUIコントロールの要約

- JSPテンプレートとタグ・ライブラリ

- JSPタグ・ライブラリ

- 例: Strutsポートレットによるコンテンツの表示

3 開発環境の設定

- クラスパスの設定(オプション)

- タグ・ライブラリのIDEへのインポート(オプション)

- 拡張のディレクトリ・ツリーの作成

- UIコントロール・ラベルを表示するための環境設定の構成

4 メッセージ・バンドルの作成

5 管理コンソールのリブランディング

- ルック・アンド・フィールを作成するために使用するファイル

- プロセスの概要

- アンド・フィール・テンプレートの展開

- ファイルの変更または置換え

- 管理コンソールのバナーの変更

- ログイン・ページの修正

- 色、フォント、ボタン、画像の変更

- スタイル・シートのプロパティ

- スタイル・シートと一緒に使用する画像。

- ルック・アンド・フィールでのメッセージ・バンドルの使用

- NetUI拡張ファイルの作成

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

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

- ポートレットの定義

- JSPポートレットの定義

- Strutsポートレットの定義

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

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

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

- UIコントロールの定義(オプション)

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

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

- サブタブの作成

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

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

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

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

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

- NavTreePortletへのノードの追加(オプション)

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

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

- NavTreeBackingクラスの作成

- NavTreeBackingクラスの呼出し

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

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

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

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

- フォームと表の概要

- フォームと表のデータ・モデル

- フォームのデータ・モデル

- 表のデータ・モデル

- ActionFormと行Beanのハンドル

- 表およびフォーム用のStruts情報の作成

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

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

- Struts ActionFormおよびActionマッピングの構成

- 表JSPのStruts情報の作成

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

- WebLogic ServerのJSPテンプレート

- フォームJSPの作成

- モニター用の表JSPの作成

- 他のページに移動するための表の列の作成

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

- column-linkタグの使用

- column-dispatchタグの使用

- 表へのボタンとチェック・ボックスの追加

- 表へのボタンの追加

- 表へのボタンとチェック・ボックスの追加

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

- 表プリファレンスの構成

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

8 コンソール拡張のオンライン・ヘルプの追加

- 手順の概要

- ヘルプセットの作成

- ヘルプセット・ファイル

- ヘルプセットのマージ

- 拡張ヘルプをマージするためのディレクトリ構造

- ヘルプセットのローカライズ

- ヘルプセットをマージする方法

- 状況依存のヘルプのサポート

- ヘルプIDの提供

- helpid

- helpurlpattern

- ヘルプIDのヘルプ・ファイルへのマップ

- ヘルプのリブランディング

- ヘルプのデプロイメント

9 コンソール拡張のアーカイブとデプロイ

- コンソール拡張のアーカイブとデプロイ

- デプロイメント中のエラーの出力

はじめに

この節では、このマニュアル『Oracle WebLogic Server Administration Consoleの拡張』のドキュメントのアクセシビリティ機能と使用されている表記規則について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

斜体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 概要とロードマップ

管理コンソールを拡張すると、WebLogic Serverにインストールされているファイルを修正することなく、WebLogic Server管理コンソールのコンテンツを追加または置換したり、ロゴ、スタイル、色を変更したりできます。たとえば、カスタマイズされたアプリケーション・モニター機能や管理機能を備えたコンテンツを追加できます。

管理コンソールは、WebLogic Portalフレームワーク、Apache Beehive、Apache Struts、Java Server Page (JSP)、および他の標準技術を使用してユーザー・インタフェース(UI)とコンテンツを表示するJava EE Webアプリケーションです。WebLogic Portalフレームワークは、拡張を有効にするためにも使用します。

注意:

監視ダッシュボードは他の管理コンソールと異なる方法で実装されているので、同じ方法では拡張できません。ただし、新しいビューとチャートを作成できます。詳細は、『Oracle WebLogic Server診断フレームワークの構成と使用』の監視ダッシュボードの使用に関する項を参照してください。第5章「管理コンソールのリブランディング」の説明に従って、管理コンソールのスタイルに対して行われた、いくつかの変更が監視ダッシュボードに適用されています。

以下の節では、このガイド『Oracle Fusion Middleware Oracle WebLogic Server管理コンソールの拡張』の内容と構成について説明します。

- ドキュメントの内容と対象読者

- このドキュメントの手引き

- 関連ドキュメント

- このリリースでの新機能と変更された機能

ドキュメントの内容と対象読者

このドキュメントは、WebLogic Serverを自社の製品に組み込む(またはリブランディングする)ソフトウェア・ベンダー、セキュリティ・プロバイダなどのリソースを開発してWebLogic Serverの機能を拡張するソフトウェア・ベンダー、およびアプリケーションにカスタマイズされたモニター機能や構成機能を追加するJava EEアプリケーション開発者を対象としています。

このドキュメントは、Java、JavaServer Pages、およびApache StrutsまたはApache Beehiveを使用したJava EE Webアプリケーションの開発に精通している読者を対象としています。このドキュメントでは、限定的でありながら有用な管理コンソール拡張を開発するための実践的な方法を重点的に扱います。管理コンソール拡張をより広範な管理上の問題に適用するには、「関連ドキュメント」に挙げるドキュメントを参照してください。

このドキュメントの手引き

- 第1章「概要とロードマップ」では、このドキュメントの構成を紹介します。

- 第2章「管理コンソール拡張の理解」では、管理コンソール拡張を作成するための基本要素について説明します。

- 第3章「開発環境の設定」では、管理コンソール拡張を開発するための環境を設定する方法について説明します。

- 第4章「メッセージ・バンドルの作成」では、拡張で表示されるテキストをローカライズ可能なプロパティ・ファイルにカプセル化する方法について説明します。

- 第5章「管理コンソールのリブランディング」では、WebLogic Portalのルック・アンド・フィールを作成し、管理コンソール拡張としてデプロイする方法について説明します。

- 第6章「ポートレットとナビゲーション・コントロールの追加」では、単純な静的コンテンツを含むポートレットを管理コンソールに追加する方法について説明します。

- 第7章「OracleテンプレートとJSPタグの使用」では、管理コンソールのJSPテンプレート、スタイル、およびJSPタグ・ライブラリを使用する拡張の作成方法について説明します。

- 第8章「Console拡張のオンライン・ヘルプの追加」では、console拡張のためにヘルプを作成して、そのヘルプを主要な管理コンソール・ヘルプ・システムにマージする方法について説明します。

- 第9章「コンソール拡張のアーカイブとデプロイ」では、拡張をデプロイする方法について説明します。

関連ドキュメント

管理コンソールではWebLogic Portalフレームワークを使用してユーザー・インタフェースを表示するため、管理コンソールを拡張する工程は既存のWebLogic Portalアプリケーションを作成したり編集したりする工程に似ています。WebLogic Portalフレームワークについては、以下のドキュメントを参照してください。

- WebLogic PortalフレームワークとWebLogic Portalの違い

- 『Oracle WebLogic Portalポータル開発ガイド』のルック・アンド・フィールの機能を使用したユーザー・インタフェース開発に関する項。

JavaServer Pageについては、「JavaServer Pages Technology」(http://www.oracle.com/technetwork/java/javaee/jsp/index.html)を参照してください。

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

Apache Beehiveの詳細は、http://beehive.apache.org/を参照してください。

このリリースでの新機能と変更された機能

このリリースで導入されたWebLogic Serverの新機能の一覧については、『Oracle WebLogic Serverの新機能』を参照してください。

2 管理コンソール拡張の理解

この章では、WebLogic Server管理コンソール拡張について説明します。

この章の内容は以下のとおりです。

- 管理コンソール拡張とは

- 管理コンソールの拡張ポイント

- JSPテンプレートとタグ・ライブラリ

- 例: Strutsポートレットによるコンテンツの表示

管理コンソール拡張とは

管理コンソール拡張は、一連のWebLogic Portal Webアプリケーションのリソースを格納するWARファイルです。拡張をデプロイすると、拡張WARファイル内のファイルとディレクトリをもとに、管理コンソールのWARファイル内にファイルとディレクトリのインメモリー・ユニオンが作成されます。デプロイした拡張は管理コンソールの完全なメンバーになります。この拡張はWebLogic Serverのセキュリティ・レルムによって保護され、管理コンソールの他のセクションへの移動が可能で、拡張によってWebLogic Serverのリソースが変更される場合には変更制御プロセスに関与します。

最も単純な拡張は管理コンソールのホーム・ページ(デスクトップ)にコンテンツを追加するものです。そのような拡張のWARファイルには以下のものが含まれています。

- netuix-extension.xmlと呼ばれる管理コンソール拡張記述子ファイル。UI内での拡張の表示位置を記述します。

- WebLogic Portalポートレットを定義するXMLファイル。JSPや他の種類のコンテンツのコンテナとして使用します。

- 表示するコンテンツを含むJSPファイル。

より複雑な拡張のWARファイルには、以下のような追加のリソースを含めることができます。

- 管理コンソールのUI内のタブにコンテンツを表示する場合は、その他の種類のWebLogic Portal UIコントロール(タブやサブタブなど。「管理コンソールの拡張ポイント」を参照)について記述したXMLファイルを含むWARファイル。

- Apache Strutsを使用してビジネス・ロジックとナビゲーション・ロジックをカプセル化する場合は、Apache Strutsアプリケーションの構成ファイルとJavaクラスを格納したWARファイル。

- Apache Beehiveを使用してビジネス・ロジックとナビゲーション・ロジックをカプセル化する場合は、Apache Beehiveアプリケーションの構成ファイルとJavaクラスを格納したWARファイル。

- Javaクラス、画像ファイル、またはJava EE Webアプリケーションで使用可能なその他のリソース。

注意:

管理コンソールでは、WSRPポートレットやJSR 168ベースのポートレットはサポートされません。

WebLogic PortalフレームワークとWebLogic Portalの違い

WebLogic Portalフレームワークは、UIを表示するための基本的なサポートを提供します。正規のWebLogic Portal製品は、フレームワークと追加機能(パーソナライズ、対話管理、コンテンツ管理、エンド・ユーザーがポータル・デスクトップをカスタマイズするための機能など)を提供します。

WebLogic Serverがある場合は、WebLogic Portalフレームワークを使用して管理コンソール拡張を作成できます。開発したWebアプリケーションでポータル・インタフェースを提供する必要がある場合は、WebLogic Portal製品を使用してください。

管理コンソールの拡張ポイント

拡張ポイントとは、コンテンツを追加または置換できる管理コンソールのUI内の場所のことです。管理コンソールのUIは、UIコントロールと呼ばれるWebLogic Portalコンポーネントのグループごとに表示されます。コントロールの各グループはUIの特定の部分の表示を担当します。たとえば、あるグループは、ユーザーが管理コンソールへログインした後に2列のレイアウトを表示します。別のグループは、タブ付きインタフェース内の個別のタブを表示します。

管理コンソールではUIコントロールの多くにユニークなラベルが付いており、ラベル付きの各コントロールは拡張ポイントとなります。WebLogic Server JSPタグでこれらのラベルを使用して、リクエストを特定のUIコントロールに転送することもできます。ラベルで特定できないUIコントロールは、拡張したりリクエストを転送したりできません。その場合は、ラベル付きの祖先コントロールまたは子コントロールと対話する必要があります。

UIコントロールの階層

アプリケーションのUIコントロールは、ポータル・ブック・ファイル(.bookファイル)と呼ばれるXMLファイル内に定義されます。このXMLファイルのスキーマではUIコントロールの階層を指定します。UIコントロールの中には階層内の複数のレベルで使用できるものもあります。以下のリストでは、拡張の開発時に最もよく使用されるUIコントロールの種類について説明します(図2-1を参照)。

- デスクトップ
UIコントロール階層の最上位レベルです。管理コンソールおよび最上位のブック・コントロールのルック・アンド・フィールを格納します。

- ルック・アンド・フィール
画像、カスケーディング・スタイル・シート、XMLファイル、およびその他のファイル・タイプを集めたもので、これによってポータル・アプリケーションの外観を制御します。

- ブック
ページのセットや他のブックを集約します。集約したページやブックの間を移動するためのメニュー・コントロールを含めることもできます。管理コンソールの多くのブックはこのメニュー・コントロールを使用してタブを表示します(ドメインの「構成: 一般」タブなど)。

- ページ
レイアウト、ポートレット、またはブックが含まれています。

- レイアウト
UI内のグリッドを定義します。グリッド内の各列はプレースホルダーと呼ばれ、各プレースホルダーでゼロ個以上のポートレットやブックをホストできます。

管理コンソール内のほとんどのページでは単一列のレイアウトが使用されていますが、トップ・ページの1つでは2列のレイアウトを使用して、左の列にチェンジ・センターやドメイン構造などのポートレットを表示し、右の列にタブ付きインタフェースを表示しています。

- ポートレット
表示する静的および動的なコンテンツを定義します。管理コンソールには、JSPファイルを含むポートレットや、Struts ActionまたはBeehiveページ・フローに転送するポートレットを追加できます。

UIコントロールのスキーマの詳細は、ポータル・サポート・スキーマ・リファレンスを参照してください。

注意:

図2-1では、簡潔にするため、階層内の中間的なコントロールは一部省略しました。たとえば、ブック・コントロールにページ・コントロールが直接含まれることはありません。かわりに、ブックにはコンテンツというコントロールが含まれ、コンテンツ・コントロールにはページ・コントロールが含まれます。

図2-1 UIコントロールの階層のサブセット

以下の節では、管理コンソールの拡張ポイントについて説明します。

- 管理コンソールのデスクトップ

- Homeブックとページ

- ContentBook

- 管理コンソールのUIコントロールの要約

管理コンソールのデスクトップ

WebLogic Portal Webアプリケーションには必ず1つ以上のデスクトップ・コントロールが必要ですが、管理コンソールでサポートされるのは1つのみです。デスクトップ・コントロールのラベルはdefaultDesktopLabel (図2-2を参照)です。

図2-2 デスクトップ

デスクトップの拡張

管理コンソールのこのレベルでサポートされる拡張の種類はルック・アンド・フィール拡張のみです。ルック・アンド・フィールはOracleのロゴ、色、およびフォントを置換します。第5章「管理コンソールのリブランディング」を参照してください。

Homeブックを置換したり、デスクトップに他のコントロールを追加することはできません。

管理コンソールのルック・アンド・フィール

管理コンソールのルック・アンド・フィールでは、フォントと色、Oracleロゴ、ポータル・コンポーネントのレイアウト、およびナビゲーション・メニューを定義します。

注意:

管理コンソールではWebLogic Portalフレームワークのみを使用するため、ルック・アンド・フィールは1つしかサポートされません。Oracle WebLogic Portal製品で利用可能なすべての機能を使用するポータル・アプリケーションであれば、ユーザーやグループのIDごとにパーソナライズされた複数のルック・アンド・フィールをサポートできます。

ルック・アンド・フィールの拡張

会社のロゴ、フォント、カラー・スキームを含む単純なルック・アンド・フィールの拡張を作成するには、WebLogic Serverに含まれているサンプルのルック・アンド・フィールのロゴやカスケーディング・スタイル・シート(CSS)定義を置き換えます。ポータル・コンポーネントやナビゲーション・メニューのレイアウトを変更するなど、WebLogic Serverルック・アンド・フィールに複雑な変更を加える場合は、WebLogic Portalルック・アンド・フィールに関してより高度な知識が必要になります。Oracle Workshop for WebLogic Platform 9.2以降がある場合は、ルック・アンド・フィール・エディタを使用してこうした複雑な変更を加えられます。ルック・アンド・フィールの詳細は、『Oracle WebLogic Portalポータル開発ガイド』のルック・アンド・フィールの機能を使用したユーザー・インタフェース開発に関する項を参照してください。

Homeブックとページ

管理コンソールの最上位のブックは、ラベルHomeで識別されます。この最上位のブックには、すべての管理コンソールコンテンツが属す1つのページ(ラベルpage)が含まれます(図2-3を参照)。

図2-3 Homeブックとページ

pageページでは、2列のレイアウトが使用されています。左の列(レイアウト・ロケーション0)には、管理コンソールを使用する際に不可欠なサービスを提供するポートレットが含まれています。右の列(レイアウト・ロケーション1)には、以下が含まれています。

- ポートレット。

- 最上部のポートレットには、ウェルカム・メッセージが表示され、オンライン・ヘルプなどのサービスを起動するボタンが配置されています。

- 2番目のポートレットには、階層リンク(管理コンソール内でのナビゲーション(移動)の履歴を保持する一連のハイパーリンク・テキスト)が表示されます。

- 3番目のポートレットは、デフォルトでは非表示。エラー・メッセージやその他のステータス・メッセージが表示されます。

- ContentBookという名前のブック。「ContentBook」を参照してください。

Homeブックの拡張

Homeブック内での最も単純な拡張は、pageページの列へのポートレットの追加です。たとえば、「システム・ステータス」ポートレットの下に、アプリケーションをモニターするポートレットを追加できます。

より複雑な拡張ではHomeブックにブックを追加できます。そのような拡張の場合、Homeブックと拡張ブックは2つの別々のタブとして表示されます。

ContentBook

ContentBookは、40を超えるページを含むブックですが(図2-4を参照)、一度に1つのページのみを表示します。管理コンソール全体のナビゲーション・コントロールによって、どのページを表示するかが決まります。

図2-4 ContentBook

図2-4では、CoreDomainBookというページにCoreDomainConfigGeneralBookというブックが含まれています。CoreDomainConfigGeneralBookには6つの子ブックと、子ブックごとのタブ(「構成」、「モニター」、「制御」、「セキュリティ」、「Webサービス・セキュリティ」、「ノート」)を表示するsingleLevelMenuという特別なUIコントロールが含まれています。各子ブック(DomainconfigTabPageなど)には、複数の子ページ・コントロールとsingleLevelMenuコントロールが含まれています。ルック・アンド・フィールは、singleLevelMenuコントロールに、このレベルのページ・コントロール用のサブタブ(「一般」、「JTA」、「EJB」、「Webアプリケーション」、「SNMP」、「ロギング」、「ログ・フィルタ」)を生成させます。

コンテンツ固有のブックには、子ブック用のタブ付きインタフェースを表示しないものもあります。図2-5にタブ付き インタフェース を表示しないServerBookを示します。

図2-5 ServerTableBook

ContentBookの拡張

ContentBook内での最も単純な拡張は、コンテンツ固有のブックに子ブックを追加してタブを作成したり、子ページを追加してサブタブを作成したりすることです。「 UIコントロールの定義(オプション)」を参照してください。

管理コンソールのUIコントロールの要約

図2-6に、管理コンソールのラベル付きUIコントロールの最上位を示します。すべてのコンテンツ固有ブックを含むラベル付きの全UIコントロールのリストを見るには、 UIコントロール・ラベルを表示するための環境設定の構成の説明に従って、管理コンソールですべてのコンソール拡張ポイントを表示できます。

図2-6 UIコントロールの階層の要約

JSPテンプレートとタグ・ライブラリ

Oracleでは、表、データ入力ボックス、ボタンなどのUI機能の表示に使用できるJSPテンプレートとタグ・ライブラリを提供しています。JSPテンプレートの詳細は、「WebLogic ServerのJSPテンプレート」を参照してください。

JSPタグ・ライブラリ

管理コンソールでは、管理コンソール拡張で使用できる独自のタグ・ライブラリ(console-html.tld)が用意されています。管理コンソール自体が使用する、標準のサード・パーティのタグ・ライブラリに対する実行時サポートも提供されます。

これらのサード・パーティのJSPタグ・ライブラリをJSPにインポートするには、あらかじめ定義された絶対URIを使用する必要があります。管理コンソールのweb.xmlファイルでは、これらのURIを、インストールされているWebLogic Server内部のタグ・ライブラリにマップします。このマッピング機能によって、ユーザーがJSPを変更しなくても、タグ・ライブラリのインストール・ディレクトリが認識されます。

表2-1に、管理コンソールが実行時サポートを提供するタグ・ライブラリと、JSPへインポートするためのURIを示します。

これらのライブラリの開発サポートが必要な場合(たとえば、JSPタグのコード補完を提供する統合開発環境を使用する場合)は、これらのタグが含まれるように開発環境を構成する必要があります。

注意:

カスタム・タグ・ライブラリを作成したり、付加的なタグ・ライブラリを使用したりできますが、カスタム・タグ・ライブラリで必要となるすべてのサポート・ファイルを拡張WARファイルに含める必要があります。『Oracle WebLogic Server JSPタグ拡張の開発』を参照してください。

表2-1 サポートされるJSPタグ・ライブラリ

タグ・ライブラリおよびURI

説明

タグ・ライブラリ: console-html.tld

URI: /WEB-INF/console-html.tld

管理コンソールのフォームや表の機能に調和するHTMLフォームやHTML表を作成するためのWebLogic Server JSPタグ。

これらのタグは、WebLogic Server管理コンソールを拡張する場合にのみ使用します。

このタグ・ライブラリのドキュメントは、Oracle WebLogic Server JSPタグ・リファレンスにあります。

タグ・ライブラリ: render.tld

URI: render.tld

ポータル・フレームワークURLを生成するためのコンビニエンス・タグ。「Portal Framework JSP Tag Javadoc」の<render:pageUrl>タグを参照。

タグ・ライブラリ: beehive-netui-tags-template.tld

URI : http://beehive.apache.org/netui/tags-template-1.0

JSPをJSPテンプレートに関連付けるためのApache Beehive JSPタグ。

このタグ・ライブラリとドキュメントを含むBeehiveディストリビューションは、http://beehive.apache.org/downloads.htmlからダウンロードできます。

タグ・ライブラリ: beehive-netui-tags-databinding.tld

URI: http://beehive.apache.org/netui/tags-databinding-1.0

データ・バインディング用のApache Beehive JSPタグ。

このタグ・ライブラリとドキュメントを含むBeehiveディストリビューションは、http://beehive.apache.org/downloads.htmlからダウンロードできます。

タグ・ライブラリ: beehive-netui-tags-html.tld

URI : http://beehive.apache.org/netui/tags-html-1.0

基本的なHTMLタグを生成するためのApache Beehive JSPタグ。

このタグ・ライブラリとドキュメントを含むBeehiveディストリビューションは、http://beehive.apache.org/downloads.htmlからダウンロードできます。

タグ・ライブラリ: c.tld

URI: http://java.sun.com/jsp/jstl/core

多くのJSPアプリケーションに共通の中核機能を提供するJavaServer Pages Standard Tag Library (JSTL)タグ。

JSTLディストリビューションは、http://www.oracle.com/technetwork/java/index-137889.htmlからダウンロードできます。

これらのタグ・ライブラリのドキュメントは、JSTLタグ・ライブラリ・リファレンス(http://docs.oracle.com/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/index.html)にあります。

タグ・ライブラリ: fmt.tld

URI: http://java.sun.com/jsp/jstl/fmt

多くのJSPアプリケーションに共通の中核機能を提供するJavaServer Pages Standard Tag Library (JSTL)タグ。

JSTLディストリビューションは、http://www.oracle.com/technetwork/java/index-137889.htmlからダウンロードできます。

これらのタグ・ライブラリのドキュメントは、JSTLタグ・ライブラリ・リファレンス(http://docs.oracle.com/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/index.html)にあります。

タグ・ライブラリ: struts-bean.tld

URI: http://struts.apache.org/tags-bean

Strutsフレームワークとの対話に使用するApache Strutsタグ。

Strutsディストリビューションは、http://struts.apache.org/downloadからダウンロードできます。

これらのタグ・ライブラリのドキュメントは、http://struts.apache.org/から入手できます。

タグ・ライブラリ: struts-html.tld

URI: http://struts.apache.org/tags-html

Strutsフレームワークとの対話に使用するApache Strutsタグ。

Strutsディストリビューションは、http://struts.apache.org/downloadからダウンロードできます。

これらのタグ・ライブラリのドキュメントは、http://struts.apache.org/から入手できます。

タグ・ライブラリ: struts-logic.tld

URI: http://struts.apache.org/tags-logic

Strutsフレームワークとの対話に使用するApache Strutsタグ。

Strutsディストリビューションは、http://struts.apache.org/downloadからダウンロードできます。

これらのタグ・ライブラリのドキュメントは、http://struts.apache.org/から入手できます。

タグ・ライブラリ: struts-tiles.tld

URI: http://struts.apache.org/tags-tiles

Strutsフレームワークとの対話に使用するApache Strutsタグ。

Strutsディストリビューションは、http://struts.apache.org/downloadからダウンロードできます。

これらのタグ・ライブラリのドキュメントは、http://struts.apache.org/から入手できます。

例: Strutsポートレットによるコンテンツの表示

以下の手順では、ポータル・フレームワークが拡張のソース・ファイルを使用してStrutsポートレットを検索し、ContentBookブック内にタブとして表示する方法について説明します。

1. ポータル・フレームワークは最初に、拡張のnetuix-extension.xmlファイルを解析します。
この例のnetuix-extension.xmlファイルでは、ポータル・フレームワークがmedrecMonitor.bookという.bookファイルをロードして、その内容をCoreDomainConfigGeneralBookブックの子として表示することを指定しています。

<book-extension>
<book-location>
<parent-label-location label="CoreDomainConfigGeneralBook"/>
<book-insertion-point action="append"/>
</book-location>
<book-content content-uri="/controls/medrecMonitor.book"/>
</book-extension>

2. ポータル・フレームワークはmedrecMonitor.bookファイルをロードします。このファイルでは、ページUIコントロールを定義し、そのページにポートレットが含まれることを指定しています。

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

3. ポータル・フレームワークはポートレット・ファイルをロードします。このファイルでは、以下のように実行するStruts Actionを指定しています。

<portal:root>
<netuix:portlet
definitionLabel="MyPortlet"
title="my.portlet.title">
<netuix:strutsContent module="/medrecMBean"
action="MedRecMBeanFormAction"
refreshAction="MedRecMBeanFormAction"/>
</netuix:portlet>
</portal:root>

netuix:strutsContent要素のmodule="/medrecMBean"属性では、MedRecMBeanFormActionというStruts Actionの定義が、medrecMBeanというStrutsモジュールのStruts構成ファイルにあることを示しています。Strutsの命名規則では、この構成ファイルをstruts-auto-config-medrecMBean.xmlという名前にする必要があります。

4. ポータル・フレームワークは制御をStrutsコントローラ・サーブレットに渡します。このサーブレットはstruts-auto-config-medrecMBean.xmlファイルを解析して、MedRecMBeanFormActionの以下の定義を検索します。

<action path="/MedRecMBeanFormAction"
type="com.bea.medrec.extension.MedRecMBeanFormAction"
name="medrecMBeanEJBForm"
scope="request"
validate="false">
<forward name="success" contextRelative="true"
path="/ext_jsp/form_view.jsp"/>
</action>

5. Strutsコントローラ・サーブレットはaction要素のname="medrecMBeanEJBForm"属性を見つけると、同じStruts構成ファイルでmedrecMBeanEJBFormというフォームBeanの定義を探します。
構成ファイル で次の要素が見つかった場合は、

<form-bean name="medrecMBeanEJBForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="name"
type="java.lang.String"/>
<form-property name="handle"
type="com.bea.console.handles.Handle"/>
<form-property name="totalRx"
type="java.lang.Integer"/>
</form-bean>

name、handle、およびtotalRxというプロパティを指定して、org.apache.struts.action.DynaActionForm型のJava Beanを初期化します。

6. Strutsコントローラ・サーブレットはcom.bea.medrec.extension.MedRecMBeanFormActionクラスを呼び出して、インスタンス化したDynaActionForm Beanをこのクラスに渡します。

7. MedRecMBeanFormActionクラスはMedRecアプリケーションのMBeanからデータを収集し、そのデータをDynaActionForm Beanのプロパティに格納します。
MedRecMBeanFormActionクラスはデータを格納したDynaActionForm Beanを返します。

8. StrutsコントローラはDynaActionForm BeanをシリアライズしてHTTPリクエスト内に設定し、JSPに転送します。

9. JSPはJSPタグを使用してDynaActionForm Bean内のデータを表示します。

図2-7 Strutsポートレットの概要

3 開発環境の設定

この章では、JSPタグ・ライブラリ、スキーマおよびベースJavaクラスを使用してWebLogic Server管理コンソール拡張を開発する環境の設定方法について説明します。管理コンソール拡張は、XMLファイル、Javaクラス、JSP、およびその他の標準的なWeb関連リソースの集合です。拡張の開発には、任意のテキスト・エディタまたは統合開発環境(IDE)を使用できます。

この章の内容は以下のとおりです。

- クラスパスの設定(オプション)

- タグ・ライブラリのIDEへのインポート(オプション)

- 拡張のディレクトリ・ツリーの作成

- UIコントロール・ラベルを表示するための環境設定の構成

クラスパスの設定(オプション)

拡張用にApache StrutsクラスまたはBeehiveページ・フロー・クラスを作成している場合は、Apacheクラスのセットをクラスパスに入れる必要があります。NavTreePortletにノードを追加している場合は、Oracleクラスのセットが必要です。

これらのクラスをクラスパスに追加するには、次のスクリプトを実行します。

WL_HOME\server\bin\setWLSEnv.cmd

または

WL_HOME\server\bin\setWLSEnv.sh

WL_HOME WebLogic Serverをインストールしたディレクトリです。

注意:

UNIXオペレーティング・システムでは、setWLSEnv.shコマンドはすべてのコマンド・シェルで環境変数を設定しません。Kornシェルまたはbashシェルを使用してこのコマンドを実行することをお薦めします。

Oracleのスクリプトを使用するかわりに、ご使用の環境のクラスパスにWL_HOME/server/lib/consoleapp/webapp/WEB-INF/libディレクトリにあるすべてのJARファイルを追加できます。

タグ・ライブラリのIDEへのインポート(オプション)

OracleのJSPテンプレートを使用して拡張内のJSPを作成する場合は、JSP Standard Tag Library (JSTL)、Oracle管理コンソール拡張タグ・ライブラリ、およびApache Beehiveページ・フロー・タグ・ライブラリのJSPタグを使用する必要があります。

WebLogic Serverではこれらのタグ・ライブラリがインストールされ、IDEに利用することができます。かわりに、これらの標準のタグ・ライブラリを独自にダウンロードすることもできます。詳細は、「JSPテンプレートとタグ・ライブラリ」を参照してください。

拡張のディレクトリ・ツリーの作成

管理コンソール拡張はWebアプリケーションの一部であり、そのリソースは標準のJava EE Webアプリケーションの要件を満たすディレクトリ構造にまとめる必要があります。また、WebLogic Portalフレームワーク、Apache Struts、およびApache Beehiveでは、特定の場所に構成ファイルを置く必要があります。

管理コンソール拡張の作業を開始するには、表3-1の基本的な構造に合わせたディレクトリ・ツリーを作成します。

表3-1 管理コンソール拡張のディレクトリ・ツリー

ディレクトリ

説明

root-dir

拡張のルート・ディレクトリ。このディレクトリにはファイルを作成しないことをお薦めします。

ディレクトリの名前はプログラム的に重要ではありません。わかりやすい名前を選びます。

拡張でURIを指定する場合、「/」(スラッシュ)文字自体がこのルート・ディレクトリを表します。

root-dir/WEB-INF

このディレクトリには、netuix-extension.xmlというファイルを格納する必要があります。このXMLファイルは拡張のデプロイメント記述子として機能します。

Apache Strutsを使用する場合は、このディレクトリにStruts構成ファイルを置く必要があります。

root-dir/WEB-INF/classes

拡張でメッセージ・バンドルを使用する場合は、このディレクトリにプロパティ・ファイルを入れる必要があります。

拡張でカスタム・クラスを使用する場合、そのパッケージ構造はこのディレクトリから始まる必要があります。たとえば、クラス・ファイルをcom.mycompany.extensionというパッケージにパッケージ化した場合は、classesディレクトリ内にcom/mycompany/extensionというディレクトリ構造を作成します。次に、コンパイル済みクラス・ファイルをこのextensionディレクトリに保存します。

(optional) root-dir/WEB-INF/src

拡張でカスタム・クラスを使用する場合は、コンパイル前のJavaソース・ファイルをこのディレクトリで始まるパッケージ構造に保存しておくことをお薦めします。

拡張をアーカイブするときは、このsrcディレクトリは含めません。

(recommended) root-dir/ext_jsp

拡張のすべてのJSPファイルをext_jspというディレクトリの下に保存することをお薦めします。

JSP用に個別のディレクトリを作成しておくと、コンテンツ開発者は他のサポート・ファイル(ポータル・フレームワークXMLファイルなど)について知る必要がなくなります。

拡張に多数のJSPが含まれている場合は、ext_jspの下にサブディレクトリを作成することを検討します。

この推奨事項に従う場合、JSPのURIは/ext_jspで始まります。例: /ext_jsp/myContent.jsp

root-dir/jspというディレクトリは予約されています。拡張のルート・ディレクトリにjspというディレクトリを含めることはできません。

(recommended) root-dir/controls

拡張のすべてのポータル・ブック・ファイル(.book)をcontrolsというディレクトリの下に保存することをお薦めします。

拡張に多数のブックやページが含まれている場合は、controlsの下にサブディレクトリを作成することを検討します。

この推奨事項に従う場合、ブックまたはページのURIは/controlsで始まります。例: /controls/myBook.book。

(recommended) root-dir/portlets

拡張のすべてのポートレット・ファイル(.portlet)をportletsというディレクトリの下に保存することをお薦めします。

拡張に多数のポートレットが含まれている場合は、portletsの下にサブディレクトリを作成することを検討します。

この推奨事項に従う場合、ポートレットのURIは/portletsで始まります。例: /portlets/myContent.portlet。

管理コンソールのルック・アンド・フィールを拡張する場合、ルート・ディレクトリには追加のサブディレクトリが含まれます。第5章「管理コンソールのリブランディング」を参照してください。

UIコントロール・ラベルを表示するための環境設定の構成

WebLogic Serverには、管理コンソールの拡張ポイントのラベルを表示するための構成オプションが用意されています。これらのラベルを使用して、拡張を表示する場所を指定できます。これらのラベルを表示するには:

1. 管理コンソールのツールバーで「環境設定」をクリックします。

2. 「拡張」タブを選択します。

3. 「定義ラベルの表示」を選択します。

4. 「保存」をクリックします。

ページ内に配置されたラベル付きの各コントロール上にフィールドが表示されます。フィールドには、コントロールのdefinitionLabelの値が表示され、その値には、ブックまたはラベルを示す「Book:」または「Label:」という接頭辞が付いています。図3-1を参照してください。

図3-1 管理コンソールのユーザー・インタフェースに表示されるコントロール・ラベル

4 メッセージ・バンドルの作成

この章では、WebLogic Server管理コンソール拡張で表示するすべてのテキスト文字列を、メッセージ・バンドルで定義する方法を説明します。

メッセージ・バンドルは、キーと値のペア(プロパティ)を含むテキスト・ファイル(プロパティ・ファイル)の集合です。サポートする言語またはロケールごとに1つのプロパティ・ファイルを作成します。ファイルの命名規則に従ってプロパティ・ファイルに名前を付けると、管理コンソールはWebブラウザのロケール設定にロケールが一致するプロパティ・ファイルから文字列を表示します。

メッセージ・バンドルを作成するには:

1. 表示する各文字列の名前と値のペアを格納したテキスト・ファイルを作成します。名前と値の間の区切り文字として等号(=)を使用し、プロパティは1行に1つずつ記述します。
例:

myextension.myTab.introduction=This page provides monitoring data for
my application.
myextension.myTab.TotalServletHits.label=Total hits for my servlet.

2. ファイルをroot-dir/WEB-INF/classes/bundle.propertiesとして保存します。

- root-dirは拡張のルート・ディレクトリです。

- bundleはユニークな値です(WebLogic Serverのバンドルの名前であるglobalは使用しないでください)。bundleの値としては、会社名を使用することをお薦めします。

bundle.propertiesファイルは、WebブラウザまたはJVMでロケールを指定していない場合に管理コンソールが使用するデフォルトのファイルです。このファイルは必須です。

3. プロパティ・ファイルをローカライズしたファイルは、root-dir/WEB-INF/classes/bundle_locale.propertiesとして保存します。
localeはjava.util.Localeでサポートされるロケール・コードです。http://docs.oracle.com/javase/7/docs/api/java/util/Locale.htmlで、Java SE API仕様のロケールに関する項を参照してください。

たとえば、mycompany_ja.propertiesのようになります。

メッセージ・バンドルの使用の詳細は、「ルック・アンド・フィールでのメッセージ・バンドルの使用」および「JSPでのメッセージ・バンドルの作成と使用」を参照してください。

5 管理コンソールのリブランディング

この章では、WebLogic Portalのルック・アンド・フィールを作成し、WebLogic Server管理コンソール拡張としてデプロイする方法について説明します。拡張を使用すると、管理コンソールのOracleロゴ、色、スタイルの一部またはすべてを置き換えることができます。

この章の内容は以下のとおりです。

- ルック・アンド・フィールを作成するために使用するファイル

- プロセスの概要

- アンド・フィール・テンプレートの展開

- ファイルの変更または置換え

- ルック・アンド・フィールでのメッセージ・バンドルの使用

- NetUI拡張ファイルの作成

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

ルック・アンド・フィールを作成するために使用するファイル

コンソール拡張のルック・アンド・フィールを作成するために以下のタイプのファイルが使用されます。

- Cascading stylesheets (CSS)。ほとんどの変更(簡単な変更)は、CSSを変更することによって行われます。

- 画像。これらは、CSSファイルまたはスケルトンJSPや コンテンツJSPにより生成されるHTMLから参照できます。画像を変更してもそのサイズを同じままにし、同じ名前を使用する場合、それが参照元のCSSまたはJSPを変更する必要はありません。

- Skeleton Java Server (JSP)ファイル。

- JavaScriptファイル。クライアント側の動作がJavaScriptファイルから送信されます。これらのファイルを変更することをお薦めしません。

すべてのルック・アンド・フィール・ファイル(CSS、スケルトン、JavaScript、および画像)は各リリースごとに変更します。したがって、WebLogic serverの新しいリリースにアップグレードする場合は、カスタム・ルック・アンド・フィールを更新する必要があります。

プロセスの概要

図5-1にこのプロセスを示します。プロセスの手順、および各手順の結果については、表5-1を参照してください。以下の節では、各手順について詳しく説明します。

図5-1 管理コンソール拡張の開発の概要

表5-1 管理コンソールのリブランディング: タスクと結果

手順

説明

結果

1. アンド・フィール・テンプレートの展開

WebLogic Serverには、出発点として使用できるルック・アンド・フィール・テンプレートがあります。ファイルにアクセスするには、テンプレートを展開します。

ルック・アンド・フィール・ファイルのセットを変更できます。

2. ファイルの変更または置換え

独自の画像やスタイルで置き換えて、コンソールのカスタム・ルック・アンド・フィールを作成します。

独自のロゴやスタイルを含むルック・アンド・フィール。

3. (オプション) ルック・アンド・フィールでのメッセージ・バンドルの使用

バナー、ログイン・ページ、およびログイン・エラー・ページに表示されるテキスト・メッセージを変更する場合は、独自のメッセージ・バンドルを作成し、そのバンドルからのメッセージを使用するようにページを修正します。

独自のメッセージを含むローカライズ済みプロパティ・ファイル。

4. NetUI拡張ファイルの作成

NetUI拡張ファイルは、ルック・アンド・フィール内でのファイルやディレクトリの位置を記述します。

netuix-extension.xml

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

ルック・アンド・フィール拡張をWARファイルにアーカイブし、ドメインのconsole-extディレクトリにコピーします。

詳細は、第9章「コンソール拡張のアーカイブとデプロイ」を参照してください。

ドメインで管理コンソールが起動される際に、Oracleによってパッケージ化およびインストールされたルック・アンド・フィールのかわりに、そのドメインのconsole-extディレクトリにあるルック・アンド・フィール拡張が使用されます。

アンド・フィール・テンプレートの展開

Weblogic Serverインストール環境には、出発点として使用できるルック・アンド・フィール・テンプレートがあります。テンプレートを展開し、独自の画像やスタイルで置き換えます。2つのファイルがあります。

- build-new-laf.xml
このファイルは、拡張のためのルック・アンド・フィール・ファイルの初期セットを作成するantスクリプトです。このスクリプトは、laftemplate.zip (以下を参照)からルック・アンド・フィール・ファイルを展開し、拡張の名前に対応するようにディレクトリの名前を変更します。

- laftemplate.zip
このテンプレートには、build-new-laf.xmlが展開するルック・アンド・フィール・ファイルの初期セットがあります。

テンプレートを展開するには、

1. Apache Antがまだインストールされていない(またはIDEで使用できない)場合は、インストールして、構成します。詳細は、(http://ant.apache.org/)にあるApache Antプロジェクトを参照してください。

2. コマンド・プロンプトから次のディレクトリを変更します。

WL_HOME/server/lib/console-ext/templates

WL_HOME WebLogic Serverをインストールしたディレクトリです。

3. 以下の構文を使用してbuild-new-laf.xmlでAntを実行します。

ant -f build-new-laf.xml -Dname=ext-name -Ddir=root-dir

ext-nameは拡張の名前です。root-dirはコンソール拡張の開発のディレクトリです。

ant -f build-new-laf.xml -Dname=myLAF -Ddir=c:\src\laf-ext

laftemplate.zipからのファイルはroot-dirに抽出されます。

ファイルの変更または置換え

テンプレートを展開すると、ファイルを変更または置き換えて、独自のルック・アンド・フィールを作成できます。以下を参照してください。

- 管理コンソールのバナーの変更

- ログイン・ページの修正

- 色、フォント、ボタン、画像の変更

ポータル・コンポーネントやナビゲーション・メニューのレイアウトを変更するなど、WebLogic Serverルック・アンド・フィールに複雑な変更を加える場合は、WebLogic Portalルック・アンド・フィールに関してより高度な知識が必要になります。詳細は、『Oracle WebLogic Portalポータル開発ガイド』のルック・アンド・フィールの機能を使用したユーザー・インタフェース開発に関する項を参照してください。

管理コンソールのバナーの変更

サンプルのルック・アンド・フィールの画像ファイルを、独自の画像ファイルで上書きします。

1. 管理コンソール・バナーのロゴを置き換えるには、独自のロゴ・ファイルをroot-dir/framework/skins/ext-name/images/Branding_WeblogicConsole.gifとして保存します。
バナーのサイズを変更する手間を省くには、画像のサイズを変更しないでください。

2. バナーの背景色を変更するには、root-dir/framework/skins/ext-name/images/titlebar_bg.pngを、別の色の同じサイズの画像ファイルで置き換えます。

3. ロゴのALTテキストを変更するには、global.propertiesファイル(と任意のbundle_locale.propertiesファイル)にあるlogin.wlsidentキーの値を変更します。詳細は、「ルック・アンド・フィールでのメッセージ・バンドルの使用」を参照してください。

より複雑な修正を加える場合は、バナーを表示するJSPやスタイルを変更できます。管理コンソール・バナーのコンテンツは、root-dir/framework/skeletons/ext-name/header.jspファイルによって決まります。header.jsp内のスタイルconsole-header-logoでは、バナーの背景として使用する画像ファイルの名前と位置を指定します。スタイルconsole-titleでは、ロゴ・ファイルの名前や位置を指定します。これらのスタイルは、root-dir/framework/skins/ext-name/css/console.cssで定義します。

注意:

拡張をデプロイする前に、JSPをプリコンパイルする必要があります。

ログイン・ページの修正

ログイン・ページは、ユーザーにユーザーIDとパスワードの入力を要求します。表5-2に、ログイン・ページの外観を決定するファイルについてまとめます。

表5-2 ログイン・ページとログイン・エラー・ページの外観を決定するファイル

ファイル名とパス(root-dir/の下にある)

説明

css/login.css

ログイン・ページのフォントと間隔を定義します。

framework/skins/ext-name/images/Branding_Login_WeblogicConsole.gif

framework/skins/ext-name/images/Login_GC_LoginPage_Bg.gif

framework/skins/ext-name/images/Loginarea_Background.png

ログイン・ページの画像。Login_GC_LoginPage_Bg.gifとLoginarea_Background.pngの詳細は、表5-4を参照してください。

login/LoginForm.jsp

ログイン・ページを表示します。

これらのページに表示するテキストを変更するには、<fmt:message/> JSPタグを修正して独自のメッセージ・バンドルを指すようにします。詳細は、「ルック・アンド・フィールでのメッセージ・バンドルの使用」を参照してください。

色、フォント、ボタン、画像の変更

管理コンソールでは、様々なカスケーディング・スタイル・シート(CSS)を使用してフォントや色、および間隔などの他のプロパティも指定しています。これらのスタイルを変更するには、スタイル・シートを開いてスタイルの定義を変更します。

スタイル・シートのプロパティ

表5-3に、スタイル・シートに定義したルック・アンド・フィール のスタイルについてまとめます。スタイル・シートのスタイル名は十分説明するため、スタイル自体の説明は表内にありません。たとえば、background-color。

表5-3 ルック・アンド・フィール拡張のためのCSSスタイル・シートの使用

ファイル名とパス(root-dir/の下にある)

スタイル

css/changemgt.css

「チェンジ・センター(「ロックして編集」)」パネルのスタイル。

css/content.css

スタイルは次のとおりです。

- 余白など、一般的なコンソール・レイアウト。

- ツールバーの領域。

- 階層リンク。

- メッセージ。

- データ表。

css/forms.css

構成ページとモニター・ページのコンテンツ領域など、フォームを定義するためのスタイル。

css/jndinavtree.css

JNDIブラウザのナビゲーション・ツリーを定義するためのスタイル。

css/login.css

ログイン・ページのスタイル。

css/navtree.css

「ドメイン構造」パネルのナビゲーション・ツリーを定義するためのスタイル。

css/quicklinks.css

「操作ガイド」パネルのスタイル。

css/systemstatus.css

「システム・ステータス」パネルのスタイル。

framework/skeletons/ext-name/css/layout.css

他のユーザー・インタフェースの項目が配置されるグリッドのデフォルトのスタイル。

framework/skins/ext-name/css/console.css

スタイルは次のとおりです。

- ロゴ画像ファイルの名前と場所、背景色、サイズなどを含めたコンソールのヘッダーおよびフッターのスタイル。

- 余白と幅など、構造的な要素。

- コンテンツ領域の背景色。

- 階層リンクのスタイル。

- スクリーン・リーダーのサポートを向上するためのスタイル。

framework/skins/ext-name/css/general.css

スタイルは次のとおりです。

- 左側の「ドメイン構造」、「操作ガイド」、および「システム・ステータス」パネルとコンテンツ領域の背後にある領域を含めたコンソールの背景色。

- フォント・ファミリ、フォント・ウェイト、フォント・サイズ、テキストの色、テキストの装飾、リンクのスタイルなどを含めたコンソール全体のタイポグラフィ。

framework/skins/ext-name/css/menu.css.css

メニューの余白、パディング、背景、色などを定義するためのスタイル。

framework/skins/ext-name/css/window.css

スタイルは次のとおりです。

- タイトルバー の色、境界線、パディング、配置、画像ロールオーバーの動作など。

- 境界線のスタイルと色、間隔、背景画像ファイルの名前と場所など、Windowsのスタイル。

- Windowコンテンツ・オーバーフロー処理。

スタイル・シートと一緒に使用する画像

タブやボタンに角丸と陰影のある角の特殊効果を作成するには、複数の画像がスタイル・シートと一緒に使用されます。これらについては、表5-4と表5-5を参照してください。いずれかの特殊効果を変更するには、同じファイル名を使用するか、またはスタイル・シートから別の画像を参照して、独自の画像をデフォルトの画像と置き換わることができます。

注意:

2つの表は、スタイル・シートと画像との関連付けを示します。表5-4は、root-dir/を基準とするファイルを示し、表5-5は、root-dir/framework/skins/ext-nameを基準とするファイルを示します。表を読みやすくするためにファイルはこのようにまとめてあり、他には特に意味を持ちません。

表に記述されていない他の画像もコンソールに使用され、いくつかの画像はスタイル・シートに参照されます。ただし、これらの表は上記のようにフォーマット効果の作成に使用した画像のみを示します。他の画像を表示するには、root-dir/framework/skins/ext-name images/およびroot-dir/images/を参照してください。

表5-4 スタイル・シートと一緒に使用される画像(root-dir/の下にある)

効果

CSSファイル

画像ファイル

ボタンの表面。

login.cssでのこの画像の使用も参照してください。

css/forms.css

images/button_bg_n.png

マウス・ポインタが移動するときのボタンの表面。

login.cssでのこの画像の使用も参照してください。

css/forms.css

images/button_bg_mo.png

ボタンが下に押したときのボタンの表面。

login.cssでのこの画像の使用も参照してください。

css/forms.css

images/button_bg_md.png

WebLogic Serverの最初の起動時にユーザー名およびパスワードを要求する「ようこそ」ボックスの背景。

css/login.css

framework/skins/ext-name/images/
Loginarea_Background.png

「ようこそ」ボックスの「ログオン」ボタンの表面。

上に挙げたforms.cssでのこの画像の使用も参照してください。

css/login.css

images/button_bg_n.png

マウス・ポインタが移動するときのボタンの表面。

上に挙げたforms.cssでのこの画像の使用も参照してください。

css/login.css

images/button_bg_mo.png

ボタンが下に押したときのボタンの表面。

上に挙げたforms.cssでのこの画像の使用も参照してください。

css/login.css

images/button_bg_md.png

「ログイン」ページの背景。

css/login.css

framework/skins/ext-name/images/
Login_GC_LoginPage_Bg.gif

表5-5 スタイル・シートと一緒に使用する画像(root-dir/framework/skins/ext-name/の下にある)

効果

CSSファイル

画像ファイル

パネルの上部にあるタイトルバー

css/window.css

images/titlebar_bg.png

コンソール全体の背景。ロゴの背後にコンソールの上に表示。

css/console.css

images/r_bg_global.png

タブの左の端。画像の上半部は選択を解除したタブのために使用され、下半部は選択したタブのために使用されます。

css/menu.css

images/tab_left.gif

タブの主な表面。画像の上半部は選択を解除したタブのために使用され、下半部は選択したタブのために使用されます。

css/console.css

images/tab_right.gif

パネルの背後の陰隅。デフォルト設定で、右隅と下にあります。

css/window.css

images/shadow-corners

パネルの背後の陰の右側。

css/window.css

images/shadow-right.gif

パネルの背後の陰の下部。

css/window.css

images/shadow-bottom.gif

ルック・アンド・フィールでのメッセージ・バンドルの使用

バナーおよびログイン・ページでは、管理コンソールがJSTLタグを使用して、ローカライズされたプロパティ・ファイルからのテキスト・メッセージをロードします。たとえば、LoginForm.jspのウィンドウ・タイトルを表示する場合は次のようになります。

1. LoginForm.jspの<fmt:setBundle basename="global" var="current_bundle" scope="page"/>タグによって、globalに現在のメッセージ・バンドルが設定されます。
このJSPタグは、WEB-INF/classes内から次の名前パターンのファイルを検索します。

bundle[_locale].properties.

このバンドルのデフォルト・プロパティはWL_HOME/server/lib/consoleapp/webapp/WEB-INF/classes/console.jarのglobal.propertiesです。Webブラウザまたはオペレーティング・システムで別のロケールが指定されている場合は、JSPタグによってglobal_locale.propertiesがロードされます。

2. <fmt:message key="window.title" bundle="${current_bundle}" />タグによってglobal.propertiesファイルが開かれ、window.titleキーによって特定されたテキストが表示されます。

window.title=Oracle WebLogic Server Administration Console

これらのメッセージを変更するには、独自のプロパティ・ファイルを作成し、JSPタグを修正してそのバンドルを使用するようにします。詳細は、第4章「メッセージ・バンドルの作成」を参照してください。

表5-6に、バナー、ログイン・ページ、およびログイン・エラー・ページに表示されるテキスト・メッセージを示します。

表5-6 バナー、ログイン・ページ、およびログイン・エラー・ページに表示されるメッセージ

ファイル(root-dir/の下にある)

メッセージ・キーと値

login/LoginForm.jsp

window.title=Oracle WebLogic Server Administration Console
login.wlsident=Oracle WebLogic Server Administration Console
login.welcome2=Log in to work with the WebLogic Server domain
login.username=Username:
login.password=Password:
login.submit=Log In

framework/skeleton/mycompany/header.jsp

window.title=Oracle WebLogic Server Administration Console

NetUI拡張ファイルの作成

netuix-extension.xmlというNetUI拡張ファイルは、ルック・アンド・フィールのデプロイメント記述子です。ルック・アンド・フィール内のファイルの名前と位置を格納し、作成したルック・アンド・フィールで管理コンソールのルック・アンド・フィールを置き換える役割を果たします。詳細は、netuix-extension.xml.を参照してください。このファイルの詳細は、NetUI拡張スキーマ・リファレンスを参照してください。

例5-1 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 LAF</title>
<version>1.0</version>
<description>My LAF.</description>
<author>Me</author>
<support-url>My URL</support-url>
</provider-info>

<portal-file>/console.portal</portal-file>
<desktop-extension>
<look-and-feel-content title="myLAF"
definitionLabel="myLAF"
markupName="myLookAndFeel"
skin="myLAF"
skin-path="/framework/skins"
skeleton="myLAF"
skeleton-path="/framework/skeletons"
default-window-icon="window-icon.gif"
default-window-icon-path="images/"/>

</weblogic-portal-extension>

このファイルを修正するには:

1. このファイルを、検証機能を持つXMLエディタ(推奨)またはテキスト・エディタで開きます。

2. <provider-info>要素で、ルック・アンド・フィール、開発者の連絡先、およびサポートURLについて説明する情報を変更します。
この要素の情報には、プログラム的に重要なものは含まれていません。これらの情報は、テクニカル・サポート・チームがソフトウェアの修正履歴を追跡できるようにすることを目的としています。

3. <look-and-feel-content>要素に以下の変更を加えます。

1. title、skin、およびskeleton要素で、myLAFという値を「アンド・フィール・テンプレートの展開」の手順3で指定したディレクトリ名に変更します。

2. definitionLabelおよびmarkupName属性で、myLAFという値を手順2で指定したディレクトリ名または他の文字列に変更します。これらの属性はポータル・フレームワークで必要になるもので、ルック・アンド・フィールの拡張では使用しません。

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

拡張をアーカイブとデプロイする手順については、第9章「コンソール拡張のアーカイブとデプロイ」を参照してください。

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

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

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

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

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

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

手順

説明

結果

1. ポートレットの定義

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

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

.portlet XMLファイル。

2. UIコントロールの定義(オプション)

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

.book XMLファイル。

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

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

netuix-extension.xmlファイル。

4. NavTreePortletへのノードの追加(オプション)

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

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

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

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

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

詳細は、第9章「コンソール拡張のアーカイブとデプロイ」を参照してください。

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

ポートレットの定義

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

- JSPポートレットの定義

- Strutsポートレットの定義

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

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

ポートレットXMLファイルの詳細は、ポータル・サポート・スキーマ・リファレンスのエントリを参照してください。

JSPポートレットの定義

JSPをロードするポートレットを定義するには:

1. root-dir/portletsに新しいテキスト・ファイルを作成し、例6-1のコードをコピーして貼り付けます。(「拡張のディレクトリ・ツリーの作成」を参照)。
次のネーミング・ルールを使用することをお薦めします。

content-name.portlet

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

2. 例6-1内の以下の値を変更します。

- Label。ポータル・フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。

- (オプション) Title。タイトル・バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル・バーの表示」を参照してください。

- URI。ポートレットに格納するJSPの絶対パスとファイル名に変更します。絶対パスは、拡張のルートから始めます。

例:

/ext_jsp/monitorEJB.JSP

拡張をデプロイする前に、JSPをプリコンパイルする必要があります。

例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のコードをコピーして貼り付けます。(「拡張のディレクトリ・ツリーの作成」を参照)。
次のネーミング・ルールを使用することをお薦めします。

action-name.portlet

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

2. 例6-2内の以下の値を変更します。

- Label。ポータル・フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。

- (オプション) Title。タイトル・バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル・バーの表示」を参照してください。

- Struts-module。Struts Actionを定義するStrutsモジュールを指定します。
独自のStrutsモジュールを作成して、管理コンソール拡張を使用するActionおよびActionFormを定義する必要があります。デフォルトのStrutsモジュールはOracle ActionおよびActionForm用に予約されています。各モジュールには独自の、ユニークな名前を持つ構成ファイルが含まれます。Strutsモジュールの詳細は、Apache Strutsの『User Guide』(http://struts.apache.org/release/1.2.x/userGuide/index.html)を参照してください。

たとえば、Struts-moduleに「myModule」と指定した場合、Strutsコントローラ・サーブレットは次の場所でアクション検索します。

root-dir/WEB-INF/struts-auto-config-myModule.xml

- action-path。Strutsモジュール内で定義したStruts Actionのパスを指定します。

- refresh-action-path。このポートレットの後続のリクエストで呼び出すAction (たとえば、ドキュメントを更新するユーザー・エージェント)を指定します。

この.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のコードをコピーして貼り付けます。(「拡張のディレクトリ・ツリーの作成」を参照)。
次のネーミング・ルールを使用することをお薦めします。

pageFlow-name.portlet

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

2. 例6-3内の以下の値を変更します。

- Label。ポータル・フレームワークでこのポートレットを特定するためのユニークな識別子に変更します。

- (オプション) Title。タイトル・バーが表示される場合にこのポートレットが表示するデフォルトのタイトルを指定します。「ポートレットのタイトル・バーの表示」を参照してください。

- URI。ページ・フローを定義するJPFファイルの絶対パスとファイル名を指定します。URIはroot-dir/WEB-INF/classesディレクトリから始まる絶対パスにする必要があります。
たとえば、JPFファイルがroot-dir/WEB-INF/classes/com/mycompany/extension/pageflows/myPageFlow.jpfである場合は、次の値を指定します。

/com/mycompany/extension/pageflows/myPageFlow.jpf

- Action。ページ・フローを定義するJPFファイルの絶対パスとファイル名を指定します。

例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>

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

ポートレットを管理コンソールのデスクトップ上(「page」ページのプレースホルダー内)に配置する場合は、タイトル・バーを表示するようにポートレットを構成します。ポートレットをContentBookに置く場合は、タイトル・バーは表示しません。

タイトル・バーを表示するには:

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

2. netuix:portlet要素の子要素として以下の要素を指定します。

<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クラスを作成します。
たとえば、title="myPortlet.title"と指定した場合、Javaクラスはメッセージ・バンドルを検索してmyPortlet.title=MyCompany's Portletを見つけ、表示するテキストとしてMyCompany's Portletを返します。

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

2. .portletファイルで、<netuix:portlet>要素内に以下の属性を指定します。

- title。メッセージ・バンドルで定義したプロパティのキーを指定します。

- backingFile。前述の手順で作成したJavaクラスの完全修飾名を指定します。

例:

<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)メソッドを実装します。
このメソッドの実装で以下を行います。

1. HttpServletRequestオブジェクトからロケールを取得します。
次のAPIを使用します。

javax.servlet.http.HttpServletRequest.getSession().getAttribute(
"org.apache.struts.action.LOCALE")

2. メッセージ・バンドルを取得します。
次のAPIを使用します。

org.apache.struts.util.MessageResources.getMessageResources(
"myBundle");

myBundleはメッセージ・バンドルの名前です。(「メッセージ・バンドルの作成」を参照)。

3. ポートレットのtitleプロパティの値を取得します。
次のAPIを使用します。

PortletBackingContext bctx =
PortletBackingContext.getPortletBackingContext(
HttpServletRequest req);
MessageResources.getMessage(locale, bctx.getTitle());

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

4. ポートレットのtitleプロパティの値を、前述の手順で取得したローカライズされた値にリセットします。
次の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) {
// Get the PortletBackingContext for current portlet. The
// PortletBackingContext contains properties and methods
// for the current portlet.
PortletBackingContext bctx =
PortletBackingContext.getPortletBackingContext(req);
if (bctx != null) {
// If title does not contain a period, assume it's preLocalized
// or follow the format for a key
if (bctx.getTitle().indexOf(".")!=-1){
// Get the locale from the HTTPServletRequest
Locale locale = (Locale) req.getSession().getAttribute(
"org.apache.struts.action.LOCALE");
// Find the message bundle named "medrecMBean"
MessageResources messages =
MessageResources.getMessageResources("medrecMBean");
// Get the value of the portlet's "title" property
String msg = messages.getMessage(locale, bctx.getTitle());
// Reset the value of the "title" property with the
// localized value.
bctx.setTitle(msg);
}
}
return true;
}
}

UIコントロールの定義(オプション)

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

- 最上位のタブ(たとえば「ドメイン: 構成」の兄弟)を作成するには、1つまたは複数のページを格納するブックを作成します。各ページには、ポートレットを格納します。

- 既存のタブのサブタブ(たとえば「ドメイン: 構成: 一般」の兄弟)を作成するには、1つのポートレットを格納するページを作成します。

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

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

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

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

- サブタブの作成

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

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

サブタブのないタブ(「ドメイン: ノート」など)を定義するポータル・ブック(.book) XMLファイルを作成するには:

1. 例6-6のコードをコピーして、新しいテキスト・ファイルに貼り付けます。
たとえば、root-dir/controls/MyApp.book

root-dirは開発用のディレクトリです。詳細は、第3章「開発環境の設定」を参照してください。

2. 例6-6内の以下の値を変更します。

- Page-Label。ポータル・フレームワークおよびWebLogic Server JSPタグが、ページへのリクエストの転送に使用するユニークな識別子に変更します。

- Page-Title。ユーザーに対して表示するタブの名前、または作成したメッセージ・バンドルのキーに変更します。
指定する値に「.」(ピリオド)が含まれている場合、管理コンソールはこの値がキーであると想定し、メッセージ・バンドルから値を検索しようとします。たとえば、My.Tabと指定すると、管理コンソールはMy.Tabというキーを持つプロパティの値を検索します。そのような値が見つからない場合は、タブ名としてnullと表示します。値としてMy Tabを指定すると、管理コンソールはMy Tabと表示します。

- Bundle。作成したメッセージ・バンドルの名前に変更します。netuix:page要素のtitle属性の値に「.」が含まれている場合にのみ、このバンドルが使用されます。「JSPでのメッセージ・バンドルの作成と使用」を参照してください。

- Portlet-Instance-Label。ポータル・フレームワークおよびWebLogic Server JSPタグが、ポートレット・インスタンスへのリクエストの転送に使用するユニークな識別子に変更します。

- Portlet-URI。作成したポートレット・ファイルのパスとファイル名に変更します(「ポートレットの定義」を参照)。パスは、ポータルWebアプリケーションのルートに対する相対パスでなければなりません。
例:

/portlets/monitorEJB.portlet

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

例6-6 サブタブのないタブを作成する.bookファイルのテンプレート

<?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つまたは複数のサブタブを定義するポータル・ブック(.book) XMLファイルを作成するには:

1. 例6-7のコードをコピーして、新しいテキスト・ファイルに貼り付けます。そのファイルを、root-dirの下にあるディレクトリに保存します。
たとえば、root-dir/controls//MyApp.book

root-dirは開発用のディレクトリです。詳細は、第3章「開発環境の設定」を参照してください。

2. タブを定義するには、例6-7の値を以下のように置き換えます。

- Book-Label。ポータル・フレームワークおよびWebLogic Server JSPタグがブックへのリクエストの転送に使用する、ユニークな識別子に変更します。これは、WebLogic ServerのUIコントロールの多くに使用されているのと同じ種類のラベルです。「管理コンソールの拡張ポイント」を参照してください。

- Book-Title。ユーザーに対して表示するタブの名前、または作成したメッセージ・バンドルのキーに変更します。
指定する値に「.」(ピリオド)が含まれている場合、管理コンソールはこの値がキーであると想定し、メッセージ・バンドルから値を検索しようとします。たとえば、My.Tabと指定すると、管理コンソールはMy.Tabというキーを持つプロパティの値を検索します。そのような値が見つからない場合は、タブ名としてnullと表示します。値としてMy Tabを指定すると、管理コンソールはMy Tabと表示します。

- Bundle。作成したメッセージ・バンドルの名前に変更します。netuix:book要素のtitle属性の値に「.」が含まれている場合にのみ、このバンドルが使用されます。「JSPでのメッセージ・バンドルの作成と使用」を参照してください。

3. 最初のサブタブを定義するには、例6-7の値を以下のように置き換えます。

- Page-Label。ポータル・フレームワークおよびWebLogic Server JSPタグが、ページへのリクエストの転送に使用するユニークな識別子に変更します。

- Page-Title。ユーザーに対して表示するサブタブの名前、または作成したメッセージ・バンドルのキーに変更します。
指定する値に「.」(ピリオド)が含まれている場合、管理コンソールはこの値がキーであると想定し、メッセージ・バンドルから値を検索しようとします。

- (オプション) Metadata-TypeおよびMetadata-ID。管理コンソールの<wl:column-dispatch> JSPタグを使用してこのページへのハイパーテキスト・リンクを作成する場合は、<netuix:meta>要素を含めてMetadata-TypeおよびMetadata-IDの値を指定します。「他のページに移動するための表の列の作成」を参照してください。

- Portlet-Instance-Label。ポータル・フレームワークおよびWebLogic Server JSPタグが、ポートレット・インスタンスへのリクエストの転送に使用するユニークな識別子に変更します。

- Portlet-URI。作成したポートレット・ファイルのパスとファイル名に変更します(「ポートレットの定義」を参照)。パスは、ポータルWebアプリケーションのルートに対する相対パスでなければなりません。

例:

/portlets/monitorEJB.portlet

4. サブタブを追加で作成するには、例6-7のnetuix:page要素の兄弟として別のnetuix:page要素を追加します。

ポータル・ブックXMLファイルの詳細は、ポータル・サポート・スキーマ・リファレンスを参照してください。

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

- netuix:singleLevelMenuは、ブック内の各ページに1つのサブタブを表示します。例6-7では、ブックの親UIコントロールがWebLogic Serverによって提供されることが前提になっていますが、これがブックの最上位のタブを生成する役割を果たします。

- netuix:meta name="breadcrumb-context" content="handle"は、ユーザーがページを訪問した後に、訪問したページの履歴(階層リンク)にそのページのタイトルを追加します。階層リンクは、ContentBookの上位のデスクトップに表示されます。

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

<?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>
<!-- Add additional netuix:page elements here -->
</netuix:content>
</netuix:book>
</portal:root>

サブタブの作成

既存のWebLogic Serverタブに追加できるサブタブを作成するには:

1. ページUIコントロールを定義する.bookファイルを作成します。例6-6を参照してください。

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

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

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

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

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

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

ポートレットまたはUIコントロールの表示位置を指定するには:

1. netuix-extension.xmlという名前のXMLファイルを作成し、次のディレクトリに保存します。

2. root-dir/WEB-INF

3. root-dirは開発用のディレクトリです。詳細は、第3章「開発環境の設定」を参照してください。
NetUI拡張XMLファイル(netuix-extension.xml)は、拡張のデプロイメント記述子です。拡張の各親UIコントロールと表示位置を宣言しています(例6-8を参照)。詳細は、「NetUI拡張スキーマ・リファレンス」を参照してください。

4. <weblogic-portal-extension>ルート要素を作成します。

5. (オプション)拡張について説明する<provider-info>要素を作成します。
この要素は、あくまで拡張の内容を説明するためのものです。ポータル・フレームワークでこの要素内のデータが使用されることはありません。

6. 次の要素を追加します。

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

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

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

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

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

ポートレットを管理コンソール・デスクトップに追加するには、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>

説明:

- layoutは次のいずれかの値。

- ポートレットを管理コンソールの左側に表示する場合は0 (ゼロ)。
拡張ポートレットは常に左の列の最上部に表示されます。

- ポートレットを右側に表示する場合は1。
拡張ポートレットは常に右の列の最下部に表示されます。

- portlet-URIは、.portletファイルのパスとファイル名。パスは、ポータルWebアプリケーションのルートに対する相対パスでなければなりません。

- titleは、ポートレットのタイトルバーに表示されるタイトル。null値を指定した場合は、.portletファイルに定義したタイトルが使用されます。

- portlet-instance-labelは、ポータル・フレームワークおよびWebLogic Server JSPタグが、ポートレット・インスタンスへのリクエストの転送に使用するユニークな識別子。

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="book-URI"/>
</book-extension>

説明:

- Admin-Console-Book-Labelは、子ブックにアクセスするためのタブを表示する管理コンソール・ブック・コントロールのdefinitionLabel。

- book-URIは、タブ(および指定した場合はサブタブ)のブック・コントロールを定義する.bookファイルのパスとファイル名。パスは、ポータルWebアプリケーションのルートに対する相対パスでなければなりません。

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

- Admin-Console-Book-Labelは、子ページにサブタブを表示する管理コンソール・ブック・コントロールのdefinitionLabel。

- book-URIは、サブタブのページ・コントロールを定義する.bookファイルのパスとファイル名。パスは、ポータルWebアプリケーションのルートに対する相対パスでなければなりません。

例: ポートレットと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>
<!--Adds a tab to the Domain tabs -->
<book-extension>
<book-location>
<parent-label-location label="CoreDomainConfigGeneralBook"/>
<book-insertion-point action="append"/>
</book-location>
<book-content content-uri="/controls/page.book"/>
</book-extension>
<!-- Adds a subtab to the Domain: Configuration tab-->
<book-extension>
<book-location>
<parent-label-location label="DomainconfigTabPage"/>
<book-insertion-point action="append"/>
</book-location>
<page-content content-uri="/controls/notespage.book"/>
</book-extension>
<!--Adds a portlet to the console desktop -->
<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>
</weblogic-portal-extension>

NavTreePortletへのノードの追加(オプション)

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

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

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

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

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

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

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

ページ・コントロールの1つにリンクするノードを追加するには、コントロールの.bookファイル内のnetuix:page要素に、次の属性と属性値を追加します。

backingFile="com.bea.console.utils.NavTreeExtensionBacking"

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

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

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

title属性の値をメッセージ・バンドルのキーにした場合は、そのキーにマッピングされたローカライズ済みの値が表示されます。メッセージ・バンドル名は、ページ構成にメタデータを追加することによって指定します。<netuix:meta>要素を<netuix:page>の子として追加します。例:

<netuix:page definitionLabel="MyAppTableBook" title="My Page">
<netuix:meta name="skeleton-resource-bundle" content="3rdbundlename" />
...
</netuix:page>

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

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

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

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

- NavTreeBackingクラスの作成

- NavTreeBackingクラスの呼出し

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

NavTreeBackingクラスの作成

NavTreeBackingクラスを作成するには、(例6-9を参照)。

1. com.bea.console.utils.NavTreeExtensionBackingを拡張します。
このクラスは、あらかじめ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のインストール先ディレクトリです。

2. NavTreeExtensionBacking.getTreeExtension(

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

1. 親ノードのcom.bea.jsptools.tree.TreeNodeオブジェクトを作成します。
次のコンストラクタを使用します。

TreeNode(String nodeId, String nodeName, String nodeUrl)

説明:

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

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

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

2. ノードのツリーを追加する場合は、別のTreeNodeオブジェクトを親TreeNodeの子として作成します。
各子ノードで、次のコンストラクタを使用します。

TreeNode(String nodeId, String nodeName,
String nodeUrl, TreeNode parent)

説明:

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

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

nodeURLは、そのコントロールのURLです。次の値を指定します。

/console/console.portal?_nfpb=true&_pageLabel=definitionLabel

definitionLabelはリンク先のページのdefinitionLabelです。

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

3. 親TreeNodeオブジェクトをcom.bea.console.utils.NavTreeExtensionEventのコンストラクタに渡します。
次のコンストラクタを使用します。

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管理コンソールAPIリファレンスのNavTreeExtensionEventを参照してください。

4. 作成したNavTreeExtensionEventオブジェクトを返します。

4. コンパイルしたクラスを、拡張の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){
/*
* Construct a TreeNode for the control that has invoked this method.
*/
TreeNode node = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl);
/*
* Construct a child TreeNode.
*/
TreeNode node1 = new TreeNode("MyAppGeneralTabPage",
"MyApp General",
"/console/console.portal?_nfpb=true&_pageLabel=MyAppGeneralTabPage",
node);
/*
* Add the parent node (which includes its child) below the
* Environment node in the NavTreePortlet.
*/
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(ppCtx.getDefinitionLabel(),extensionUrl,
"/Environment",node);
return evt;
}
}

NavTreeBackingクラスの呼出し

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

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

2. コントロールの.bookファイルにあるnetuix:page要素に、次の属性と属性値を追加します。

backingFile="your-NavTreeBacking-class"

your-NavTreeBacking-classは、手順1で作成したクラスの完全修飾名です。

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

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

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

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

2. ポータル・フレームワークはcom.bea.netuix.servlets.controls.page.PageBackingContextオブジェクトをインスタンス化しますが、これはページUIコントロールのインメモリー表現です。オブジェクトには、ページ・コントロールのtitleやdefinitionLabelについて記述したプロパティが含まれています。

3. ポータル・フレームワークはnetuix:page要素内のbackingFile属性を見つけると、指定されたクラス(MyNavTreeExtension)を初期化し、ページのPageBackingContextオブジェクトに渡してクラスを作成します。ページ・コントロールのURIを含むStringオブジェクトも渡します。

4. MyNavTreeExtensionクラスは、次のことを行います。

1. PageBackingContextオブジェクトからtitleとdefinitionLabelの値を取得します。

2. com.bea.jsptools.tree.TreeNodeオブジェクトを作成して、ページ・コントロールのURIと一緒にtitleとdefinitionLabelの値をコンストラクタに渡します。

3. 「Monitor EJBs」および「Log Messages」というタイトルの2つのページ用に、さらに2つのTreeNodeオブジェクトを作成します。
この2つのページのPageBackingContextオブジェクトまたはURIを取得する方法はないため、値をMyNavTreeExtensionクラス内にハード・コード化する必要があります。

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

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

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

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

図6-4 例: NavTreePortletへのノード・ツリーの追加

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

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

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

リンク先を変更するには、作成したページの<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>
...

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

この章では、管理コンソールのJSPテンプレート、スタイル、およびユーザー入力コントロールを使用するポートレットを追加する方法について説明します。

たとえば、以下のようなコンテンツを表示するポートレットを追加できます。

- 提供するリソースをまとめた表をContentBookに表示し、ユーザーが特定のリソースに移動したり、表からリソースのアクションを呼び出したりできるようにします。(図2-5に示したWebLogic Server表の例を参照してください。)

- ContentBookにフォームを表示し、提供したリソースをユーザーがモニターしたり構成したりできるようにします。

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

図7-1 管理コンソール拡張の開発の概要

表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. OracleテンプレートとJSPタグを使用するJSPの作成

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

管理コンソールのスタイルと構造に調和するJSP。

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

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

ポートレットを定義し、Struts Actionを起動するようにポートレットを構成する.portlet XMLファイル。

ページ・コントロールまたはブック・コントロールを定義する.book XMLファイル(オプション)、および拡張の位置を記述するnetuix-extension.xmlファイル。

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

詳細は、第9章「コンソール拡張のアーカイブとデプロイ」を参照してください。

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

注意:

拡張をデプロイする前に、JSPをプリコンパイルする必要があります。

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

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

バンドルをJSPで使用するには:

1. JSTL fmt.tldタグ・ライブラリをインポートします。

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

2. バンドルの名前を宣言します。

<fmt:setBundle basename="bundle" var="current_bundle" scope="page"/>

bundleはバンドルの名前です。

3. JSPに文字列を出力させる場合は、次のJSPタグを使用します。

<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は、Struts ActionForm Bean(フォームBean)に対してインスタンス化と移入を行う複数の技法をサポートします。たとえば、フォームの各プロパティのゲッター・メソッドとセッター・メソッドを含む独自の具象Java Beanをコーディングできます。また、Struts DynaActionForm Beanを使用できます。このBeanでは、Java Beanを動的に構成して、Struts構成ファイルで宣言されているプロパティを格納します。

フォームのデータ・モデル

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

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

- handle。com.bea.console.handles.Handle型、またはユーザーが作成するカスタムHandleクラス。
ポータル・フレームワークはこのプロパティを使用して、ActionForm Beanと、Beanにデータを設定するためのデータ・ソース(MBeanなど)を関連付けます。「ActionFormと行Beanのハンドル」を参照してください。

表のデータ・モデル

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

図7-2 行Beanと表Bean

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

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

- content。java.util.Collection型でなければなりません。
これは行Beanを格納するために使用する必要のあるプロパティです。

- handle。com.bea.console.handles.Handle型、またはユーザーが作成するカスタムHandleクラス。
ポータル・フレームワークでは、フォームBeanと表Beanでこのプロパティを宣言することを求めていますが、表Beanの場合、このプロパティの有用性は限られています。通常、表Beanは行Beanの単なる集合です。行Beanは基底のデータ・ソースを公開しますが、表Beanでは公開されません。どのActionクラスが表Beanにデータを設定したかを追跡する必要がない限り、表Beanのこのプロパティの値を設定する必要はありません(ただし、宣言する必要はあります)。「ActionFormと行Beanのハンドル」を参照してください。

チェック・ボックスの列を含むように表を構成する場合は(選択された表の行Beanに対してStruts Actionを呼び出すことができる)、表Beanに次のプロパティを含める必要があります。

- chosenContents。プリミティブ型の配列またはcom.bea.console.handles.Handleの配列。表内のチェック・ボックスの扱い方については、「表へのボタンとチェック・ボックスの追加」を参照してください。

ActionFormと行Beanのハンドル

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

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

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

図7-3 行BeanのJMXHandle

ActionForm Beanまたは行Beanの基底のデータ・ソースがMBeanである場合は、com.bea.console.handles.JMXHandleオブジェクトを使用できます。管理コンソールAPIリファレンスのJMXHandleを参照してください。

Beanの基底のデータ・ソースがMBeanでない場合は、com.bea.console.handles.Handleインタフェースを実装する独自のJavaクラスを作成できます。管理コンソールAPIリファレンスのハンドルを参照してください。

表およびフォーム用のStruts情報の作成

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

管理コンソールのJSPタグを使用する場合は、独自のStruts ActionFormおよびActionを作成する必要があります。

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

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

- 表JSPのStruts情報の作成

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

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

ビジネス・レイヤーとプレゼンテーション・レイヤーのJSPとの間でデータを渡すためのStruts情報を作成するには:

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

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

2. Struts構成ファイルで次の手順を行います。

1. Actionクラスがデータを設定して使用するフォームBeanの名前とプロパティを宣言します。
ユーザー入力が可能なフォームの場合は、同じフォームBeanを使用して、フォームにデータを設定したり、データを処理するActionクラスにユーザー入力を返したりできます。

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

「Struts ActionFormおよびActionマッピングの構成」を参照してください。

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

フォーム・データを処理するStruts Actionクラスを作成するには:

1. フォームBeanにデータを設定するorg.apache.struts.action.Actionクラスを作成します。(例7-1を参照してください。)
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()メソッドを呼び出します。
たとえば、nameとtotalRxという2つのプロパティを定義している場合は、次のようになります。

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

4. フォームBeanと基底のデータ・ソースとの間に相関関係を確立するには、handleプロパティの値を設定します(「ActionFormと行Beanのハンドル」を参照してください。)
たとえば、基底のデータ・ソースが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));

5. クラスに渡されたリクエスト・オブジェクトにDynaActionForm Beanを格納します。

httpServletRequest.setAttribute("form-bean-name", form);

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

6. Actionクラスに渡されたActionMappingオブジェクトのActionMapping.findForward()メソッドで「success」を返します。

7. return actionMapping.findForward("success");

2. ビジネス・レイヤーで処理するためのデータをフォームがポストする場合は、フォーム・データを処理する別のActionクラスを作成します。
ユーザーが(HTMLボタンをクリックして)フォームからデータをポストすると、Strutsコントローラはデータが設定されたActionForm BeanをActionクラスに渡します。データを処理するには、次のメソッドを実装します。

Action.execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)

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

1. リクエストに渡されたActionForm BeanをDynaActionForm Beanとしてキャストします。

2. 処理する各プロパティに対してDynaActionForm.get()メソッドを呼び出します。
たとえば、name、totalRx、およびhandleというプロパティを処理する場合は、次のようになります。

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

3. データを処理します。
たとえば、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));

4. Actionクラスに渡されたActionMappingオブジェクトのActionMapping.findForward()メソッドで「success」を返します。

return actionMapping.findForward("success");

3. 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 {
// Establish a local connection to the Runtime MBean Server
InitialContext ctx = new InitialContext();
MBeanServer server =
(MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
// Create an ObjectName that corresponds to a custom MBean that
// has been registered in the Runtime MBean Server
ObjectName anMBean = new ObjectName(
"com.bea.medrec:Type=com.bea.medrec.controller.
RecordSessionEJBMBean,Name=MedRecEAR");
//Get the value of the custom MBean's "Name" attribute
String namefromMBean = (String)server.getAttribute
(anMBean, "Name");
// Get the value of the custom MBean's "TotalRx" attribute
Integer totalRxfromMBean = (Integer) server.getAttribute
(anMBean, "TotalRx");
// Populate the form bean
DynaActionForm form = (DynaActionForm) actionForm;
form.set("name",namefromMBean);
form.set("totalRx",totalRxfromMBean);
form.set("handle",(new JMXHandle(anMBean)));
// Set the form bean in request. The name of the
// form bean must match the "form-bean" name in your
// Struts configuration file
httpServletRequest.setAttribute("medrecMBeanEJBForm", form);
} catch (Exception ex) {
ex.printStackTrace();
}
return actionMapping.findForward("success");
}
}

Struts ActionFormおよびActionマッピングの構成

ActionFormとActionマッピングを宣言するStruts構成ファイルを作成するには:

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

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

2. ビジネス・レイヤーからプレゼンテーション・レイヤーのJSPにデータを転送するためにStrutsが使用するフォームBeanを構成するには、例7-2の以下の値を置き換えます。

- form-bea-name。DynaActionForm beanのこのインスタンスに割り当てるユニークな名前です。Actionクラスは、Beanにデータを設定してStrutsコントローラに返すときに、このBean名を参照します。

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

3. フォームBeanにデータを設定するためにStrutsが使用するActionマッピングを構成するには、Beanをシリアライズして、HTTPリクエストに格納し、そのリクエストをJSPに転送します。例7-2の以下の値を置き換えます。

- action-nameActionマッピングに割り当てるユニークな名前です。.portletファイルはこのAction名を参照します。

- custom-Action-class。フォームBeanにデータを設定するために作成するJavaクラスの完全修飾名です。このクラスの作成方法は手順5で説明します。

- form-jsp.jsp。フォームを表示するために作成するJSPの名前です。「フォームJSPの作成」を参照してください。

4. ビジネス・レイヤーで処理するためのデータをフォームからポストする場合は、別の<action>要素を作成して、フォーム・データを処理するために作成するカスタム・クラスを指定します。
この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を作成します。
Java beanをコンパイルして、root-dir/WEB-INF/classesディレクトリで始まるパッケージ構造に保存します。

2. 表Beanとして機能するBeanを構成するには:

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

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

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

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

3. 以下のプロパティを追加します。

<form-property name="contents" type="java.util.Collection"/>

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

3. 行Beanと表Beanにデータを設定するためにStrutsが使用するActionマッピングを構成するには、Beanをシリアライズして、HTTPリクエストに格納し、そのリクエストをJSPに転送します。例7-2の以下の値を置き換えます。

- action-nameActionマッピングに割り当てるユニークな名前です。.portletファイルはこのAction名を参照します。

- custom-Action-class行Beanと表beanにデータを設定するために作成するJavaクラスの完全修飾名です。このクラスの作成方法は手順5で説明します。

- form-jsp.jsp表を表示するために作成するJSPの名前です。「フォームJSPの作成」を参照してください。

4. 行Beanと表Beanにデータを設定するorg.apache.struts.action.Actionクラスを作成します。(例7-3を参照してください。)
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プロパティを設定します。

DynaActionForm table = (DynaActionForm) actionForm;
table.set("contents",rowBeanArray);

6. クラスに渡されたリクエスト・オブジェクトに表Beanを格納します。

httpServletRequest.setAttribute("table-bean-name", table);

table-bean-nameはStruts構成ファイルで表beanに対して構成した名前です(例7-2を参照)。

7. Actionクラスに渡されたActionMappingオブジェクトのActionMapping.findForward()メソッドで「success」を返します。

8. return actionMapping.findForward("success");

5. 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 {
// Establish a local connection to the Runtime MBean Server
InitialContext ctx = new InitialContext();
MBeanServer server =
(MBeanServer) ctx.lookup("java:comp/env/jmx/runtime");
// Create a name pattern for all MedRec EJB MBeans
ObjectName namepattern = new
ObjectName("com.bea.medrec:Type=com.bea.medrec.controller.
RecordSessionEJBMBean,*");
// Get all MedRec EJB MBeans for all applications
Set objects = server.queryNames(namepattern, null);
// Walk through each of these MBeans and get the object name
// and the value of its TotalRX attribute
Iterator i = objects.iterator();
while (i.hasNext()) {
ObjectName anMBean = (ObjectName) i.next();
String identifier = anMBean.toString();
Integer totalRxfromMBean =
(Integer) server.getAttribute(anMBean, "TotalRx");
// Instantiate a row bean.
MedRecMBeanTableBean row = new MedRecMBeanTableBean(anMBean);
// Set the properties of the row bean
row.setCanonicalName(anMBean.getCanonicalName());
row.setTotalRxinTableBean(totalRxfromMBean);
// Add each row bean to an ArrayList
result.add(row);
}
} catch (Exception ex) {
ex.printStackTrace();
}
// Instantiate the table bean
DynaActionForm form = (DynaActionForm) actionForm;
// Set the array of row beans as the value of the table bean's "contents"
// property
form.set("contents",result);
// Set the table bean in request. The name of the
// table bean must match the "form-bean" name in your
// Struts configuration file
httpServletRequest.setAttribute("genericTableForm", form);
return actionMapping.findForward("success");
}
}

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

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

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

- WebLogic ServerのJSPテンプレート

- フォームJSPの作成

- モニター用の表JSPの作成

- 他のページに移動するための表の列の作成

- 表へのボタンとチェック・ボックスの追加

- 表プリファレンスの構成

WebLogic ServerのJSPテンプレート

表7-2では、管理コンソール拡張で使用できるJSPテンプレートについて説明します。すべてのテンプレートは、管理コンソールのWEB-INFディレクトリ内にある/layoutsディレクトリに格納されています。テンプレートの詳細は、JSPファイルを開き、ファイルの先頭にあるコメントを読みます。

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

表7-2 管理コンソールのJSPテンプレート

テンプレート

用途

assistantBaseLayout_netui.jsp

コンソール内のすべての標準アシスタントJSP。

assistantFormAndTableLayout_netui.jsp

表を含むコンソール内のすべての標準アシスタントJSP。

configBaseLayout_netui.jsp

コンソール内のすべての標準構成フォームJSP。

configBaseLayoutNoTransact.jsp

コンソール内のすべての非トランザクション構成フォームJSP

configBaseLayoutWithButtons_netui.jsp

ボタン・バーに追加のボタンがあるコンソール内のすべての標準構成フォームJSP。

configIntroLayout_netui.jsp

テキストのみがある単純なページ。

configNoFieldsLayout_netui.jsp

すべての情報があるページ。

configNoTransactAndTables_netui.jsp

表を4つまでおよび非トランザクションの構成を含むページ。

filterAndTableLayout_netui.jsp

上にフィルタがある表を含むすべてのページ。

formAndTableLayout_netui.jsp

表も含む構成フォームJSP。

formWithButtonsLayout_netui.jsp

ボタン・バーがあるフォーム・ページ。ただし、このフォーム・ページは、構成マネージャのロック処理に一切参加しません。

fourTablesLayout_netui.jsp

4つ の表があるすべての表ページ。

standalone_layout.jsp

スタンドアロン・ページつまり、コンソールPortal外部のページ

summarypage.jsp

すべての概要ページ

tableBaseLayout_netui.jsp

管理コンソールでは、単一の表を表示するすべてのJSPでこのテンプレートを使用します。

tableBaseMonitoringLayout.jsp

表更新機能を含むすべての単一の表のページ

tablePreferencesLayout.jsp

非推奨。

threeTablesLayout_netui.jsp

3つの表があるすべての表ページ

twoTablesLayout_netui.jsp

2つの表があるすべての表ページ

twoTablesWithButtonsLayout.jsp

2つの表とボタン・バーがあるページ

フォームJSPの作成

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

フォームJSPを作成するには(例7-4を参照):

1. JSPを作成して、開発用ディレクトリ内に保存します。拡張内のすべてのJSPを格納するサブディレクトリを作成することをお薦めします。たとえば、root-dir/jspを作成します。root-dirは開発用のディレクトリです。詳細は、第3章「開発環境の設定」を参照してください。

2. 以下のタグを含めてJSPタグ・ライブラリをインポートします。

- <%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>

- <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

- <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

- <%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="beehive-template" %>

これらのタグ・ライブラリについては、「JSPタグ・ライブラリ」を参照してください。

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

4. 次の開始タグを作成して、構成ページのJSPテンプレートを宣言します。

<beehive-template:template templatePage="/layouts/configBaseLayoutNoTransact.jsp">

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

注意:

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

5. <beehive-template:section name="configAreaIntroduction">タグを作成します。このタグの中に、フォームの概要を説明する文章を入力します。この説明は、フォームの上に表示されます。

6. 次の開始タグを作成します。

7. <beehive-template:section name="form">
このタグはまだ閉じないでください。

8. 次のタグを作成して、それ以降のJSPタグがXHTMLを出力することを示します。

<html:xhtml/>

9. <wl-extension:template name="/WEB-INF/templates/form.xml">開始タグを作成します。

このテンプレートは、管理コンソールの構成ページ(たとえば「ドメイン: 構成: 一般」)と調和するフォームを作成します。

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

10. <wl-extension:form>開始タグを作成し、以下の属性の値を指定します。

- action。(オプション)フォームがユーザー入力を受け付ける場合は、ユーザーがこのフォームを送信するときに呼び出されるStruts Actionのパスを指定します。Actionのパスを定義するStrutsモジュールは、リクエスト内で指定されます。

- bundle。(オプション)列の見出しのローカライズ名を含むメッセージ・バンドルの名前を指定します。

- readOnly。(オプション)このフォームを読取り専用にする(たとえば、読取り専用のモニター・データを表示する)場合は「true」を指定します。

11. フォームに表示するフォームBeanのプロパティのそれぞれについて、表示するコントロールの種類に対応した<wl-extension>タグを作成します(WebLogic Server JSPタグ・リファレンスを参照)。

- <wl-extension:checkbox>

- <wl-extension:chooser-tag>

- <wl-extension:hidden>

- <wl-extension:password>

- <wl-extension:radio>

- <wl-extension:select>

- <wl-extension:text>

- <wl-extension:text-area>

これらのタグのかわりに、<wl-extension:reflecting-fields>タグを使用することもできます。このタグは、フォームBean内の各プロパティについてHTML入力タグを生成します。たとえば、java.lang.Stringを保持するBeanプロパティの場合はテキスト・コントロールが生成され、ブール型のプロパティの場合はチェック・ボックスが生成されます。このタグでは、リクエストにおいてJSPに渡されるデフォルトのフォームBeanを使用します。

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

13. ユーザーに対して各コントロールの目的を説明するテキストを表示するには、前の手順で作成した各<wl-extension>タグにinlineHelpId属性を含めます。

14. <wl-extension:form>タグ、<beehive-template:section>タグ、および<beehive-template:template>タグを閉じます。

例7-4 例: 単純なフォームJSP

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" 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/ext_jspを作成します。root-dirは開発用のディレクトリです。

注意:

root-dir/jspは予約されているディレクトリです。拡張のルート・ディレクトリにjspというディレクトリを含めることはできません。

詳細は、第3章「開発環境の設定」を参照してください。

2. 以下のタグを含めてJSPタグ・ライブラリをインポートします。

<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="beehive-template" %>

これらのタグ・ライブラリについては、「JSPタグ・ライブラリ」を参照してください。

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

4. 次の開始タグを作成して、表のJSPテンプレートを宣言します。

<beehive-template:template
templatePage="/layouts/tableBaseLayout_netui.jsp">

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

5. <beehive-template:section name="configAreaIntroduction">タグを作成します。このタグの中に、表の概要を説明する文章を入力します。この説明は、表の上に表示されます。

6. 次の開始タグを作成します。

<beehive-template:section name="table">

このタグはまだ閉じないでください。

7. <wl-extensions:table>開始タグを作成し、少なくとも以下の属性の値を指定します。

- name。この表用に構成したフォームBeanの名前を指定します。

- property。行Beanを格納するフォームBeanプロパティの名前を指定します。

- bundle。(オプション)列の見出しのローカライズ名を含むメッセージ・バンドルの名前を指定します。

- captionEnabled。(オプション)表の上にタイトルを表示する場合は「true」を指定します。

8. captionEnabled属性に「true」を指定した場合は、<wl-extension:caption>タグを作成します。このタグの中に、表のタイトルを入力します。

9. 表に表示する行Beanのプロパティのそれぞれについて<wl-extension:column>タグを作成し、以下の属性の値を指定します。

- property。行Beanプロパティの名前を指定します。

- label。列の見出しを表示するメッセージ・バンドルのキーを指定します。

10. <wl-extension:table>タグ、<beehive-template:section>タグ、および<beehive-template:template>タグを閉じます。

例7-5 例: モニター用の表JSP

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" 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タグを使用して、表からリンクさせることができます。

- <wl:column-link>。リンク先のページとポートレット・インスタンスのラベルを指定する必要があります。ハンドルによって、ポートレットは選択された特定の行に関連するデータを表示します。

- <wl:column-dispatch>。メタデータを使用して、表示するページとポートレットを決定します。ページとポートレットのラベルを指定するかわりに、ページ宣言にメタデータ・タグを追加し、メタデータ値を<wl:column-dispatch>タグに指定します。メタデータを使用すると、リンクを損わずにページ・ラベルを変更することができます。ハンドルも使用され、ページ内のポートレットは選択された特定の行に関連するデータを表示します。

この章では、ナビゲーション用の表の列の作成方法について説明します。

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

- column-linkタグの使用

- column-dispatchタグの使用

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

handleプロパティを作成してデータを設定するには:

1. 行Beanに、データ型がcom.bea.console.handles.Handleでhandleという名前のプロパティを追加します。

public com.bea.console.handles.Handle getHandle() {
return handle;
}
public void setHandle(Handle handle) {
this.handle = handle;
}

2. 行Beanにデータを設定するStruts Actionクラス内で、handleプロパティの値を設定します。
行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オブジェクトを作成して設定することもできます。管理コンソールAPIリファレンスのハンドルを参照してください。

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

column-linkタグの使用

<wl:column-link>タグを使用するには:

1. 表JSPの最上部に以下の文を追加して、renderタグ・ライブラリを表JSPにインポートします。

<%@ taglib uri="render.tld" prefix="render" %>

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

2. <wl:table>タグ内に次の属性を追加します。

checkBoxValue="handle"

3. リンク元となる列を表示する<wl:column>タグの中に、<wl:column-link> JSPタグをネストします。

<wl:column-link portlet="portlet-instanceLabel">
<render:pageUrl pageLabel="page-definitionLabel"/>
</wl:column-link>

説明:

- portlet-instanceLabel。リンク先のポートレット・インスタンスのラベルです。
ラベルは<netuix:portletInstance>要素のinstanceLabel属性で定義されています。この要素はポートレットが含まれるページの.bookファイルにあります。

- page-definitionLabel。リンク先のポートレット・インスタンスが含まれているページのユニークなラベルです。
ラベルは<netuix:page>要素のdefinitionLabel属性で定義されています。この要素はページの.bookファイルにあります。

例:

<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を生成するためのコンビニエンス・タグです。

column-dispatchタグの使用

<wl:column-dispatch>タグを使用するには:

1. リンク先のページを定義する.bookファイルで、そのページの<netuix:page>要素を見つけて、以下の要素をネストします。

<netuix:meta name="perspective-name" content="ObjectType-value"/>

説明:

- perspective-name。分かりやすい名前を指定します。この値は、<wl:column-dispatch>タグのperspective属性で指定する値と一致する必要があります。たとえば、myCompany-configuration-pageと指定します。

- ObjectType-value 。行Beanの HandleオブジェクトのObjectTypeプロパティの値。管理コンソールAPIリファレンスのHandle.getObjectType()を参照してください。

たとえば、行BeanにMBeanのデータを設定するとします。MBeanのObjectNameを使用してJMXHandleオブジェクトを作成し、そのオブジェクトを行Beanのhandleプロパティの値として設定します。MBeanのObjectNameが「com.mycompany:Name=myApp1,Type=myAppMBean」である場合、JMXHandle.ObjectTypeの値はmyAppMBeanになります。

例:

<netuix:meta name="myCompany-configuration-page" content="myAppMBean"/>

2. 表JSPの<wl:table>タグ内に次の属性を追加します。

3. checkBoxValue="handle"

4. リンク元となる列を表示する<wl:column>タグの中に、<wl:column-dispatch> JSPタグをネストします。

<wl:column-dispatch perspective="perspective-name"/>

説明:

- perspective-name。.bookファイルで指定した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>タグに以下の属性を追加します。

singlechange="false"
controlsenabled="true"

controlsenabled属性を使用すると、表にボタンを表示できるようになります。singlechange属性は、ユーザーがドメインの構成をロックせずにボタンをクリックできるようにします(WebLogic Server JSPタグ・リファレンスを参照。)

2. <wl-extension:table>開始タグの直後に、以下のタグを追加します。

<wl:button-bar>
<wl:button-bar-button labelid="button-label"
pageLabel="page-definitionLabel"/>
</wl:button-bar>

説明:

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

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

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

たとえば、サーバー表ページにリンクするには、次のように指定します。

<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というプロパティを追加します。
このプロパティのデータ型はプリミティブ型の配列かcom.bea.console.handles.Handleの配列にする必要があります。

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

例:

<form-property name="chosenContents"
type="[Lcom.bea.console.handles.Handle;"/>

2. 表JSPで、<wl-extension:table>タグに以下の属性を追加します。

singlechange="false"
controlsenabled="true"
showcheckboxes="true"
checkBoxValue="property-name"

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

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

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

singlechoice="true"

3. <wl-extension:table>開始タグの直後に、以下のタグを追加します。

<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属性で定義されています。この要素はポートレットが含まれるページの.bookファイルにあります。

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

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

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

2. ポストされたデータを処理できるStruts Actionを作成するには:

1. Struts Actionに転送するポートレットを作成します。ポートレットのinstanceLabelが手順1cで指定した値と一致するようにしてください。
例:

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

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

2. Struts構成ファイルで、chosenContentsというプロパティを含むActionForm Beanを定義します。このプロパティのデータ型は、手順1aで指定したデータ型と同じにする必要があります。
例:

<form-bean name="processButtonForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="chosenContents"
type="[Lcom.bea.console.handles.Handle;"/>
</form-bean>

3. Struts構成ファイルで、ActionForm Beanのデータを、処理を行うJavaクラスに送信するStruts Actionマッピングを定義します。
例:

<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プロパティの値がリクエスト・オブジェクトにポストされることを指定します。

<wl-extension:table
showcheckboxes="true"
checkBoxValue="handle"
...
>

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

2. ユーザーが行を選択してボタンをクリックすると、ボタンはその行BeanのJMXHandleオブジェクトを、表BeanのchosenContentsプロパティ内の配列に追加します。次に、表Beanをポストします(図7-4を参照。)

3. Strutsコントローラは表Bean (Struts ActionForm Bean)をシリアライズして、シリアライズしたBeanをHTTPリクエスト・オブジェクトに書き込みます。次に、そのリクエストを指定されたポートレットに転送します。

4. ポートレットはStruts Actionマッピングを起動します。Actionマッピングは次のことを行います。

1. ActionForm Beanを作成して、HTTPリクエストのデータをそのBeanに設定します。

2. Actionクラスを呼び出して、ActionForm Beanをそのクラスで使用できるようにします。

3. ActionクラスはフォームBeanのchosenContents配列(JMXHandleのインスタンスが格納されている)を反復処理します。配列内の要素ごとにクラスは、次のことを行います。

4. JMXHandleオブジェクトに暗号化されたMBean ObjectNameを取得します。

5. MBeanをルックアップする際に.MBeanServerを使用します。

6. MBeanServerを使用して、属性値をクリアするMBean操作を呼び出します。

7. 処理に成功すると、ActionマッピングはJSPに転送します。

図7-4 例: 表からStruts Actionへのデータ・フロー

表プリファレンスの構成

<wl:table>タグに属性を1つ追加すると、表に表示される表の列をユーザーが構成できるようになります。管理コンソールでは、各ユーザーのプリファレンスや、表を表示するポートレットの各インスタンスのプリファレンスを永続化します。複数のポートレット・インスタンスで1つの表を再利用する場合、各ユーザーは各ポートレット・インスタンスの表ごとに異なるプリファレンスを設定できます。

表に表示される表の列のセットをユーザーが構成できるようにするには、<wl:table>タグにcustomize="true"という属性を追加します。

例:

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

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

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

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

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

8 コンソール拡張のオンライン・ヘルプの追加

この章では、コンソール拡張ヘルプの作成方法とそのヘルプを管理コンソールのヘルプ・システムにマージする方法について説明します。管理コンソールのヘルプ・ビューアは、オープン・ソース・ヘルプ・システムであるJavaHelp 2.0の実装を使用するOracle WebLogic Portal Webアプリケーションです。

この章の内容は以下のとおりです。

- 手順の概要

- ヘルプセットの作成

- ヘルプセットのマージ

- ヘルプセットのローカライズ

- ヘルプセットをマージする方法

- 状況依存のヘルプのサポート

- ヘルプのリブランディング

- ヘルプのデプロイメント

手順の概要

コンソール拡張ヘルプ・トピックの作成に必要な主な手順は次のとおりです。

1. HTMLトピックのファイルとJavahelpコントロールのファイルを含むJavahelpヘルプセットを作成します。

2. コンソール拡張ヘルプ・トピックから状況依存リンクを確立します。

3. コンソール拡張を使用してヘルプ・システムをデプロイします。

ヘルプセットの作成

JavahelpシステムはJavahelpソフトウェアを使用して作成できます。または、Javahelpを作成するヘルプ作成ツールを使用できます。詳細な手順については、Javahelpのドキュメントまたは作成ツールのドキュメントを参照してください。

JavaHelpの詳細およびJavahelpソフトウェアのダウンロードの詳細は、「JavaHelp System」(http://javahelp.java.net/)を参照してください。

ヘルプセット・ファイル

管理コンソールのヘルプ・システムに必要なファイルは以下のとおりです。これらのファイルをまとめて「ヘルプセット」と呼びます。

- トピックのファイル(.html)
これらのファイルにはヘルプ・コンテンツがあります。これらのファイルを作成するには、HTMLファイルを作成する任意のエディタを使用できます。

- ヘルプセット・ファイル(.hs)
このXMLファイルは、マップ・ファイルの名前と場所、ヘルプセットのタイトルなどの情報を含めた拡張ヘルプセットを定義します。

コンソール拡張ヘルプセットでは、Helpsetファイルの名前は拡張の名前で始める必要があります。たとえば、Joltコンソール拡張Helpsetファイルの名前はjolt.hsです。(Joltコンソール拡張は管理コンソールの標準拡張です。)ローカライズされたヘルプセットでは、拡張の名前の最後にロケール情報を追加します。たとえば、jolt_en_US.hs。

- マッピング・ファイル(.jhm)
このXMLファイルはコンテキスト・ヘルプIDをヘルプ・トピックにマップします。

- 目次ファイル(.xml)
このXMLファイルはヘルプの目次を定義します。

省略可能なファイルは以下のとおりです。

- 索引ファイル(.xml)
このXMLファイルはヘルプの索引を定義します。

- 全文検索データベース
これらのデータベース・ファイルがJavahelpソフトウェアまたはJavahelpを作成するヘルプ作成ツールの使用によって生成されます。

ヘルプセットをマージし、ローカライズされたヘルプセットを提供するためにはさらに考慮事項があります。詳細は、「拡張ヘルプをマージするためのディレクトリ構造」および「ヘルプセットのローカライズ」を参照してください。

ヘルプセットのマージ

拡張ヘルプセットが構成され、適切に名前が指定されていれば、コンソール拡張ヘルプセットの目次と検索データベースが主要な管理コンソール・ヘルプに自動的にマージされます。拡張ヘルプセットは、ヘルプが管理コンソールと同じサーバー・インスタンスにデプロイされるときにのみマージされます。

管理コンソールのヘルプセット・ファイルはマージ・タイプをJavahelp AppendMergeタイプに設定します。そのタイプは、コンソール拡張ヘルプセットを主要なコンソール・ヘルプにマージする方法を定義します。

Javahelpのマージの詳細は、「ヘルプセットのマージ」(http://www.oracle.com/technetwork/indexes/documentation/index.html)を参照してください。WebLogic Serverにヘルプセットをマージする方法の詳細は、「ヘルプセットをマージする方法」も参照してください。

拡張ヘルプをマージするためのディレクトリ構造

拡張のヘルプを主要なコンソール・ヘルプにマージするには、ヘルプ・ファイルは次のように構成されていることが必要です。ヘルプセット・ファイルを含めたディレクトリの名前はbea-helpsetsでなければなりません。

...\console_extension\bea_helpsets\extension_name_locale.hs
...\console_extension\bea_helpsets\locale\extension_name-map.jhm
...\console_extension\bea_helpsets\locale\extension_name-toc.xml
...\console_extension\bea_helpsets\locale\extension_name-search\search database files
...\console_extension\bea_helpsets\locale\topics_dir\HTML topic files...
...\console_extension\bea-helpsets\locale\topics_dir\images\Graphic files...
...\console_extension\PortalConfig\...
...\console_extension\WEB-INF\...
...\console_extension\Other extension source directories...

注意:

HTMLトピックのファイルと画像ファイルは、複数のディレクトリおよびサブディレクトリに配置されている場合がありますが、すべては、...\console_extension\bea_helpsets\localeの下にある必要があります。

例:

...\my_ext\webapp\bea_helpsets\my_ext_en_US.hs
...\my_ext\webapp\bea_helpsets\en_US\my_ext_map.jhm
...\my_ext\webapp\bea_helpsets\en_US\my_ext_toc.xml
...\my_ext\webapp\bea_helpsets\en_US\my_ext-search\search database files...
...\my_ext\webapp\bea_helpsets\en_US\pagehelp\HTML topic files...
...\my_ext\webapp\bea_helpsets\en_US\taskhelp\HTML topic files...
...\my_ext\webapp\bea-helpsets\en_US\taskhelp\images\Graphic files...
...\my_ext\webapp\jsp\...
...\my_ext\webapp\PortalConfig\...
...\my_ext\webapp\WEB-INF\...

ヘルプセットのローカライズ

複数のローカライズされたヘルプセットを同時にヘルプに含めることができます。特定ロケールのヘルプ・ファイルを検索するには、ヘルプ・ビューアがjava.util.ResourceBundleで使用される方法と同じ方法を使用します。ヘルプ・ビューアは拡張のためにbea-helpsetsディレクトリの下に以下のディレクトリ構造を想定しています。

...\extension_name_locale_1.hs
...\extension_name_locale_2.hs
...\extension_name_locale_3.hs

...\locale_1\map.jhm
...\locale_1\toc.xml
...\locale_1\search\Search db files...
...\locale_1\topics\HTML topic files...
...\locale_1\topics\images\Graphic files... (optional)

...\locale_2\map.jhm
...\locale_2\toc.xml
...\locale_2\my_search\Search db files...
...\locale_2\topics\HTML topic files...
...\locale_1\topics\images\Graphic files... (optional)

...\locale_3\map.jhm
...\locale_3\toc.xml
...\locale_3\search\Search db files...
...\locale_3\topics\HTML topic files
...\locale_3\topics\images\Graphic files... (optional)

たとえば、図8-1を参照してください。

図8-1 ローカライズされたヘルプのディレクトリ構造

ブラウザで指定したロケールのヘルプ・コンテンツが見つからない場合は、ヘルプ・ビューアによりデフォルトのフォルダのコンテンツが表示されます。

ヘルプセットをマージする方法

ユーザーがヘルプ・ビューアから初めてヘルプを要求する場合、管理コンソール・ヘルプセットが解析され、ヘルプセット・オブジェクトが作成されて、捕捉されます。ヘルプ・ビューアが拡張ヘルプセットのサーバー拡張フォルダとドメイン拡張フォルダを検索し、それらを管理コンソール・ヘルプセットにマージします。コンソールは以下の場所で拡張を探します。

- WL_HOME/server/lib/console-ext

- WL_HOME/server/lib/console-ext/autodeploy

- DOMAIN_HOME/console-ext

ヘルプセットが以下のルールに従ってマージされます。

1. ユーザーが要求したロケールに対するコンソール・ヘルプと拡張ヘルプが存在する場合、拡張ヘルプがコンソール・ヘルプにマージされます。

2. ユーザーが要求したロケールに対するコンソール・ヘルプと拡張ヘルプが存在しない場合、コンソール・ヘルプが英語で表示されます。ヘルプ・ビューアが英語のロケールのための拡張ヘルプを検索し、それが見つかった場合は、拡張ヘルプがコンソール・ヘルプにマージされます。

3. ユーザーが要求したロケールのコンソール・ヘルプが存在して、そのロケールの拡張ヘルプが存在しない場合、ヘルプ・ビューアが英語のロケールのための拡張ヘルプを検索し、それが見つかった場合は、拡張ヘルプがコンソール・ヘルプにマージされます。

4. 特定のロケールのための拡張ヘルプを検索する場合、ヘルプ・ビューアが言語、国、およびバリアントのヘルプセットを探します。3つとも見つからない場合は、ヘルプ・ビューアが言語と国を探します。言語と国でも見つからない場合は、次のリストに示すように、ヘルプ・ビューアが言語を探します。

1. 言語+ "_" +国+ "_" +バリアント

2. 言語+ "_" +国

3. 言語

状況依存のヘルプのサポート

ユーザーが管理コンソールの上部にある「コンテンツ・ヘッダー」メニューの「ヘルプ」リンクをクリックして管理コンソールからヘルプを要求します。そのリンクが現在のページのヘルプ・トピックを表示します。

コンソール拡張ページのための状況依存のヘルプを提供するには、

- ブック、ページまたはページでの対象のためにヘルプIDの提供必要があります。

- Javahelpマップ(.jhm)ファイルにヘルプIDのヘルプ・ファイルへのマップが必要です。

ここで、コンソール拡張の開発者は管理コンソールの左側の「操作ガイド」パネルまたは構成ページやモニター・ページの右側の「詳細」のリンクを提供することはできません。

ヘルプIDを提供する

各Portalページやブックには、ヘルプIDがあり、ページの対象には、ヘルプIDがあります。helpidまたはhelpurlpatternsを指定する必要があります。

helpid

helpidという名前のmetaタグを使用してヘルプIDとバンドル名を指定することで、ポータル・ページやブックのヘルプ・コンテキストを指定します。ヘルプIDとバンドル名はセミコロン(;)で区切ります。または、ポータルとブックは祖先ページやブックからコンテキストを継承できます。

ヘルプIDには英数字、ハイフン(-)、およびアンダースコア(_)のみが含まれます。その他の文字は拒否され、一般的なエラー・メッセージが表示されます。

ヘルプWebアプリケーションがhelpidメタ・データからヘルプIDとバンドル名を読み込みます。ページまたはブックがhelpidを設定しない場合、ヘルプ・アプリケーションがhelpidを取得するために親ページまたはブックを再帰的に検索します。最も近い親からのhelpidが使用されます。

管理コンソールの全体的なHomeブックには、コンテキストのhelpidが見つからない場合、コンソールのデフォルトのヘルプ・ページが表示されることを確認するhelpidがあります。helpid値をbea.wls.console.pageHelpKeyというJavaScript変数に割り当てます。

コンテンツ・ヘッダーのヘルプリンクをクリックすると、helpidがヘルプWebアプリケーションに問合せパラメータとして渡されます。ヘルプWebアプリケーションがhelpidを使用してマッピング(.jhm)ファイルを問合せ、ヘルプ・リソースを返します。

次の例では、Joltコンソール拡張の「JoltConnectionPoolの設定」ページの「構成」>「一般」タブのためにhelpidを割り当てる方法を示します。この断片はJoltFullFeatures.bookファイルから取得されます。

<netuix:page markupName="page"
markupType="Page"
definitionLabel="JoltConnectionPoolConfigGeneralTabPage"
title="tab.general.label" presentationClass="page-content">
<netuix:meta name="helpid"
content="Jolt.jolt.joltconnectionpoolconfiggeneral.title;jolt"/>

helpurlpattern

管理コンソールは、ヘルプを呼び出すための別の方法を提供します。一般的なヘルプURLパターンは、ポータル・ページやブックのhelpurlpatternメタ・データ・タグを使用して定義できます。パターンの値には、netuixメタ・タグを使用して任意のページやブックに代入できる変数があります。たとえば、helpurlpatternメタ・タグの値を次のように設定します。

<netuix:meta name="helpurlpattern" content=
"/consolehelp/console-help.portal?_nfpb=true&_pageLabel=page&helpId=${helpid}"/>

次に、<netuix:meta>タグを使用してhelpid値を指定します。

<netuix:meta name="helpid" content="applications.CreateDeploymentPlan"/>

URLパターンのhelpid変数はhelpidメタ・タグに提供されている値と代入されます。

helpurlpatternは任意のページやブックに指定できます。それを指定しない場合、helpurlpatternを探すために親ページとブックは再帰的に検索されます。最も近い親からのhelpurlpatternが使用されます。パターンが見つかった場合、有効なURLに到着するために、現在のページやブックに定義した任意の変数置換値がURLパターンに適用されます。

helpurlpatternは、拡張ヘルプの別のURLを提供するときの便利な方法です。my_extensionという拡張を考慮してください。ヘルプの要求をWebページに転送する必要があります。my_extensionという拡張がルート・ページやブックにhelpurlpatternを次のように定義します。

<netuix:meta name="helpurlpattern"
content="http://my_web_site.com/my_product/docs/${product_name}/index.html"/>

product_nameメタ・タグは置換値を提供できます。

<netuix:meta name="product_name" content="my_extension"/>

生成されたヘルプ・リンクはhttp://my_web_site.com/my_product/docs/my_extension/index.htmlを指します。

ヘルプIDのヘルプ・ファイルへのマップ

ポータル・ページとブックで定義した ヘルプIDをJavahelpマップ(.jhm)ファイルのHTMLヘルプ・トピックのファイルにマップします。たとえば、マップ・ファイルの次の要素がヘルプID domainconfigを ページ・ディレクトリにあるdomainConfig.htmlトピック・ファイルに関連付けます。

<mapID target="domainconfig" url="Pages/domainConfig.html"/>

指定したトピック・ファイルへのパスは、マップ・ファイルの場所を基準にしたパスです。マップ・ファイルはlocaleディレクトリにあります。詳細は、「拡張ヘルプをマージするためのディレクトリ構造」を参照してください。

ヘルプのリブランディング

ルック・アンド・フィール(LAF)を提供し、それをヘルプWebアプリケーションのポータル(console-help.portal)の対象とすることで、ヘルプWebアプリケーションをリブランディングできます。管理コンソールWebアプリケーションと同じサーバー・インスタンスにデプロイされるときにのみ、拡張LAFがヘルプWebアプリケーションをリブランディングできます。ルック・アンド・フィールの変更の詳細は、第5章「管理コンソールのリブランディング」を参照してください。

ヘルプのデプロイメント

ヘルプWebアプリケーションはコンソールと同じサーバー・インスタンスにデプロイされるときにのみ、拡張ヘルプがコンソール・ヘルプにマージされます。ヘルプWebアプリケーションは別のサーバー・インスタンスにデプロイされると、それがマージされません。

同様に、ヘルプWebアプリケーションはコンソールと同じサーバー・インスタンスにデプロイされるときにのみ、ヘルプWebアプリケーションがリブランディングされます。

9 コンソール拡張のアーカイブとデプロイ

この章では、ソース・ファイル、コンパイル済JSPファイルおよびJavaクラス・ファイルのディレクトリ・ツリーを作成した後、コンソール拡張をアーカイブおよびデプロイする方法を説明します。コンソールの拡張のディレクトリ・ツリーを作成したら、ディレクトリ・ツリーをWARファイルにアーカイブして、そのWARファイルをWebLogic Serverドメインにコピーします。拡張のディレクトリ・ツリーにおいて作成するファイルとディレクトリについては、「拡張のディレクトリ・ツリーの作成」を参照してください。

コンソール拡張を複数のデプロイ可能なコンポーネントに分割する場合は、拡張のサブセットを含む複数のアーカイブを作成してデプロイできます。各アーカイブには、それぞれの内容を表示するのに必要なクラスとポータル・フレームワーク・ファイルをすべて格納する必要があります。たとえば、拡張で管理コンソールのルック・アンド・フィールを変更し、デスクトップにポートレットを追加する場合は、ルック・アンド・フィール拡張用にアーカイブを1つ作成し、デスクトップにポートレットを追加するのに必要なファイルを含む、もう1つのアーカイブを作成します。

コンソール拡張のアーカイブとデプロイ

コンソール拡張をアーカイブしてデプロイするには:

1. 拡張ディレクトリをWARファイルにアーカイブします。WARファイルの名前は、プログラム的には重要ではありません。分かりやすい名前を付けてください。
root-dirディレクトリのコンテンツをアーカイブのルートにする必要があります。root-dirディレクトリの名前自体がアーカイブに含まれないようにしてください。jarコマンドを使用してアーカイブを作成する場合は、root-dirディレクトリからコマンドを入力します。例:

c:\root-dir\> jar -cf my-extension.war *

2. WARファイルを各ドメインのdomain-dir/console-extディレクトリにコピーします。domain-dirはドメインのルート・ディレクトリです。

3. 各ドメインの管理サーバーを再起動します。

デプロイメント中のエラーの出力

管理コンソールでデプロイメント・エラーが発生すると、標準出力と管理サーバーのサーバー・ログ・ファイルにエラーおよび警告メッセージが出力されます。

エラーまたは警告メッセージが出力されていないのに拡張が管理コンソールに表示されない場合は、netuix-extension.xmlファイルで間違った親UIコントロールを指定した可能性があります。たとえば、子にアクセスするためのタブを表示しない親UIコントロールを指定した場合、拡張はデプロイされますが、それにアクセスするためのメニュー・コントロールが存在しないことになります。

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2014, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

制限付権利

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。