JMX によるカスタム管理ユーティリティの開発

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

JMX を使用したドメインのコンフィグレーションの管理

以下の節では、JMX を使用して WebLogic Server ドメインのコンフィグレーションを管理する方法について説明します。

WebLogic Server ドメインの変更および変更のアクティブ化のプロセスを理解するには、『ドメインのコンフィグレーションについて』の「コンフィグレーションの変更の管理」を参照してください。

 


MBean 属性の編集 : 主な手順

MBean 属性を編集するには、次の手順に従います。

  1. 編集セッションを開始する
  2. MBean 属性に対するすべての編集は編集セッションのコンテキスト内で行われます。各 WebLogic Server ドメインの内部では、一度に 1 つの編集セッションのみをアクティブにすることができます。ユーザが編集セッションを開始すると、WebLogic Server は他のユーザが保留中のコンフィグレーション MBean 階層にアクセスできないようにロックします。「ロックの管理」を参照してください。

  3. MBean 属性を変更する、新しい MBean を作成する
  4. MBean 属性の変更や新しい MBean の作成を行うと、保留中のコンフィグレーション MBean のメモリ内の階層が更新されます。これらの変更を保存する前に編集セッションを終了すると、保存されていない変更は破棄されます。

  5. 保留中のコンフィグレーション ファイルに変更を保存する
  6. メモリ内の階層に対して十分な変更を行ったら、その変更内容をドメインの保留中のコンフィグレーション ファイルに保存します。保存した変更は、アクティブ化されるか明示的に元に戻されるまで、保留中のコンフィグレーション ファイル内に保持されます。保存した変更をアクティブ化する前に編集セッションを終了した場合は、以降の編集セッションで、本人または他のだれかがその変更をアクティブ化できます。

    アクティブ化する前に繰り返し変更を行って保存することができます。たとえば、サーバを作成して保存できます。その後で、新しいサーバのリスン ポートとリスン アドレスをコンフィグレーションしてその変更を保存できます。このようにコードを編集すると、エラーの修正や検証がしやすくなります。

  7. 保存した変更をアクティブ化する
  8. 変更をアクティブ化すると、WebLogic Server は保存された保留中のコンフィグレーション ファイルをドメイン内のすべてのサーバにコピーします。各サーバは変更を評価して、その変更を使用できるかどうかを示します。使用できる場合、各サーバはアクティブなコンフィグレーション ファイルと、コンフィグレーション MBean のメモリ内の階層を更新します。

  9. サーバの再起動を必要とする変更内容で更新されたサーバ インスタンスがあれば、再起動します。

MBean の編集および編集のアクティブ化の例については、「例 : 管理ポートの変更」を参照してください。

編集セッションを開始する

