Solaris Bandwidth Manager 1.6 の開発

第 2 章 Java インタフェースの使用

Solaris Bandwidth Manager の Java インタフェースは、Java Dynamic Management Kit フレームワークにもとづく管理 bean (m-bean) セットとして実装されます。


注 -

Solaris Bandwidth Manager 1.6 には、Solaris Bandwidth Manager アプリケーションのみを開発するための、Java Dynamic Management Kit のランタイムバージョンの使用権が含まれています。


Solaris Bandwidth Manager には、以下の要素に対してプログラミングインタフェースを提供する Java 管理 bean (m-bean) が含まれます。

各 Java API に対するアクセスは、次のどちらかの方法で行えます。

この章では、Java API をアクセスするこれらの方法の例と、各 API の内容の概要を示します。個々のメソッドのリファレンス情報については、各 API に付属の Javadoc を参照してください。

独自の m-bean の記述

ポリシーエージェントは、Solaris Bandwidth Manager プラグインによってリモートの .jar ファイルから m-bean を取得できます。Java API をこのように使用することは、アプリケーションがポリシーエージェントに完全に統合され、アプリケーションがポリシーエージェントの動作方法を変更することを意味します。この節では、m-bean の起動時および停止時におけるポリシーエージェントの動作方法の概要と、新しい m-bean がポリシーエージェントと正しく連動するか確認する上で必要な作業の要約を示します。

この節に示されているコード例は、/opt/SUNWconn/ba/html/examples ディレクトリに入っています。

ポリシーエージェントの操作

Solaris Bandwidth Manager のポリシーエージェントは、多数のタスクを自動的に実行します。この節では、これらのタスクについて説明します。

m-bean の初期化と起動

m-bean の初期化と起動を行う場合に、ポリシーエージェントは次のタスクを実行します。

m-bean の停止

m-bean を停止する場合、ポリシーエージェントは次のタスクを実行します。

開発の概要

m-bean を記述する場合、以下の作業を行う必要があります。

クライアントモードの使用

クライアントは、ポリシーエージェントに作用する個別のプロセスとして存在します。たとえば、構成ツール batool はクライアントとして実装されています。

ポリシーエージェントに接続されたアプリケーションは、クライアントモードで動作する場合、書き込み権を得るために接続時にパスワードを指定する必要があります。

まず、必要なクラスをインポートします。


import com.sun.jaw.impl.adaptor.security.AuthInfo;

次に、ポリシーエージェントに接続する時にパスワードを指定します。


.
.
.
AdaptorMO adaptor = new AdaptorClient();
AuthInfo auth = new AuthInfo ("login", "password");
adaptor.connect (auth, host, portnumber, servicename.APT)
.
.
.

ログインとパスワードは、Solaris Bandwidth Manager パッケージがインストールされた時に設定されたものを使用します。これらは、/etc/opt/SUNWconn/ba/agent.properties ファイルに定義されています。

また、検出する c-bean 名とクラス名も指定する必要があります。


