模块 java.naming

类 NamingEvent

java.lang.Object
java.util.EventObject
javax.naming.event.NamingEvent
所有已实现的接口:
Serializable

public class NamingEvent extends EventObject
此类表示由命名/目录服务触发的事件。

NamingEvent 的状态包括

  • 事件源:触发此事件的 EventContext
  • 事件类型。
  • 新的绑定:改变后对象的信息。
  • 旧绑定:对象改变前的信息。
  • 变更信息:触发该事件的变更信息;通常是特定于服务提供者或特定于服务的信息。

请注意,事件源始终与监听器注册的相同EventContext instance。此外,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
参见:
  • 字段详细信息

    • 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
      用于指示对象已重命名的命名事件类型。请注意,某些服务可能会为单个逻辑重命名操作触发多个事件。例如,可以通过添加具有新名称的绑定并删除旧绑定来实现重命名操作。

      如果旧名称或新名称超出监听器已注册的范围,NamingEvent 中的旧/新绑定可能为空。

      当名称空间树中的内部节点已重命名时,作为监听范围一部分的最顶层节点应该用于生成重命名事件。支持的程度因供应商而异。例如,服务可能会为已更改的内部节点的所有后代生成重命名通知,而相应的提供者可能无法阻止将这些通知传播给监听。

      此常量值为 2.

      参见:
    • OBJECT_CHANGED

      public static final int OBJECT_CHANGED
      用于指示对象已更改的命名事件类型。更改可能包括对象的属性或对象本身。请注意,某些服务可能会为一次修改触发多个事件。例如,可以通过首先删除旧绑定并添加包含相同名称但对象不同的新绑定来实现修改。

      此常量值为 3.

      参见:
    • changeInfo

      protected Object  changeInfo
      包含有关生成此事件的更改的信息。
    • type

      protected int type
      包含此事件的类型。
      参见:
    • oldBinding

      protected Binding  oldBinding
      包含有关更改前对象的信息。
    • newBinding

      protected Binding  newBinding
      包含有关更改后对象的信息。
  • 构造方法详细信息

    • NamingEvent

      public NamingEvent(EventContext  source, int type, Binding  newBd, Binding  oldBd, Object  changeInfo)
      构造一个 NamingEvent 实例

      newBdoldBd 中的名称将相对于事件源 source 进行解析。对于 OBJECT_ADDED 事件类型,newBd 不能为空。对于 OBJECT_REMOVED 事件类型,oldBd 不能为空。对于 OBJECT_CHANGED 事件类型,newBdoldBd 不得为空。对于 OBJECT_RENAMED 事件类型,如果新绑定或旧绑定超出监听器已注册的范围,则 newBdoldBd 之一可能为空。

      参数:
      source - 触发此事件的非空上下文。
      type - 事件的类型。
      newBd - 更改前可能为空的绑定。见方法说明。
      oldBd - 更改后可能为空绑定。见方法说明。
      changeInfo - 一个可能为 null 的对象,其中包含有关更改的信息。
      参见:
  • 方法详情

    • getType

      public int getType()
      返回此事件的类型。
      返回:
      此事件的类型。
      参见:
    • getEventContext

      public EventContext  getEventContext()
      检索触发此事件的事件源。这将返回与 EventObject.getSource() 相同的对象。

      如果此方法的结果用于访问事件源,例如查找对象或获取其属性,则需要对其进行锁定,因为不保证Context 的实现是线程安全的(而EventContext 是一个Context 的子接口)。有关线程问题的更多信息,请参阅 包装说明

      返回:
      触发此事件的非空上下文。
    • getOldBinding

      public Binding  getOldBinding()
      检索更改前对象的绑定。

      如果对象在相对于源上下文 (getEventContext()) 的更改之前存在,则绑定必须为非空。也就是说,它对于 OBJECT_REMOVEDOBJECT_CHANGED 必须是非空的。对于 OBJECT_RENAMED ,如果重命名之前的对象在监听器已注册兴趣的范围之外,则为空;如果对象在重命名之前在范围内,则它是非空的。

      绑定中的名称将相对于事件源 getEventContext() 进行解析。如果此类信息不可用,Binding.getObject() 返回的对象可能为空。

      返回:
      更改前对象的可能为 null 的绑定。
    • getNewBinding

      public Binding  getNewBinding()
      检索更改后对象的绑定。

      如果对象在相对于源上下文 (getEventContext()) 发生更改后存在,则绑定必须为非空。也就是说,它对于 OBJECT_ADDEDOBJECT_CHANGED 必须是非空的。对于 OBJECT_RENAMED ,如果重命名后的对象在监听器注册兴趣的范围之外,则为空;如果重命名后对象在范围内,则它是非空的。

      绑定中的名称将相对于事件源 getEventContext() 进行解析。如果此类信息不可用,Binding.getObject() 返回的对象可能为空。

      返回:
      更改后对象的可能为 null 的绑定。
    • getChangeInfo

      public Object  getChangeInfo()
      检索此事件的更改信息。更改信息的值是特定于服务的。例如,它可以是标识服务上更改日志中的更改的 ID。
      返回:
      此事件的可能为空的更改信息。
    • dispatch

      public void dispatch(NamingListener  listener)
      对此事件调用适当的监听器方法。此方法的默认实现处理以下事件类型:OBJECT_ADDED, OBJECT_REMOVED, OBJECT_RENAMED, OBJECT_CHANGED

      监听器方法与此方法在同一线程中执行。有关线程问题的更多信息,请参阅 包装说明

      参数:
      listener - 非空监听器。