編集セッションを開始するには、次の手順に従います。

  1. 編集 MBean サーバへの接続を開始します。
  2. 接続は java.management.MBeanServerConnection 型のオブジェクトを返します。

    MBean サーバへのリモート接続の作成」を参照してください。

  3. ConfigurationManagerMBean のオブジェクト名を取得します。
  4. ConfigurationManagerMBean は、編集セッションの開始および停止、コンフィグレーションに対する変更の保存、取り消し、およびアクティブ化を行うためのメソッドを提供します (『WebLogic Server MBean リファレンス』の「ConfigurationManagerMBean」を参照)。

    各ドメインは ConfigurationManagerMBean のインスタンスを 1 つだけ持ち、そのインスタンスは EditServiceMBean ConfigurationManager 属性に格納されます。EditServiceMBean はすべての編集処理のエントリ ポイントです。簡単な固定のオブジェクト名を持ち、編集 MBean サーバ内の他のすべての MBean にアクセスするための属性とオペレーションが含まれています。

    ConfigurationManagerMBean オブジェクト名を取得するには、次のメソッドを使用します。
    MBeanServerConnection.getAttribute(
    ObjectName
    object-name, String attribute)
    各要素の説明は次のとおりです。

    • object-name - リテラル "com.bea:Name=EditService,Type=weblogic.management.mbeanservers.edit
      .EditServiceMBean"
      。これは EditServiceMBean のオブジェクト名です。
    • attribute - リテラル "ConfigurationManager"。これは ConfigurationManagerMBean を含む EditServiceMBean の属性の名前です。
  5. 編集セッションを開始します。
  6. 編集セッションを開始するには、
    ConfigurationManagerMBean startEdit(int waitTime, int timeout) オペレーションを呼び出します。
    各要素の説明は次のとおりです。

    • waitTime - 編集 MBean 階層でロックを確立するために、ConfigurationManagerMBean が待機するミリ秒数を指定する。管理者特権を持たない限り、他の編集が進行中の場合にロックを確立することはできません (「ロックの管理」を参照)。
    • timeout - 編集セッションを完了しなければならないミリ秒数を指定する。編集を保存またはアクティブ化する前に時間切れになると、保存されていない変更はすべて破棄されます。
    • startEdit オペレーションは次のいずれかを返します。

    • 指定した時間内に編集ツリーでロックを確立できない場合は、weblogic.management.mbeanservers.edit.EditTimedOutException を送出する。
    • 編集ツリーを正常にロックした場合は、DomainMBean のオブジェクト名を返す。これが編集 MBean 階層のルートになります。

MBean 属性を変更する、新しい MBean を作成する

既存の MBean の属性値を変更する、新しい MBean を作成する、または MBean を削除するには、次の手順に従います。

  1. 編集ツリーの階層を移動して、編集する MBean のオブジェクト名を取得します。MBean を作成または削除するには、適切なファクトリ メソッドを含む MBean のオブジェクト名を取得します。
  2. MBean 階層内の移動」を参照してください。

  3. MBean 属性の値を変更するには、MBeanServerConnection.setAttribute(object-name, attribute) メソッドを呼び出します。各要素の説明は次のとおりです。
    • object-name - 編集する MBean のオブジェクト名。
    • attribute - javax.management.Attribute オブジェクト。変更する MBean 属性の名前とその新しい値が格納されます。
    • MBean を作成するには、その MBean の作成メソッドを呼び出します。たとえば、ServerMBean のインスタンスを作成するファクトリ メソッドは、DomainMBeancreateServer(String name) です。『WebLogic Server MBean リファレンス』では、各 MBean のファクトリ メソッドの場所が説明されています (「ServerMBean」を参照)。

  4. (省略可能) 複数の手順に分けて編集を行う場合は、ConfigurationManagerMBean validate() オペレーションを呼び出して、各手順の後に変更を検証することを検討してください。
  5. validate メソッドでは、未保存のすべての変更が、MBean 属性間の依存関係に関する要件を満たしているかどうかを検証し、1 つの属性の値が設定されただけでは行うことのできないその他のチェックを実施します。

    検証エラーが見つかった場合、validate() オペレーションは weblogic.management.mbeanservers.edit.ValidationException 型の例外を送出します。「編集処理によって送出される例外の型」を参照してください。

    save() オペレーションも保存前に変更を検証するので、ここでの検証は省略可能です。

保留中のコンフィグレーション ファイルに変更を保存する

ConfigurationManagerMBean save() オペレーションを呼び出して変更を保存します。

保存した変更をアクティブ化する

保存した変更をドメイン内でアクティブ化するには、次の手順に従います。

  1. ConfigurationManagerMBean activate(long timeout) オペレーションを呼び出します。timeout には、オペレーションが完了しなければならないミリ秒数を指定します。
  2. activate オペレーションは ActivationTaskMBean のインスタンスのオブジェクト名を返します。このインスタンスにはアクティブ化リクエストに関する情報が含まれています。「変更の表示と取り消し」を参照してください。

    activate オペレーションが成功するかタイムアウトすると、編集可能な MBean 階層でロックが解放されます。

  3. JMXConnector.close() を呼び出して、MBean サーバへの接続を閉じます。