.
.
.
ObjectName on = new ObjectName(domain, BeanName);
Vector v =adaptor.getObject (on, null);
if (v == null || v.size() ==0)
   {
   System.err.println("Unable to retrieve the Bandwidth Manager m-bean.");
   System.err.println("Try stopping and restarting the policy agent";
   System,exit(1);
   }
className userDefinedVariable = (className) v.elementAt(0);
.
.
.

Configuration m-bean

Configuration m-bean は、Solaris Bandwidth Manager を構成するためのクラスとメソッドを提供します。提供されている主なメソッドを表 2-1 に示します。

表 2-1 Configuration m-bean のクラスとメソッド

クラス 

メソッド 

説明 

QDynamicConf

addQClassListener()

クラスイベントを受け取るためのリスナーを登録する 

addQFilterListener()

フィルタイベントを受け取るためのリスナーを登録する 

performAddClass()

実行中の構成に指定されたクラスを追加する 

performAddFilterToClass()

指定されたクラスにフィルタを追加する 

performGetService()

指定されたサービスを返す 

performModifyClass()

指定されたクラスの属性を変更する。これが不可能な場合、クラスを削除して作成し直す 

performModifyFilter()

指定されたフィルタの属性を変更する 

performRemoveClass()

実行中の構成から指定されたクラスとその子を削除する 

performRemoveFilterFromClass()

指定されたフィルタを削除する 

removeQClassListener()

クラスイベントのリスナーを削除する 

removeQFilterListener()

フィルタイベントのリスナーを削除する 

setTimeout()

タイムアウトプロパティを設定し、ガベージコレクションスレッドを起動または再起動する 

Configuration m-bean を呼び出すには、次のパラメータが必要です。

m-bean の名前 

QConstants.confMOName

m-bean のクラス名 

com.sun.ba.config.QDynamicConf

c-bean のクラス名 

com.sun.ba.mo.QDynamicConfMO

Directory m-bean

Directory policy m-bean は、ディレクトリ情報に対する変更を監視するクラスとメソッドを提供します。主なクラスとメソッドを表 2-2 に示します。

表 2-2 Directory m-bean のクラスとメソッド

クラス 

メソッド 

説明 

QDirMod

toString()

オペレーションと値を対にした文字列表現を返す 

getOpe()

オペレーション (ADD、MODIFY、または DELETE) を返す 

getAttr()

オペレーションが適用される属性名を返す 

QDirRep

toString()

ディレクトリサーバーから送信された複製データの文字列表現を返す 

getDirOpe()

オペレーション (ADD、MODIFY、MODIFYDN、または DELETE) を返す 

getDN()

エントリの識別名 (DN) を返す 

getQDirMods()

オペレーションが MODIFY の場合、送信された変更についてのベクトルを返す 

getNewDN()

オペレーションが MODIFYDN の場合、送信された新しい識別名 (DN) を返す 

getAttrs()

オペレーションが ADD の場合、送信された属性と値を対にしたリストを返す 

QDirEvent

getTarget()

イベント内で参照される複製された変更を返す 

QDir

addQDirListener()

ディレクトリ関連のイベントを受け取るリスナーを登録する 

removeQDirListener()

ディレクトリ関連のイベントを受け取るリスナーを中止する 

QDirListener

handleQDirEvent()

イベントを返す 

Directory m-bean を呼び出すには、次のパラメータが必要です。

m-bean の名前 

QConstants.dirMOName

m-bean のクラス名 

com.sun.ba.ldap.QDir

c-bean のクラス名 

com.sun.ba.mo.QDirMO

Statistics m-bean

Statistics m-bean には、統計情報を収集するためのメソッドが含まれています。これらのメソッドの一部は、C Statistics API を呼び出すネイティブメソッドを使用して実装されています。主なクラスとメソッドを表 2-3 に示します。

表 2-3 Statistics m-bean のクラスとメソッド

クラス 

メソッド 

説明 

QStatsInterface

addQFlowAccountingListener()

フローアカウンティングイベントのリスナーを登録する 

addQFlowAddedListener()

フロー追加イベントのリスナーを登録する 

addQStatsResetListener()

統計リセットイベントのリスナーを登録する 

performGetClassStats()

指定されたクラスの統計情報を返す 

performGetFlowStats()

指定されたクラスのフロー統計を返す 

removeQFlowAccountingListener()

フローアカウンティングのイベントリスナーを削除する 

removeQFlowAddedListener()

新しいフローイベントのリスナーを削除する 

removeQStatsResetListener()

統計リセットイベントのリスナーを削除する 

QClassStats

getBdrops()

このクラスによってドロップされたバイト数を返す 

getBorrows()

親クラスから借用した帯域幅を使用して送信されたパケット数を返す 

getClassName()

クラスの識別名を返す 

getDrops()

このクラスによってドロップされたパケット数を返す 

getLastSeen()

最後のパケットが送信された時間を返す 

getNumBytes()

このクラスを通して送信されたバイト数を返す 

getNumPackets()

このクラスを通して送信されたパケット数を返す 

QFlow 

getClassName()

このフローが属しているクラスの識別名を返す 

getFirstSeen()

このフローを通して最初のパケットが送信された時間を返す 

getLastSeen()

このフローを通して最後のパケットが送信された時間を返す 

getLocalIP()

ローカル IP アドレスを返す 

getLocalPort()

ローカルポート番号を返す 

getNumBytes()

このフローを通して送信されたバイト数を返す 

getNumPackets()

このフローを通して送信されたパケット数を返す 

getProtocol()

IP プロトコルの値を返す 

getRemoteIP()

リモート IP アドレスを返す 

getRemotePort()

リモートポート番号を返す 

getTosSent()

このフローのサービスタイプ (TOS) を返す。マーク付け (存在する場合) の後の値 

getURL()

このフローに関連付けられた URL を返す (該当しない場合は NULL) 

Statistics m-bean を呼び出すには、次のパラメータが必要です。

m-bean の名前 

QConstants.statsMOName

m-bean のクラス名 

com.sun.ba.stats.QStatsInterface

c-bean のクラス名 

com.sun.ba.mo.QStatsInterfaceMO