モジュール java.naming
パッケージ javax.naming.event

クラスNamingEvent

  • すべての実装されたインタフェース:
    Serializable

    public class NamingEvent
    extends EventObject
    このクラスは、ネーム・サービス\/ディレクトリ・サービスでトリガーされたイベントを表します。

    NamingEventの状態構成は次のとおりです。

    • イベント・ソース: このイベントをトリガーしたEventContext
    • イベントのタイプ。
    • 新しいバインディング: 変更後のオブジェクト情報。
    • 古いバインディング: 変更前のオブジェクト情報。
    • 変更情報: このイベントをトリガーした変更についての情報。通常はサービス・プロバイダ特有の情報、またはサーバー特有の情報。

    イベント・ソースは、リスナーが登録した、常に同じEventContext インスタンスとなるので注意してください。 さらに、NamingEventにあるバインディング名は、そのインスタンスと常に関連しています。 たとえば、リスナーが次の登録を行なったとします。

         NamespaceChangeListener listener = ...;
         src.addNamingListener("x", SUBTREE_SCOPE, listener);
    
    そのあとにx/yという名前のオブジェクトが削除された場合、対応するNamingEvent (evt)には次が含まれている必要があります。
         evt.getEventContext() == src
         evt.getOldBinding().getName().equals("x/y")
    
    複数のスレッドが同時に同じEventContextにアクセスしている場合は注意が必要です。 スレッドの問題の詳細は、パッケージの説明を参照してください。
    導入されたバージョン:
    1.3
    関連項目:
    NamingListener, EventContext, 直列化された形式
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      protected Object changeInfo
      このイベントを生成した変更情報を含みます。
      protected Binding newBinding
      変更後のオブジェクト情報を含みます。
      static int OBJECT_ADDED
      新しいオブジェクトが追加されたことを示すネーミング・イベント・タイプ。
      static int OBJECT_CHANGED
      オブジェクトが変更されたことを示すネーミング・イベント・タイプ。
      static int OBJECT_REMOVED
      オブジェクトが削除されたことを示すネーミング・イベント・タイプ。
      static int OBJECT_RENAMED
      オブジェクトの名前が変更になったことを示すネーミング・イベント・タイプ。
      protected Binding oldBinding
      変更前のオブジェクト情報を含みます。
      protected int type
      このイベントのタイプを含みます。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      NamingEvent​(EventContext source, int type, Binding newBd, Binding oldBd, Object changeInfo)
      NamingEventのインスタンスを構築します。
    • フィールドの詳細

      • OBJECT_ADDED

        public static final int OBJECT_ADDED
        新しいオブジェクトが追加されたことを示すネーミング・イベント・タイプ。 この定数の値は0です。
        関連項目:
        定数フィールド値
      • OBJECT_REMOVED

        public static final int OBJECT_REMOVED
        オブジェクトが削除されたことを示すネーミング・イベント・タイプ。 この定数の値は1です。
        関連項目:
        定数フィールド値
      • OBJECT_RENAMED

        public static final int OBJECT_RENAMED
        オブジェクトの名前が変更になったことを示すネーミング・イベント・タイプ。 一部のサービスでは、論理的な名前変更操作1つに対して、複数イベントをトリガーすることがあるので注意してください。 たとえば、新しい名前のバインディングを追加し、古いバインディングを削除することによって、名前変更操作が実装される場合があります。

        古い名前または新しい名前がリスナーの登録した範囲を超えている場合、NamingEventにある旧/新バインディングはnullとなることがあります。

        名前空間ツリーの内部ノードが名前変更された場合は、リスナーの範囲内である最上位ノードを使用して、名前変更イベントを生成する必要があります。 サポート範囲はプロバイダ固有となります。 たとえば、内部ノードを変更すると、名前変更通知がすべての下位ノードに対して生成されます。対応するプロバイダの設定にかかわらず、これらの通知はリスナーに強制的に伝達されます。

        この定数の値は2です。

        関連項目:
        定数フィールド値
      • OBJECT_CHANGED

        public static final int OBJECT_CHANGED
        オブジェクトが変更されたことを示すネーミング・イベント・タイプ。 これには、オブジェクトの属性やオブジェクトそのものの変更もあります。 一部のサービスでは1つの修正に対して複数のイベントをトリガーすることがありますので注意してください。 たとえば、古いバインディングを削除してから、名前が同じでオブジェクトの異なる新しいバインディングを追加すると、修正が実装される場合があります。

        この定数の値は3です。

        関連項目:
        定数フィールド値
      • changeInfo

        protected Object changeInfo
        このイベントを生成した変更情報を含みます。
      • oldBinding

        protected Binding oldBinding
        変更前のオブジェクト情報を含みます。
      • newBinding

        protected Binding newBinding
        変更後のオブジェクト情報を含みます。
    • コンストラクタの詳細

      • NamingEvent

        public NamingEvent​(EventContext source,
                           int type,
                           Binding newBd,
                           Binding oldBd,
                           Object changeInfo)
        NamingEventのインスタンスを構築します。

        newBdおよびoldBdの名前は、イベント・ソースsourceに関連して解決されます。 OBJECT_ADDEDイベント・タイプに対しては、newBdをnullにしないでください。 OBJECT_REMOVEDイベント・タイプに対しては、oldBdをnullにしないでください。 OBJECT_CHANGEDイベント・タイプに対しては、newBdおよびoldBdをnullにしないでください。 OBJECT_RENAMEDイベント・タイプに対しては、リスナーが登録した範囲外に新しいバインディングまたは古いバインディングがある場合、newBdまたはoldBdのいずれかをnullにすることができます。

        パラメータ:
        source - このイベントをトリガーしたnull以外のコンテキスト。
        type - イベントのタイプ。
        newBd - 変更前にnullの可能性があるバインディング。 メソッドの説明を参照。
        oldBd - 変更後にnullの可能性があるバインディング。 メソッドの説明を参照。
        changeInfo - 変更情報を含む、nullの可能性のあるオブジェクト。
        関連項目:
        OBJECT_ADDED, OBJECT_REMOVED, OBJECT_RENAMED, OBJECT_CHANGED
    • メソッドの詳細

      • getEventContext

        public EventContext getEventContext()
        このイベントをトリガーしたイベント・ソースを検出します。 これは、EventObject.getSource()と同じオブジェクトを返します。

        このメソッドの結果を使用してイベント・ソースにアクセスした場合、たとえばオブジェクトを参照したり属性を取得する場合、Contextの実装がスレッド・セーフではない(またEventContextContextのサブインタフェースである)ため、ロックが必要です。 スレッドの問題の詳細は、パッケージの説明を参照してください。

        戻り値:
        このイベントをトリガーしたnull以外のコンテキスト。
      • getOldBinding

        public Binding getOldBinding()
        変更前のオブジェクトのバインディングを取得します。

        変更前に存在したオブジェクトが、転送元のコンテキスト(getEventContext())に関連する場合、バインディングはnull以外である必要があります。 つまり、OBJECT_REMOVEDおよびOBJECT_CHANGEDに対してはnull以外としてください。 OBJECT_RENAMEDについては、名前変更前のオブジェクトが、対象を登録したリスナーの範囲外にある場合はnullとし、オブジェクトが名前変更前の範囲内にある場合はnull以外としてください。

        バインディング内の名前は、イベント・ソースgetEventContext()を基準にして解決されます。 このような情報が使用できない場合は、Binding.getObject()によって返されたオブジェクトがnullであることがあります。

        戻り値:
        変更前のオブジェクトでnullの可能性のあるバインディング。
      • getNewBinding

        public Binding getNewBinding()
        変更後のオブジェクトのバインディングを取得します。

        変更後に存在したオブジェクトが、転送元のコンテキスト(getEventContext())に関連する場合、バインディングはnull以外である必要があります。 つまり、OBJECT_ADDEDおよびOBJECT_CHANGEDに対してはnull以外としてください。 OBJECT_RENAMEDについては、名前変更前のオブジェクトが、リスナーで登録した対象の範囲外にある場合はnullとし、オブジェクトが名前変更後では範囲内にある場合はnull以外としてください。

        バインディング内の名前は、イベント・ソースgetEventContext()を基準にして解決されます。 このような情報が使用できない場合は、Binding.getObject()によって返されたオブジェクトがnullであることがあります。

        戻り値:
        変更後のオブジェクトでnullの可能性のあるバインディング。
      • getChangeInfo

        public Object getChangeInfo()
        このイベントの変更情報を取得します。 変更情報の値はサービス特有となります。 たとえば、値はサーバーの変更ログにある、変更を識別するIDとなります。
        戻り値:
        このイベントの、nullの可能性がある変更情報。
      • dispatch

        public void dispatch​(NamingListener listener)
        このイベントで最適なリスナー・メソッドを呼び出します。 このメソッドのデフォルト実装では、イベント・タイプOBJECT_ADDED、OBJECT_REMOVED、OBJECT_RENAMED、OBJECT_CHANGEDを処理します。

        リスナー・メソッドは、このメソッドと同じスレッドで実行されます。 スレッドの問題の詳細は、「パッケージの説明」を参照してください。

        パラメータ:
        listener - null以外のリスナー。