例 : 管理ポートの変更

コード リスト 5-1 のコード例では、ドメインの Administration Console にアクセスするために使用するコンテキスト パスを変更しています。この動作は DomainMBean ConsoleContextPath 属性で定義されます。

コード例に関する以下の点に留意してください。

編集処理によって送出される例外の型

表 5-1 では、編集処理中に WebLogic Server が送出する可能性があるすべての例外の型について説明します。WebLogic Server がこのような例外を送出すると、MBean サーバは javax.management.MBeanException で例外をラップします (J2SE 5.0 API 仕様の「MBeanException」を参照)。

表 5-1 編集処理によって送出される例外の型
例外の型
送出される場合
EditTimedOutException
編集セッションを開始するリクエストがタイムアウトした場合。
NotEditorException
ロックを取得せずに MBean を編集しようとした場合、または、管理ユーザが現在のロックを取り消して編集セッションを開始する場合。
ValidationException
MBean 属性の値を、誤ったデータ型、許容される範囲外の値、指定された値ではない値、他の属性との依存関係に適合しない値などに設定した場合。

 


変更の表示と取り消し

以下の節では、編集セッション中に行った変更の操作について説明します。

WebLogic Server は javax.management.openmbean.CompositeType 型の Change オブジェクトに変更を記述します。J2SE 5.0 API 仕様の「CompositeType」を参照してください。

JMX を通じて、現在のサーバ セッション中にのみ発生したドメインのコンフィグレーションの変更に関する情報にアクセスできます。WebLogic Server はコンフィグレーション ファイルのアーカイブを保持しますが、JMX を通じてアーカイブされたデータを利用したり、アーカイブのバージョンを比較したりはできません。

保存されていない変更の表示

MBean 属性を変更するたびに、WebLogic Server はその変更に関する情報が含まれる Change オブジェクトを作成します。変更を保存するまでは、これらのオブジェクトに ConfigurationManagerMBean Changes 属性からアクセスできます。『WebLogic Server MBean リファレンス』の「ConfigurationManagerMBean Changes」を参照してください。

編集セッションを終了するときに、保存されていない変更は破棄されます。

保存されていない変更を表示するには、次の手順に従います。

  1. 編集セッションを開始して、少なくとも 1 つの MBean 属性を変更します。
  2. ConfigurationManagerMBean Changes 属性の値を取得して、その出力を Object[] 型の変数に割り当てます。
  3. 配列内のオブジェクトごとに Object.toString() を呼び出して、変更の説明を出力します。
  4. Changejavax.management.openmbean.CompositeType なので、配列内の各項目を CompositeType としてキャストし、変更に対して CompositeType のメソッドを呼び出すこともできます。J2SE 5.0 API 仕様の「CompositeType」を参照してください。

コード リスト 5-2 のコードでは、保存されていない変更を表示するメソッドを作成します。呼び出し側メソッドは編集 MBean サーバとの接続をすでに確立しているものとします。

コード リスト 5-2 保存されていない変更を表示するサンプル メソッド
public void listUnsaved() throws Exception {
   ObjectName cfgMgr = (ObjectName) connection.getAttribute(service,
   "ConfigurationManager");
   Object[] list = (Object[])connection.getAttribute(cfgMgr, "Changes");
   int length = (int) list.length;
   for (int i = 0; i < length; i++) {
      System.out.println("Unsaved change: " + list[i].toString());
   }
}

アクティブ化されていない変更の表示

変更が保存されると、WebLogic Server は保留中のコンフィグレーション ファイルで変更を永続化します。編集セッションを開始したユーザが ConfigurationManagerMBean undoUnactivatedChanges() オペレーション (アクティブ化されていない変更を保留中ファイルから元に戻す) を呼び出さない限り、複数の編集セッションにわたる場合でも、変更は保留中のコンフィグレーション ファイルに保持されます。

