Administration Console の拡張
このマニュアルでは、BEA WebLogic Server Administration Console を拡張する方法について説明します。Administration Console を拡張すると、標準コンソール ページと一緒に表示する独自のコンソール画面を作成できます。以下の節では、コンソールを拡張するための手順について説明します。
BEA WebLogic Server Administration Console は、WebLogic Server ドメインを管理するためのブラウザ ベースのグラフィカル ユーザ インタフェースです。Administration Console の詳細については、Administration Console オンライン ヘルプの「Administration Console の使用方法」を参照してください。Administration Console を拡張するには、標準の Administration Console 画面と一緒に表示する画面とナビゲーション要素を追加します。
コンソール拡張は、標準の Administration Console に組み込まれていない機能、または既存の機能の代替インタフェースを提供します。たとえば、コンソール拡張を使用すると、以下のことができます。
Administration Console 拡張を作成するには、Java プログラミング、JavaServer Pages (JSP)、HTML、および WebLogic Server MBean に関する中級レベルの知識が必要です。MBean は、WebLogic Server ドメインのシステム管理に使用する Java オブジェクトです。WebLogic MBean と WebLogic Server システム管理インフラストラクチャの詳細については、『WebLogic Server のコンフィグレーションと管理』の「システム管理のインフラストラクチャ」を参照してください。
Administration Console 拡張のサンプル コードは、BEA dev2dev Web サイトから入手できます。「Sample Administration Console Extension (WLS 8.1)」リンクをクリックして、ConsoleExtensionExample_810.zip
ファイルをダウンロードしてください。独自のコンソール拡張を作成するには、このサンプルのファイルが必要です。
Administration Console 拡張には、図 1-1 に示すように次のビジュアル要素を含めることができます。
図 1-1 Administration Console のビジュアル要素
コンソール拡張を作成するには、以下のプログラマティック要素を作成します。
Administration Console 拡張を作成するには、次の手順が必要です。
コンソール拡張を定義するには、weblogic.management.console.extensibility.Extension
を拡張し、weblogic.management.console.extensibility.NavTreeExtension
を実装する Java クラスを記述します。この Java クラスのサンプルについては、「NavTreeExtension インタフェースを実装するためのサンプル Java クラス」を参照してください。
注意 :カスタム セキュリティ プロバイダのコンソール拡張を作成する場合は、weblogic.management.console.extensibility.NavTreeExtension
インタフェースではなく、weblogic.management.console.extensibility.SecurityExtension
インタフェースを実装します。 (詳細については、「カスタム セキュリティ プロバイダ用のコンソール拡張の記述」を参照してください。)
コンソール拡張を表すノードをどこに配置するかは、そのコンソール拡張の機能によって決める必要があります。たとえば、コンソール拡張がドメインの WebLogic Server インスタンスに関連している場合、そのコンソール拡張を ServerMBean
(weblogic.management.configuration.ServerMBean
) に関連付けて、そのコンソール拡張ノードを [サーバ] ノードに配置します。
コンソール拡張は、ノードの下に表示されるコンフィグレーション済みオブジェクトの各インスタンスの下に表示されます。たとえば、[サーバ] ノード (ServerMBean
) を選択した場合、拡張はドメイン内の各コンフィグレーション済みサーバの下に表示されます。(MBeans のリストについては、weblogic.management.congfiguration
パッケージの「Javadocs」 を参照してください)。
コンソール拡張をナビゲーション ツリーの最上位 (ドメイン) レベルに表示させる場合、その拡張を DomainMBean
(weblogic.management.configuration.DomainMBean
) に関連付けます。コンソールにはドメインの 1 つのインスタンスしか表示されないので、コンソール拡張は一度しか表示されません。
import
文を追加します。コンソール拡張にアクセスするためのナビゲーション ツリーは、この MBean のノードの子として表示されます。次に例を示します。
import weblogic.management.configuration.DomainMBean
.
import weblogic.management.console.extensibility.
NavTreeExtension;
import weblogic.management.console.extensibility.Catalog;
import weblogic.management.console.extensibility.Extension;
import javax.servlet.jsp.PageContext;
final public class ExampleConsoleExtension extends Extension implements NavTreeExtension
public ExampleConsoleExtension() {}
getNavExtensionFor()
メソッドを定義します。Administration Console は自身を初期化するときにこのメソッドを呼び出し、ナビゲーション ツリーの各ノードを作成するときに関連する MBean の名前を Object
引数として受け渡します。このメソッドでは、Object
引数がコンソール拡張を表示するノードに関連付けられる MBean のインスタンスであるかどうかをテストします。Object
がこの MBean のインスタンスである場合、このメソッドはナビゲーション ツリー内のノードの動作を定義する JSP ページの URL を返します。それ以外の場合、null
を返します。次に例を示します。
public String getNavExtensionFor(Object key)
{
if (key instanceof DomainMBean) {
System.out.println(
"\nFound an instance of the DomainMbean\n");
return "domain_navlink.jsp";
}
return null;
}
上記の例では、Administration Console は DomainMBean
のノードを作成するときにこのメソッドを実行し、ドメインの名前を Object
引数として受け渡します。Object
は DomainMBean
のインスタンスであるため、このメソッドは URL domain_navlink.jsp
を返します。
注意 :カスタム セキュリティ プロバイダのコンソール拡張を作成する場合は、getNavExtensionFor()
メソッドを定義しないでください。代わりに、「SecurityExtension インタフェースを使用によるカスタム セキュリティ プロバイダ関連の Administration Console ダイアログ画面の置き換え」で説明されているいずれかをメソッドを定義してください。詳細については、「SecurityExtension の Javadocs」インタフェースを参照してください。
weblogic.managment.console.extensions.Extension
クラスのメソッドを呼び出してコンソール拡張の機能を実装する必要があります。その場合に必要となる処理については、このマニュアルでは取り扱っていません。詳細については、weblogic.management.console.extensibility
パッケージの「Javadocs」 を参照してください。WEB-INF/classes
ディレクトリにそのクラスを表示します。クラスをコンパイルするには、開発環境を設定して WebLogic Server クラスを組み込みます。詳細については、「Java コードのコンパイル」を参照してください。「NavTreeExtension インタフェースの実装」で説明したとおりに記述した Java クラスの getNavExtensionFor()
メソッドは、ナビゲーション ツリーに表示される各コンソール拡張に対応する URL を返します。この URL は、このノードの動作を定義する JSP を指し示します。この JSP では、以下のものを定義します。
ナビゲーション ツリー ノードを定義する JSP を定義するには、次の手順に従います。
<%@ taglib uri='console_extension_taglib.tld' prefix='wl' %>
<wl:extensibility-key
id='domainKey'
class='MyObjectClass
' />
MyObjectClass
は、アクセスするオブジェクトの Java クラス名です。
詳細については、「<wl:extensibility-key> タグ」を参照してください。
<wl:node>
タグを追加します。これらのタグでは、ナビゲーション ツリーに表示されるノードを記述します。<wl:node>
タグをネストして子ノードを作成できます。<wl:node>
タグの url
、label
、labelId
、icon
、expanded
、target
、および font
属性を使用して、このノードの概観と機能を定義できます。これらの属性の詳細については、「<wl:node> タグ」を参照してください。label 属性では、タブの表示名を定義します。この名前をローカライズする場合、labelId 属性を使用してローカライゼーション ライブラリ内でこの名前を参照します。ローカライゼーションの詳細については、「コンソール拡張でのローカライゼーションの使い方」を参照してください。
icon 属性はイメージ ファイルを指し示し、そのイメージをナビゲーション ツリー内のこのノードのアイコンとして表示します。アイコンとして使用するイメージ ファイルは、サンプル アプリケーションから入手可能であり、extension_files/images
ディレクトリにあります。 (「Administration Console 拡張のパッケージ化の手順 1」を参照してください)。
<wl:node
label='<%="My Console Extension"%>'
icon='/images/folder.gif'
expanded='true'>
<wl:node
label='Nested Tabs'
icon='/images/bullet.gif'
url='/dialog_domain_example.jsp'>
</wl:node>
<wl:node label='Localization Examples'
icon='/images/bullet.gif'>
</wl:node>
</wl:node>
上記のコードを実行すると、図 1-2 に示すようにナビゲーション ツリー ノードになります。
<wl:menu>
タグを追加して、右クリック メニュー オプションを作成します。<wl:menu>
タグ
の属性は、label
、labelId
、url
、および target
です。詳細については、「<wl:menu> および <wl:menu-separator> タグ」を参照してください。たとえば、前の手順の例で定義した「Localization Examples」ノードに <wl:menu>
タグを追加するには、次のコードを使用します。
...
<wl:node
label='Localization Examples'
icon='/images/bullet.gif'>
<wl:menu
label='BEA Product Documentation'
url='http://e-docs.bea.com/index.html'
target='_blank'/>
<wl:menu-separator/>1
<wl:menu
label='BEA home'
url='http://www.bea.com'
target='_blank'/>
</wl:node>
...
上記のコードを実行すると、図 1-3 に示すように、右クリック メニューが作成されます。
コンソール拡張によって生成される実際のダイアログ画面は、ユーザがナビゲーション ツリー内のコンソール拡張のノードをクリックしたときに Administration Console の右ペインに表示されます。これらの画面を作成するには、付属の JSP タグ ライブラリを使用して JSP を記述します。タグ ライブラリのリファレンス情報については、「コンソール拡張タグ ライブラリの使い方」を参照してください。表示される JSP は、「ナビゲーション ツリーの設定」で作成した JSP の <wl:node>
タグの url
属性によって決定されます。
ダイアログ画面は、<wl:tab>
JSP タグで定義する 1 つまたは複数のタブ付きダイアログを使用して作成します。これらのタブにはサブ タブをネストできますが、ネストは 1 レベルしかできません。各タブには、テキスト ラベルを明示的に指定するか、またはローカライゼーション カタログ内でそのタブのローカライズされたラベルを参照するためのラベル ID を指定できます。
各タブ (<wl:tab>...</wl:tab>
タグ内) の中では、JSP および HTML コードを使用してコンソール拡張の機能を作成できます。これらの中に表示されるテキストも、ローカライゼーション カタログを参照することによってローカライズできます。ローカライゼーション (コンソール拡張を複数の言語で表示する機能) の使い方については、「コンソール拡張でのローカライゼーションの使い方」を参照してください。
注意 :コンソール拡張のユーザ インタフェースを作成する際には、さまざまなプログラミング テクニックを使用できます。これらのテクニックについては、このマニュアルでは取り扱っていません。詳細については、次を参照してください。
次に、コンソール拡張画面を表示する基本的な JSP を作成する手順を示します。
<%@ taglib uri='console_extension_taglib.tld' prefix='wl' %>
<%@ page import='weblogic.management.console.catalog.Catalog' %>
<%@ page import='weblogic.management.console.helpers.Helpers' %>
<%
Catalog catalog = Helpers.catalog(pageContext);
String charset = catalog.getCharset();
if (charset != null)
response.setContentType("text/html; charset="+charset);
%>
<html>
<head>
<wl:stylesheet/>
</head>
<body>
<div class='content'>
<wl:dialog>
(<wl:tab> 文をここに挿入する)
</wl:dialog>
</div>
</body>
</html>
<head>...</head>
ブロック内の <wl:stylesheet/>
タグは省略可能です。このタグを組み込むと、指定するテキストのフォーマットが標準 WebLogic Server Administration Console ページと一致します。
<wl:standard-banner>
Banner Title
</wl:standard-banner>
このタグとその属性の詳細については、「<wl:standard-banner> タグ」を参照してください。
<wl:tab>
タグを追加します (これらのタグを <wl:dialog>...</wl:dialog>
タグの間に配置します)。各 <wl:tab>
タグでは、Administration Console の右ペインに表示されるタブ付き画面を定義します。最上位タブの中には 1 つまたは複数のタブをネストできますが、サポートされるネスト レベルは 1 です。 各 <wl:tab>
タグに対しては、name
、label
、および labelId
属性を定義できます。各 <wl:tab>
タグには終了タグ (</wl:tab>
) が必要です。これらの属性の使い方については、「<wl:tab> タグ」を参照してください。<wl:tab>
ブロックの中には、コンソール拡張ダイアログ画面の本体を表示する HTML および JSP コードを記述します。また、タブの表示ラベルをローカライズできます。詳細については、「タブ ラベルのローカライズ」を参照してください。
たとえば、次のコードで、 2 つの最上位タブが作成されます。各タブには 2 つのネストされたタブが含まれています (これらのタブがコンソールにどのように表示されるかについては、図 1-4 を参照してください)。
<wl:tab name='TopLevelTabA' label='Top Level Tab A'>
<wl:tab name='NestedTabA1' label='Nested Tab A-1'>
(コンソール拡張を表示するための JSP
または HTML コードをここに挿入する)
</wl:tab>
<wl:tab name='NestedTabA2' label='Nested Tab A-2'>
(コンソール拡張を表示するための JSP
または HTML コードをここに挿入する)
</wl:tab>
</wl:tab>
<wl:tab name='TopLevelTabB' label='Top Level Tab B'>
<wl:tab name='NestedTabB1' label='Nested Tab B-1'>
(コンソール拡張を表示するための JSP
または HTML コードをここに挿入する)
</wl:tab>
<wl:tab name='NestedTabB2' label='Nested Tab B-2'>
(コンソール拡張を表示するための JSP
または HTML コードをここに挿入する)
</wl:tab>
</wl:tab>
注意 :この手順は、コンソール拡張を定義する基本的な JSP を作成するためのものです。ローカライゼーションなどの他の機能を実現するタグも存在しますが、ここでは示しません。これらのタグについては、別の節で説明します。
前節の手順では、コンソール拡張を複数の言語で表示するためのローカライゼーションについては説明しませんでした。コンソール拡張をローカライズする手順には、特別な JSP タグの使用、ローカライゼーション カタログの記述、すべてのローカライゼーション カタログを表示する index.xml
ファイルの記述などが含まれます。記述した index.xml
ファイルとカタログ ファイルは、コンソール拡張を定義する Web アプリケーションにパッケージ化します (「Administration Console 拡張のパッケージ化」を参照)。
ローカライゼーションの詳細については、「コンソール拡張でのローカライゼーションの使い方」を参照してください。
コンソール拡張の JSP と Java クラスは、J2EE Web アプリケーションとしてパッケージ化して WebLogic Server ドメインの管理サーバにデプロイします。
ConsoleExtensionExample_810.zip
ファイルをダウンロードしてください。独自のコンソール拡張を作成するには、このサンプルのファイルが必要です。ConsoleExtensionExample_810.zip
ファイルをハード ディスク上の一時ディレクトリに解凍します。このアーカイブの extension_files
ディレクトリには、コンソール拡張に必要な以下のファイルが存在します。console_extension_taglib.tld
(このファイルは、WebLogic Server のインストール先の BEA_HOME/weblogic81/server/lib
ディレクトリにも格納される)images/folder.gif
(ナビゲーション ツリーでこれらのアイコンを使用する場合にのみ必要)images/bullet.gif
(ナビゲーション ツリーでこれらのアイコンを使用する場合にのみ必要)deployment_descriptor_templates/web.xml
(コンソール拡張用に修正可能なテンプレート)deployment_descriptor_templates/weblogic.xml
(コンソール拡張用に修正可能なテンプレート)次の手順に従ってコンソール拡張をパッケージ化し、指示された場所に上記のファイルをコピーしてください。図 1-5 は、これらのファイルの Web Application 内での正しい場所を示しています。
web.xml
デプロイメント記述子を記述します(ConsoleExtensionExample_810.zip
ファイルのテンプレートから作成できます)。web.xml
デプロイメント記述子では、コンソール拡張クラスの名前と指定された JSP タグ ライブラリを宣言しています。デプロイメント記述子の作成には、テキスト エディタを使用するか、または WebLogic Server 配布キットの WebLogic Builder ツールを使用します。詳細については、『WebLogic Builder オンライン ヘルプ』を参照してください。web.xml
デプロイメント記述子には、次の例に示す要素が定義されている必要があります。「NavTreeExtension インタフェースの実装」の手順 5 で作成したクラスの名前を MyConsoleExtension
に置き換えます。完全なパッケージ名を指定する必要があります。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>
My Weblogic Console Example Extension
</display-name>
<context-param>
<param-name>weblogic.console.extension.class</param-name>
<param-value>MyConsoleExtension
</param-value>
</context-param>
<taglib>
<taglib-uri>console_extension_taglib.jar</taglib-uri>
<taglib-location>
WEB-INF/console_extension_taglib.tld
</taglib-location>
</taglib>
</web-app>
weblogic.xml
デプロイメント記述子を記述します。(ConsoleExtensionExample_810.zip
ファイルに含まれているテンプレートを元にして始めることもできます)。weblogic.xml
デプロイメント記述子には、コンソール拡張が Administration Console 全体と同じセキュリティ コンテキストを共有するためのエントリを挿入します。デプロイメント記述子の作成には、テキスト エディタを使用するか、または WebLogic Server 配布キットの WebLogic Builder ツールを使用します。詳細については、『WebLogic Builder オンライン ヘルプ』を参照してください。weblogic.xml
デプロイメント記述子には、次の例に示す要素を挿入する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app
PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"; >
<weblogic-web-app>
<weblogic-web-app>
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>ADMINCONSOLESESSION</param-value>
</session-param>
</session-descriptor>
<jsp-descriptor>
<jsp-param>
<param-name>keepgenerated</param-name>
<param-value>true</param-value>
</jsp-param>
</jsp-descriptor>
</weblogic-web-app>
WEB-INF
ディレクトリにコピーします (このファイルは、WebLogic Server のインストール先の BEA_HOME/weblogic81/server/lib
ディレクトリにも格納されます)。web.xml
および weblogic.xml
デプロイメント記述子を含む) を配置し、コンソール拡張に必要な JSP、HTML、タグ ライブラリ記述子、Java クラス、またはイメージ ファイルを所定の場所に追加します。図 1-5 コンソール拡張のサンプル ディレクトリ レイアウト
war
アーカイブとしてパッケージ化します。たとえば、図 1-5 に示したディレクトリ レイアウトを使用して、MyConsoleExtensionWebApp
ディレクトリに移動し、次のコマンドを発行します。
jar cvf MyConsoleExtension.war .
Web アプリケーションは、.war
アーカイブ ファイルを使用せずに展開ディレクトリ形式でデプロイできます。展開形式によるデプロイメントは、コンソール拡張の開発時に便利です。「Administration Console 拡張のデプロイメント」を参照してください。
コンソール拡張が収められた Web アプリケーションを作成したら、その Web アプリケーションを対象 WebLogic Server ドメインの管理サーバにデプロイします。Web アプリケーションのデプロイメントの詳細については、『WebLogic Server アプリケーションのデプロイメント』を参照してください。
ナビゲーション ツリー ノードを定義する JSP を修正した場合、管理サーバに再ログインしてその変更をナビゲーション ツリーに反映させる必要があります。アプリケーションが .ear ファイルまたは .war ファイルとしてデプロイされる場合は、再ログインする前にそのアプリケーションを再デプロイしてください。
ユーザ インタフェースを定義する JSP を変更した場合、Web アプリケーションを再デプロイしてからでないと変更が表示されません。Web アプリケーションを再デプロイするには、Administration Console を使用して、次の手順に従います。
注意 :展開されたアプリケーションとしてデプロイされている場合は、再デプロイする必要はありません。
package weblogic.management.console.extensibility.example;
import javax.servlet.jsp.PageContext;
import weblogic.management.configuration.DomainMBean;
import weblogic.management.console.extensibility.Catalog;
import weblogic.management.console.extensibility.Extension;
import weblogic.management.console.extensibility.NavTreeExtension;
/**
* <p>コンソール拡張のサンプル実装</p>
*/
final public class ExampleConsoleExtension extends Extension implements NavTreeExtension {
// コンストラクタ
/**
* 引数を取らないパブリック コンストラクタが必要
*/
public ExampleConsoleExtension() {}
// =============================================================
// NavTreeExtension 実装
public String getNavExtensionFor(Object key)
{
if (key instanceof DomainMBean) {
System.out.println("==\n== Found instance of DomainMbean\n==");
return "domain_navlink.jsp";
}
return null;
}
// =============================================================
// オプションの拡張メソッド
/**
* <p>この例では特別な初期化作業は必要ない
* このため、このメソッドはコンソールが拡張を見つけたこと
* を知らせるメッセージの送信のみを行う</p>
* <p>このメソッドを使用すると、コンソール拡張で必要な
* 初期化を実行できる</p>
*/
public void initialize()
{
System.out.println("==\n== Example Extension for Domain Initialized!\n==");
}
/**
* <p>ローカライゼーション カタログを参照することによって
* 拡張の名前を返す</p>
*/
public String getName(PageContext context)
{
return Catalog.Factory.getCatalog(context).
getText("example.extension.name");
}
/**
* <p>この拡張の簡単な説明を記述する</p>
*/
public String getDescription(PageContext context)
{
return Catalog.Factory.getCatalog(context).
getText("example.extension.description");
}
}