アプリケーションは、最初に CIM Object Manager に対しクライアントセッションを開きます。WBEM クライアントアプリケーションは、CIM Object Manager にオブジェクト管理サービスを要求します。クライアントと CIM Object Manager は、同じホスト上でも異なるホスト上でも動作します。同じ CIM Object Manager に対して、複数のクライアントから接続できます。
この節では、ネームスペースの基本概念と、次に示すクラスとメソッドの使用方法を説明します。
CIM Object Manager に接続するための CIMClient クラス
クライアント接続を閉じるための close メソッド
アプリケーションを作成する前に、ネームスペースの CIM 概念を理解する必要があります。ネームスペースは、ディレクトリに似た構造を持ち、ほかのネームスペース、クラス、インスタンス、および修飾子のデータ型を含むことができます。ネームスペース内のオブジェクトの名前は固有にする必要があります。オペレーションはすべて、ネームスペース内で行われます。Solaris WBEM Services をインストールすると、次に示す 2 つのネームスペースが作成されます。
root\cimv2 – Solaris WBEM Services がインストールされているシステム上のオブジェクトを表すデフォルトの CIM クラスが含まれます。これは、デフォルトネームスペースです。
CIM Object Manager に接続する場合、アプリケーションはデフォルトのネームスペース (root\cimv2) に接続するか、別のネームスペース (root\security や独自に作成したネームスペースなど) を指定する必要があります。
特定のネームスペースで CIM Object Manager への接続が完了すると、その後の処理はすべてそのネームスペース内で発生します。ネームスペースに接続すると、そのネームスペース内のすべてのクラスやインスタンス (存在する場合) にアクセスできるだけでなく、そのネームスペース内のすべてのネームスペースにもアクセスできます。たとえば、root\cimv2 ネームスペースに child というネームスペースが作成されている場合、root\cimv2 に接続することによって、root\cimv2 ネームスペースと root\cimv2\child ネームスペース内のすべてのクラスやインスタンスにアクセスできます。
アプリケーションは、ネームスペース内で別のネームスペースに接続できます。これは、ディレクトリ内でサブディレクトリに位置を変更するのに似ています。アプリケーションが別のネームスペースに接続すると、その後の処理はすべてその新しいネームスペース内で発生します。たとえば、root\cimv2\child への接続を新たに開くと、このネームスペース内のクラスやインスタンスにはアクセスできますが、親ネームスペース root\cimv2 内のクラスやインスタンスにはアクセスできません。
クライアントアプリケーションは、WBEM のオペレーション (CIM クラスの作成や CIM インスタンスの更新など) を実行する必要があるたびに、CIM Object Manager に接続します。アプリケーションは、CIMClient クラスを使用して CIM Object Manager 上のクライアントのインスタンスを作成します。CIMClient クラスには、次の 3 つの引数を指定できます。
ネームスペース
このクライアント接続のために使用するホスト名とネームスペース名が入っている CIMNameSpace オブジェクトです。デフォルトはローカルホスト上の root\cimv2 です。
ユーザー名
有効な Solaris のユーザーアカウント名。CIM Object Manager は、CIM オブジェクトに対してどのタイプのアクセスを許可するかを決定するために、ユーザーのアクセス権を確認します。デフォルトのユーザーアカウントは guest です。guest アカウントでは、デフォルトで、すべてのネームスペースのすべての CIM オブジェクトへの読み取りアクセス権がユーザーに与えられます。
パスワード
ユーザーアカウントのパスワード。パスワードは、ユーザーの Solaris アカウントとして有効なパスワードにする必要があります。デフォルトのパスワードは guest です。
CIM Object Manager への接続が完了すると、その後の CIMClient オペレーションはすべて指定されたネームスペース内で発生します。
次の例は、CIMClient インタフェースを使用して CIM Object Manager に接続する 2 つの方法を示しています。
例 4–2 では、アプリケーションはすべてデフォルト値を使用しています。つまり、デフォルトのユーザーアカウントとパスワード guest を使用し、ローカルホスト (クライアントアプリケーションが動作しているホスト) のデフォルトのネームスペース (root\cimv2) で動作している CIM Object Manager に接続します。
/* パスワード guest を持つユーザー guest として ローカルホスト上の root\cimv2 ネームスペースに接続 */ cc = new CIMClient();
例 4–3 のアプリケーションは、ローカルホストのデフォルトネームスペース (root\cimv2) で動作している CIM Object Manager に接続し、root アカウントの UserPrincipal オブジェクトを作成します。このオブジェクトは、デフォルトネームスペース内のすべての CIM オブジェクトに対する読み取り/書き込みアクセス権を備えています。
{ ... root としてのホスト。2 つの null 文字列によって初期化される ネームスペースオブジェクトを作成する。2 つの null 文字列は デフォルトのホスト (ローカルホスト) とデフォルトの ネームスペース (root\cimiv2) を表す */ CIMNameSpace cns = new CIMNameSpace("", ""); UserPrincipal up = new UserPrincipal("root"); PasswordCredential pc = new PasswordCredential("root_password"); /* root パスワードを使い、root として ネームスペースに接続する */ CIMClient cc = new CIMClient(cns, up, pc"); ... }
例 4–4 では、アプリケーションはホスト happy 上のネームスペース A に接続します。アプリケーションは、初めにこのネームスペースの文字列名 (A) を含むためにネームスペースのインスタンスを作成します。続いて、CIMClient クラスを使用して CIM Object Manager に接続し、ネームスペースオブジェクト、ユーザー名、およびホスト名を渡します。
{ ... /* ホスト happy 上のA (ネームスペース名) に よって初期化されるネームスペースオブジェクトを作成する */ CIMNameSpace cns = new CIMNameSpace("happy", "A"); UserPrincipal up = new UserPrincipal("Mary"); PasswordCredential pc = new PasswordCredential("marys_password"); // このネームスペースにユーザー Mary として接続 cc = new CIMClient(cns, "Mary", "marys_password"); ... }
ユーザーの役割を認証するには、SolarisUserPrincipal と SolarisPasswordCredential クラスを使用する必要があります。次のコード例では、Mary の役割を Admin として認証します。
{ ... CIMNameSpace cns = new CIMNameSpace("happy", "A"); SolarisUserPrincipal sup = new SolarisUserPrincipal("Mary", "Admin"); SolarisPasswordCredential spc = new SolarisPasswordCredential("marys_password", "admins_password"); CIMClient cc = new CIMClient(cns, sup, spc);
アプリケーションは、現在のクライアントセッションの終了時にセッションを閉じる必要があります。現在のクライアントセッションを閉じてこのセッションによって使用されているリソースをすべて解放するには、close メソッドを使用します。次に、クライアント接続を閉じるコード例を示します。インスタンス変数 cc は、このクライアント接続をしたインスタンスを表します。
cc.close();