ConfigurationManagerMBean UnactivatedChanges 属性には、保存されていない変更と、保存されてまだアクティブ化されていない変更の両方の Change オブジェクトが格納されます (保存されてまだアクティブ化されていない変更のみを格納する属性はありません)。『WebLogic Server MBean リファレンス』の「ConfigurationManagerMBean UnactivatedChanges」を参照してください。

現在の編集セッション中に保存してまだアクティブ化していない変更、または以前の編集セッションで保存されてまだアクティブ化されていない変更を表示するには、次の手順に従います。

  1. 編集セッションを開始して、少なくとも 1 つの MBean 属性を変更します。
  2. ConfigurationManagerMBean UnactivatedChanges 属性の値を取得して、その出力を Object[] 型の変数に割り当てます。
  3. 配列内のオブジェクトごとに Object.toString() を呼び出して、変更の説明を出力します。
  4. Changejavax.management.openmbean.CompositeType なので、配列内の各項目を CompositeType としてキャストし、変更に対して CompositeType のメソッドを呼び出すこともできます。J2SE 5.0 API 仕様の「CompositeType」を参照してください。

コード リスト 5-3 のコードでは、アクティブ化されていない変更を表示するメソッドを作成します。呼び出し側メソッドは編集 MBean サーバとの接続をすでに確立しているものとします。

コード リスト 5-3 アクティブ化されていない変更を表示するサンプル メソッド
public void listUnactivated() throws Exception {
   ObjectName cfgMgr = (ObjectName) connection.getAttribute(service,
   "ConfigurationManager");
   Object[] list = (Object[])connection.getAttribute(cfgMgr,
      "UnactivatedChanges");
   int length = (int) list.length;
   for (int i = 0; i < length; i++) {
      System.out.println("Unactivated changes: " + list[i].toString());
   }
}

現在のアクティブ化タスクにある変更の表示

変更をアクティブ化すると、WebLogic Server は ActivationTaskMBean のインスタンスを作成します。このインスタンスには、アクティブ化される変更ごとに 1 つの Change オブジェクトが格納されます。この ActivationTaskMBean には、次のいずれかからアクセスできます。

現在のアクティブ化タスクにある変更のみを表示するには、次の手順に従います。

  1. 編集セッションを開始します。
  2. activate オペレーションの出力を javax.management.ObjectName 型のインスタンス変数に割り当てます。
  3. ActivationTaskMBean Changes 属性の値を取得して、その出力を Object[] 型の変数に割り当てます。
  4. 配列内のオブジェクトごとに Object.toString() を呼び出して、変更の説明を出力します。
  5. Changejavax.management.openmbean.CompositeType なので、配列内の各項目を CompositeType としてキャストし、変更に対して CompositeType のメソッドを呼び出すこともできます。J2SE 5.0 API 仕様の「CompositeType」を参照してください。

コード リスト 5-4 のコードでは、現在の編集セッションでアクティブ化されたすべての変更を表示するメソッドを作成します。呼び出し側メソッドは編集 MBean サーバとの接続をすでに確立しているものとします。

コード リスト 5-4 現在のアクティブ化タスクにある変更を表示するサンプル メソッド
public void activateAndList() 
   throws Exception {
   ObjectName cfgMgr = (ObjectName) connection.getAttribute(service,
      "ConfigurationManager");
   ObjectName task = (ObjectName) connection.invoke(cfgMgr, "activate",
      new Object[] { new Long(120000) }, new String[] { "java.lang.Long" });
   Object[] changes = (Object[])connection.getAttribute(task, "Changes");
   int i = (int) changes.length;
   for (int i = 0; i< i; i++) {
      System.out.println("Changes activated: " + changes[i].toString());
   }
}

変更の取り消し

ConfigurationManagerMBean には、編集セッション中に行われた変更を取り消すための 2 つのオペレーションがあります。

変更を取り消すには、編集セッションを開始して、ConfigurationManagerMBean undo または undoUnactivatedChanges オペレーションを呼び出します。

