WebSphere WebSphere Enterprise Service Bus V6.0.1 操作系统: AIX, HP-UX, Linux, Solaris, Windows

自动完成事件内容

通过设置属性和策略,可以自动完成事件内容。

执行此任务的目的和时间

在某些情况下,您可能希望为创建的所有事件自动设置某些事件属性数据。这是填写不会更改的特定标准值(如应用程序名称)或根据运行时环境(如创建时间或线程信息)提供的信息设置某些属性的方法。还可根据业务规则设置管理事件内容的策略;例如,您可能要求带有特定扩展名的任何事件的严重性设置为特定值。

可通过创建内容处理程序来实现此目的。内容处理程序是一个对象,它根据您要使用的任意策略自动设置每个事件的属性值。只要事件符合公共基本事件规范,Common Event Infrastructure 对内容处理程序修改事件数据的方式没有任何限制。

为确保所有事件源符合相同的策略,您可以创建与内容处理程序关联的事件工厂(使用 EventFactoryFactory 类),然后将创建的事件工厂绑定至 JNDI 名称空间。事件源不会创建自己事件工厂,而是执行 JNDI 查询来访问已经存在的事件工厂(而无需对内容处理程序有任何了解)。如果业务规则以后更改,您可以在一个地方修改内容处理程序。

事件源不需要进行任何操作即可启用内容完成。如果事件工厂与内容处理程序相关联,则它创建的每个事件都会带有该内容处理程序的引用。将事件提交至发射器时,事件将调用内容处理程序的 completeEvent() 方法,将引用传递给自身。这确保了事件源设置完特定于事件的属性后、发射器验证并处理事件之前,对事件应用了正确的策略。
注: 将事件从一个进程传输到另一个进程时,不会传输内容处理程序的引用。这是因为内容完成依赖于发起事件所在的环境,而必要的信息在别处可能无法获得。这一限制不会影响互为本地的应用程序之间的调用(如使用其本地接口对企业 bean 的调用)。

要创建内容处理程序,按这些步骤进行操作:

完成此任务需要执行的步骤

  1. 创建实现 org.eclipse.hyades.logging.events.cbe.ContentHandler 接口的新 Java 类。 此接口定义单个方法 completeEvent(CommonBaseEvent);该参数是要完成其内容的事件。在实现此方法时,可使用 CommonBaseEvent 的 getter 和 setter 方法来根据适用的任何策略处理事件属性数据。
    注: 当事件源使用 JNDI 检索事件工厂时,将返回内容处理程序和事件工厂。因此,内容处理程序必须是可序列化的。

    以下示例是一个简单的内容处理程序,它将自动设置每个事件的扩展名:

    import java.io.Serializable;
    import org.eclipse.hyades.logging.events.cbe.*;
    
    public class BusinessContentHandler 
         implements ContentHandler, Serializable {
    
           public void completeEvent(CommonBaseEvent event) 
              throws CompletionException {
                  event.setExtensionName("business");
         }
    }
  2. 将内容处理程序与事件工厂关联起来。 为此,在创建事件工厂时指定内容处理程序:
    EventFactory eventFactory =
         (EventFactory) EventFactoryFactory.createEventFactory(contentHandler);
    返回的事件工厂将与指定的内容处理程序永久关联。

任务主题

使用条款 | 评价此页

Timestamp icon上次更新时间: 3 Mar 2006
http://publib.boulder.ibm.com/infocenter/dmndhelp/v6rxmx/index.jsp?topic=/com.ibm.websphere.wesb.doc.nl1_6.0.1\doc\tcei_admin_contentCompletion.html

(C) Copyright IBM Corporation 2005, 2006. All Rights Reserved.
本信息中心基于 Eclipse 技术。(http://www.eclipse.org)