事件源是使用 Java 2 Platform, Standard Edition(J2SE)或 Java 2 Platform, Enterprise Edition(J2EE)以 Java 编程语言实现的。事件源必须提交符合公共基本事件模型的有效事件。每个事件表示为一个 Java 对象。
发射器和发射器工厂
事件源不是与事件服务器直接交互的;而是与一个称为发射器的对象(com.ibm.events.emitter.Emitter 接口的一个实施)交互。发射器是一个提供事件发送方法的本地对象。
通常发射器处理事件传输的详细信息;事件源的开发者不必关心事件服务器的位置、过滤器设置或底层传输机制。这些详细信息由
发射器工厂管理,它是由管理员配置并在 Java 命名和目录接口(JNDI)名称空间中绑定的对象。发射器工厂是 com.ibm.events.emitter.EmitterFactory
的实例并且用于创建发射器对象。它还定义自己创建的发射器的行为;它包括下列各项的设置:
- 首选事务方式。此设置指定了发射器是否尝试发送新事务或当前事务中的每个事件。事件源可以更改特定发射器或事件提交的此设置,但概要文件指定了缺省值。(此设置仅在 J2EE 容器中有效;J2SE 平台不提供事务控制。)
- 首选同步方式。此设置指定了使用同步传输还是异步传输发送事件。同步传输表示
sendEvent() 方法在事件处理完毕之前,不会将控制返回给调用者;异步传输表示提交事件后,此方
法会将控制立即返回给调用者,并且调用者没有有关事件处理的更多信息。事件源可以更改发射器或事件 提交的此设置,但概要文件指定了缺省值。
- 要使用的传输概要文件。传输概要文件是一个配置对象,它定义了将事件发送到事件服务器的特定传输机制。发射器工厂概要文件可以指定两个传输概要文件,一个用于同步传输,而另一个则用于异步传输。事件源无法更改发射器使用的传输概要文件。
- 用于发射器的过滤器配置。过滤器配置定义了过滤提交给发射器的事件所使用的过滤插件。Common Event Infrastructure
包括缺省过滤器插件,但如果想要使用另一过滤引擎,也可以实现您自己的过滤器插件。
管理员可以创建多个发射器工厂概要文件,它们各自定义了一个不同的发射器配置。事件源使用与现有发射器工厂概要文件关联的发射器工厂获取发射器;因此,由一个特定发射器工厂创建的所有发射器具有相同的缺省行为。有关更多信息,请参阅获取发射器。
注: 如果事件源正在运行并且已经启用了 Java 2
安全性,同时您想要生成您自己的全局唯一标识(GUID),则必须修改策略文件以便能够进行正确的处理。添加下列各项:
permission java.io.FilePermission "${java.io.tmpdir}${/}guid.lock",
"read, write, delete";
permission java.net.SocketPermission "*", "resolve";