次に例を示します。
connection.invoke(cfgMgr, "undo", null, null);

 


変更のアクティブ化の追跡

activate オペレーションを呼び出すときに WebLogic Server が作成する各 ActivationTaskMBean では、変更のリストを保持する他に、変更をアクティブ化したユーザ、アクティブ化タスクのステータス、変更がアクティブ化された時刻が記述されます。

管理サーバは ActivationTaskMBean のインスタンスをメモリ内にのみ保持します。つまり、インスタンスは永続化されず、管理サーバを停止するときに破棄されます。ActivationTaskMBean インスタンスには Change オブジェクトのリスト (各オブジェクトは MBean 属性の 1 つの変更を表す) が含まれているため、メモリを大量に使用します。メモリを節約するため、デフォルトでは、管理サーバはごく最近の ActivationTaskMBean インスタンスしかメモリ内に保持しません。デフォルトを変更するには、ConfigurationManagerMBean CompletedActivationTasksCount 属性の値を増やします。

以下の節では、ActivationTaskMBean のインスタンスの操作について説明します。

現在のアクティブ化タスクのステータスの表示

activate オペレーションを呼び出すと、WebLogic Server はアクティブ化タスクを表現する ActivationTaskMBean インスタンスを返します。

ActivationTaskMBean State 属性は、アクティブ化タスクのステータスを表します。この属性には int 値が格納され、ActivationTaskMBean は各 int 値の定数を定義します。『WebLogic Server MBean リファレンス』の「ActivationTaskMBean」を参照してください。

現在のアクティブ化タスクのステータスを表示するには、次の手順に従います。

  1. 編集セッションを開始して、少なくとも 1 つの MBean 属性を変更します。
  2. ConfigurationManagerMBean activate(long timeout) オペレーションを呼び出して、その出力を ActivationTaskMBean 型の変数に割り当てます。
  3. ActivationTaskMBean State 属性の値を取得します。

メモリに格納されているすべてのアクティブ化タスクの表示

activate オペレーションが返す ActivationTaskMBean は 1 つのアクティブ化タスクのみを表します。管理サーバは、ユーザがパージするまでこの ActivationTaskMBean をメモリ内に保持します (「完了したアクティブ化タスクのメモリからのパージ」を参照)。パージしないと、アクティブ化タスクの数は ConfigurationManagerMBean CompletedActivationTasksCount 属性の値を超えます。

現在メモリに格納されているすべての ActivationTaskMBean インスタンスにアクセスするには、次の手順に従います (コード リスト 5-5 を参照)。

  1. 編集 MBean サーバに接続します (編集セッションを開始する必要はありません)。
  2. ConfigurationManagerMBean CompletedActivationTasks 属性の値を取得して、その出力を Object[] 型の変数に割り当てます。
  3. (省略可能) 配列内のオブジェクトごとに、ActivationTaskMBean の属性 (UserState など) の値を取得して出力します。
  4. 『WebLogic Server MBean リファレンス』の「ActivationTaskMBean」を参照してください。

  5. (省略可能) 配列内のオブジェクトごとに、Changes 属性の値を取得します。Object.toString() を呼び出して、Change オブジェクトの値を出力します。
  6. コード リスト 5-5 メモリ内のすべてのアクティブ化タスクを表示するサンプル メソッド
    public void listActivated() throws Exception {
       ObjectName cfgMgr = (ObjectName) connection.getAttribute(service,
       "ConfigurationManager");
       ObjectName[] list = (ObjectName[])connection.getAttribute(cfgMgr,
          "CompletedActivationTasks");
       System.out.println("Listing completed activation tasks.");
       int length = (int) list.length;
       for (int i = 0; i < length; i++) {
          System.out.println("Activation task " + i);
          System.out.println("User who started activation: " +
             connection.getAttribute(list[i], "User"));
          System.out.println("Task state: " + connection.getAttribute(list[i],
             "State"));
          System.out.println("Start time: " + connection.getAttribute(list[i],
             "StartTime"));
          Object[] changes = (Object[])connection.getAttribute(list[i], "Changes");
          int l = (int) changes.length;
          for (int y = 0; y < l; y++) {
             System.out.println("Changes activated: " + changes[y].toString());
          }
       }
    }

