Module  java.naming
软件包  javax.naming.event

Class NamingEvent

  • All Implemented Interfaces:
    Serializable


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

    NamingEvent的状态由...组成

    • 事件来源: EventContext了这个事件。
    • 事件类型。
    • 新绑定:更改后对象的信息。
    • 旧的绑定:有关变更前对象的信息。
    • 更改信息:有关触发此事件的更改的信息; 通常是服务提供商特定的或服务器特定的信息。

    请注意,事件源始终与侦听器注册的EventContext 实例相同。 此外, NamingEvent中绑定的名称总是与该实例相关。 例如,假设一个监听器进行以下注册:

         NamespaceChangeListener listener = ...;
         src.addNamingListener("x", SUBTREE_SCOPE, listener);
    
    当名为“x / y”的对象随后被删除时,对应的NamingEventevt )必须包含:
         evt.getEventContext() == src
         evt.getOldBinding().getName().equals("x/y")
    
    当多个线程同时访问EventContext时,必须小心。 有关线程问题的更多信息,请参阅package description
    从以下版本开始:
    1.3
    另请参见:
    NamingListenerEventContextSerialized Form
    • 字段详细信息

      • OBJECT_ADDED

        public static final int OBJECT_ADDED
        用于指示已添加新对象的命名事件类型。 该常数的值为0
        另请参见:
        Constant Field Values
      • OBJECT_REMOVED

        public static final int OBJECT_REMOVED
        用于指示对象已被删除的命名事件类型。 该常数的值为1
        另请参见:
        Constant Field Values
      • OBJECT_RENAMED

        public static final int OBJECT_RENAMED
        用于指示对象已被重命名的命名事件类型。 请注意,某些服务可能会触发单个逻辑重命名操作的多个事件。 例如,可以通过使用新名称添加绑定并删除旧的绑定来实现重命名操作。

        如果旧名称或新名称超出了侦听器注册的范围,则NamingEvent的旧/新绑定可能为null。

        当命名空间树中的内部节点已被重命名时,作为监听器范围的一部分的最顶层节点应用于生成重命名事件。 可以支持的程度是提供者特定的。 例如,服务可能会为更改的内部节点的所有后代生成重命名通知,并且相应的提供程序可能无法阻止这些通知传播到侦听器。

        该常数的值为2

        另请参见:
        Constant Field Values
      • OBJECT_CHANGED

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

        该常数的值为3

        另请参见:
        Constant Field Values
      • 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的实例。

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

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

      • getEventContext

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

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

        结果
        触发此事件的非空上下文。
      • getOldBinding

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

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

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

        结果
        在更改前对象可能是空的绑定。
      • getNewBinding

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

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

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

        结果
        更改后可能对象的空绑定。
      • getChangeInfo

        public Object getChangeInfo​()
        检索此事件的更改信息。 更改信息的值是服务特定的。 例如,它可以是标识服务器上更改日志中的更改的ID。
        结果
        这个事件可能是空的更改信息。
      • dispatch

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

        侦听器方法在与此方法相同的线程中执行。 有关线程问题的更多信息,请参阅package description

        参数
        listener - 非 listener的听众。