javax.naming.event

接口
java.lang.Object
  继承者 java.util.EventObject
      继承者 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
          包含此事件的类型。
 
从类 java.util.EventObject 继承的字段
source
 
构造方法摘要
NamingEvent(EventContext source, int type, Binding newBd, Binding oldBd, Object changeInfo)
          构造一个 NamingEvent 的实例。
 
方法摘要
 void dispatch(NamingListener listener)
          对此事件调用适当的侦听器方法。
 Object getChangeInfo()
          检索此事件的更改信息。
 EventContext getEventContext()
          检索触发此事件的事件源。
 Binding getNewBinding()
          检索更改后对象的绑定。
 Binding getOldBinding()
          检索更改前对象的绑定。
 int getType()
          返回此事件的类型。
 
从类 java.util.EventObject 继承的方法
getSource, toString
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

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 中的新/旧绑定为 null。

重命名名称空间树中的内部节点后,应该使用作为侦听器范围一部分的顶层节点生成重命名事件。对这一点的支持程度是特定于提供者的。例如,服务可能为所有已更改内部节点的子代都生成重命名通知,相应的提供者可能无法阻止将这些通知传播到侦听器。

此常量的值为 2

另请参见:
常量字段值

OBJECT_CHANGED

public static final int OBJECT_CHANGED
指示已经更改了某个对象的命名事件类型。更改可能包括对象的属性,也可能包括对象本身。注意,有些服务可能为单个修改触发多个事件。例如,修改可能通过首先移除旧绑定,然后添加包含相同名称但不同对象的新绑定来实现。

此常量的值为 3

另请参见:
常量字段值

changeInfo

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


type

protected int type
包含此事件的类型。

另请参见:
OBJECT_ADDED, OBJECT_REMOVED, OBJECT_RENAMED, OBJECT_CHANGED

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 不得为 null。对于 OBJECT_REMOVED 事件类型,oldBd 不得为 null。对于 OBJECT_CHANGED 事件类型,newBdoldBd 不得为 null。对于 OBJECT_RENAMED 事件类型,如果新绑定或旧绑定在已注册侦听器的范围之外,则 newBdoldBd 中的一个可以为 null。

参数:
source - 触发此事件的非 null 上下文。
type - 事件的类型。
newBd - 更改前的绑定(可能为 null)。请参阅方法描述。
oldBd - 更改后的绑定(可能为 null)。请参阅方法描述。
changeInfo - 包含关于更改的信息的对象(可能为 null)。
另请参见:
OBJECT_ADDED, OBJECT_REMOVED, OBJECT_RENAMED, OBJECT_CHANGED
方法详细信息

getType

public int getType()
返回此事件的类型。

返回:
此事件的类型。
另请参见:
OBJECT_ADDED, OBJECT_REMOVED, OBJECT_RENAMED, OBJECT_CHANGED

getEventContext

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

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

返回:
触发此事件的非 null 上下文。

getOldBinding

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

如果对象存在于相对源上下文 (getEventContext()) 进行更改之前,则绑定必须为非 null。即对于 OBJECT_REMOVEDOBJECT_CHANGED 它必须为非 null。对于 OBJECT_RENAMED,如果重命名前对象在注册侦听器关注的范围之外,则它为 null;如果对象在重命名前在该范围之内,则它为非 null。

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

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

getNewBinding

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

如果对象存在于相对源上下文 (getEventContext()) 进行更改之后,则绑定必须为非 null。即对于 OBJECT_ADDEDOBJECT_CHANGED 它必须为非 null。对于 OBJECT_RENAMED,如果重命名后对象在注册侦听器关注的范围之外,则它为 null;如果对象在重命名后在该范围之内,则它为非 null。

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

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

getChangeInfo

public Object getChangeInfo()
检索此事件的更改信息。更改信息的值是特定于服务的。例如,它可以是用于标识服务器上更改日志中所做更改的 ID。

返回:
此事件的更改信息(可能为 null)。

dispatch

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

侦听器方法与此方法在同一个线程中执行。有关线程问题的更多信息,请参阅包描述

参数:
listener - 非 null 侦听器。