完了したアクティブ化タスクのメモリからのパージ

ActivationTaskMBean インスタンスには Change オブジェクトのリスト (各オブジェクトは MBean 属性の 1 つの変更を表す) が含まれているため、メモリを大量に使用します。

管理サーバでメモリ不足になった場合は、完了したアクティブ化タスクをメモリからパージできます。その後で ConfigurationManagerMBean CompletedActivationTasksCount 属性の値を減らします。

完了したアクティブ化タスクをメモリからパージするには、編集 MBean サーバに接続して、ConfigurationManagerMBean purgeCompletedActivationTasks オペレーションを呼び出します。

次に例を示します。
connection.invoke(cfgMgr, "purgeCompletedActivationTasks", null, null);

 


ロックの管理

変更によって保留中のコンフィグレーション MBean 階層が矛盾した状態にならないように、一度に 1 人のユーザだけが MBean を編集できます。ユーザが ConfigurationManagerMBean startEdit オペレーションを呼び出すと、ConfigurationManagerMBean は他のユーザが編集セッションを開始できないように (ロック) します。

以下のアクションによってロックが解除されます。

ロックが解除されると、保存されていないすべての変更は失われます。

 


ベスト プラクティス : 編集と例外処理の推奨パターン

編集するコードを複数の try-catch ブロックに整理することをお勧めします。そのようにすると、特定の型のエラーを捕捉して適切に対応できます。たとえば、編集が無効な場合に編集セッション全体を破棄するのではなく、その変更を保存して、例外を送出し、無効な変更をアクティブ化せずに終了することができます。

JMX エージェントはすべての例外を javax.management.MBeanException 型の汎用的な例外でラップします。JMX クライアントは MBeanException.getTargetException() を使用して、ラップされた例外のラップを解除することができます。

以下のような構成を利用することを検討してください (コード リスト 5-6 の擬似コードを参照)。

 


暗号化された値の設定と取得

権限のないアクセスからパスワードなどの重要なデータを保護するために、WebLogic Server コンフィグレーション MBean のいくつかの属性は暗号化されます。そうした属性の値はドメインの config.xml ファイルに暗号化された文字列として保持され、メモリ内の値は暗号化されたバイト配列として表されます。暗号化されている属性は、名前が Encrypted で終わります。たとえば ServerMBean では、IIOP プロトコルを介したアクセスの保護に使用されるパスワードが DefaultIIOPPasswordEncrypted という名前の属性としてエクスポーズされます。下位互換性をサポートし、リモートの JMX クライアントが WebLogic Server MBean のパスワードを設定できるようにするため、暗号化される各属性では、値を暗号化して設定するための、安全性がやや低い手段を提供しています。

以下の節では、暗号化された属性の扱い方について説明します。

暗号化された属性の値の設定 (推奨方法)

この方法を使用するには、次の手順に従います (コード リスト 5-7 を参照)。

  1. MBean 属性をホストしている同じ WebLogic Server JVM で、バイト配列に値を書き込みます。
  2. バイト配列を weblogic.management.EncryptionHelper.encrypt( byte[]) メソッドに渡し、その戻り値を MBeanServerConnection.setAttribute メソッドに渡します。
  3. 暗号化された配列を変数には割り当てないでください。変数に割り当てると、ガベージ コレクションが行われてメモリが再割り当てされるまで、暗号化されていないバイト配列がメモリ内に保持されます。

  4. weblogic.management.EncryptionHelper.clear() メソッドを使用して、元のバイト配列を消去します。
  5. コード リスト 5-7 例 : 暗号化された属性の値の設定 (推奨方法)
    public void editDefaultIIOPPassword(ObjectName cfgRoot) throws Exception {
       // DomainMBean から ServerMBean を取得する
       ObjectName server = (ObjectName) connection.invoke(cfgRoot,
          "lookupServer", new Object[] { "myserver" },
       new String[] { "java.lang.String" });
       // 標準入力から新しいパスワードを取得して、バイト配列に割り当てる
       System.out.println("Enter new password and press enter: ");
       byte userinput[] = new byte[10];
       System.in.read(userinput);
       // バイト配列を暗号化し、暗号化された属性値として
       // 設定する
       Attribute newpassword = new Attribute("DefaultIIOPPasswordEncrypted",
          weblogic.management.EncryptionHelper.encrypt(userinput));
       connection.setAttribute(server, newpassword);
       System.out.println("New password is set to: " +
          connection.getAttribute(server, "DefaultIIOPPasswordEncrypted"));
       // バイト配列を消去する
       weblogic.management.EncryptionHelper.clear(userinput);
       }

暗号化された属性の値の設定 (互換性のある方法)

9.0 より前では、JMX クライアントは暗号化された値を設定するための別の方法を使用していました。JMX クライアントはこの互換性のある方法を引き続き使用できます。また、リモート JMX クライアントから暗号化された値を設定する場合は、この方法のみを使用できます。互換性のある方法では、暗号化されていないパスワードを格納する String を作成するので、安全性が低くなります。WebLogic Server が String を暗号化されたバイト配列に変換しても、ガベージ コレクションが行われてメモリが再割り当てされるまで、String はメモリ内に残ります。

互換性のある方法を使用するには、次の手順に従います。

  1. 値を String に書き込みます。
  2. String をパラメータとして MBeanServerConnection.setAttribute メソッドに渡します。ただし、暗号化された属性の値を設定する代わりに、対応する暗号化されていない属性の値を設定します。
  3. WebLogic Server は String を暗号化されたバイト配列に変換し、それを CustomIdentityKeyStorePassPhraseEncrypted として設定します (CustomIdentityKeyStorePassPhrase の値は設定しません)。

    たとえば、リモート JMX クライアントから CustomIdentityKeyStorePassPhraseEncrypted を設定するには、CustomIdentityKeyStorePassPhrase という属性に対して MBeanServerConnection.setAttribute を呼び出します。

次に例を示します。

public void editDefaultIIOPPassword(ObjectName cfgRoot, String password)
    throws Exception {
    // Get the ServerMBean from the DomainMBean
    ObjectName server = (ObjectName) connection.invoke(cfgRoot,
       "lookupServer",
        new Object[]{"myserver"},new String[]{"java.lang.String"});
    Attribute newpassword = new Attribute("DefaultIIOPPassword",
       "mypassword");
    connection.setAttribute(server, newpassword);
}

暗号化された値のバックアップ

パスワードのバックアップ コピーを作成するには、MBean の暗号化された値のゲッター メソッドを使用して、暗号化されたバイト配列を取得します。次に、バイト配列の値をファイルに書き込みます。WebLogic Server では、暗号化されている値を復号化する API または他のユーティリティは提供していません。

パスワードの値を回復する必要がある場合は、保存した値をバイト配列に読み込んで、それをパラメータとして MBeanServerConnection.setAttribute メソッドに渡すことができます (「暗号化された属性の値の設定 (推奨方法)」を参照)。

注意 : WebLogic Server ドメインでは独自の暗号化アルゴリズムを使用しているため、パスワードの暗号化されていない値がすべてのドメインで同じ場合でも、ドメインごとに別々にパスワードをバックアップして回復する必要があります。
注意 : 各ドメインで暗号化された同じパスワードをバックアップする代わりに、MBean の対応する暗号化されていない値のゲッター メソッドを使用できます。このゲッターはパスワードを復号化して String にコピーします。ガベージ コレクションが行われてメモリが再割り当てされるまで、String はメモリから消去されません。

  ページの先頭       前  次