WebSphere® eXtreme
Scale 插件是一个组件,向可插入组件(包含 ObjectGrid 和 BackingMap)提供了特定类型的功能。WebSphere eXtreme
Scale 提供了若干插入点,以允许应用程序和高速缓存提供程序与各种数据存储和备用客户机 API 集成,从而改善高速缓存的整体性能。该产品随附提供若干缺省预先构建的插件,但您也可以使用应用程序构建定制插件。
所有插件为实现一个或多个 eXtreme Scale 插件接口的具体类。然后,ObjectGrid 会在适当的时候实例化和调用这些类。ObjectGrid 和 BackingMap 均允许注册定制插件。
ObjectGrid 插件
以下插件可用于 ObjectGrid 实例。如果插件仅针对服务器端,那么会在客户机 ObjectGrid 和 BackingMap 实例上移除插件。ObjectGrid 和 BackingMap 实例仅位于服务器上。
- TransactionCallback:TransactionCallback 插件提供事务生命周期事件。如果 TransactionCallback 插件为内置 JPATxCallback (com.ibm.websphere.objectgrid.jpa.JPATxCallback)
类实现,那么插件仅针对服务器端。但是,JPATxCallback 类的子类不仅仅针对服务器端。
- ObjectGridEventListener:ObjectGridEventListener 插件为 ObjectGrid、分片和事务提供了 ObjectGrid 生命周期事件。
- ObjectGridLifecycleListener:ObjectGridLifecycleListener 插件为 ObjectGrid 实例提供了 ObjectGrid 生命周期事件。
ObjectGridLifecycleListener 插件可以用作所有其他 ObjectGrid 插件的可选混合接口。
- ObjectGridPlugin:ObjectGridPlugin 是一个可选混合接口,为所有其他 ObjectGrid 插件提供扩展生命周期管理事件。
- SubjectSource、ObjectGridAuthorization、SubjectValidation:eXtreme Scale提供了若干安全端点以允许定制认证机制与 eXtreme Scale 集成。
(仅适用于服务器端)
公共 ObjectGrid 插件需求
ObjectGrid 使用 JavaBeans 约定实例化和初始化插件实例。所有先前的插件实现具有以下需求:
- 插件类必须为顶级公共类。
- 插件类必须提供一个公共的无参构造方法。
- 插件类必须同时在服务器和客户机的类路径中提供(如果适当)。
- 必须使用 JavaBeans 样式属性方法设置属性。
- 除非特别指定,否则插件会在 ObjectGrid 初始化之前注册,且无法在 ObjectGrid 初始化后进行更改。
BackingMap 插件
以下插件可用于 BackingMap:
- 逐出程序:逐出程序插件是为逐出高速缓存条目和创建定制逐出程序而提供的缺省机制。内置生存时间逐出程序使用基于时间的算法,来决定何时必须逐出 BackingMap 中的条目。某些应用程序可能需要使用其他算法来决定何时需要逐出高速缓存条目。逐出程序插件将专门定制的逐出程序提供给 BackingMap 使用。除了内置生存时间逐出程序,还提供了逐出程序插件。您可以使用提供的定制逐出程序插件,来实现熟知的算法(如“最近最少使用”或“最不常使用”)。应用程序可以插入其中一个提供的逐出程序插件,或可以提供其自己的逐出程序插件。要了解更多信息,请参阅用于逐出高速缓存对象的插件。
ObjectTransformer:ObjectTransformer 插件允许您序列化、反序列化和复制高速缓存中的对象。ObjectTransformer 接口已经由 DataSerializer 插件替代,您可使用这些插件在 WebSphere eXtreme
Scale 中有效存储任意数据,以便现有产品 API 可以有效与数据进行交互。要了解更多信息,请参阅ObjectTransformer 插件。
OptimisticCallback:OptimisticCallback 插件允许您在使用乐观锁定策略时,定制高速缓存对象的版本控制和比较操作。OptimisticCallback 插件已由 ValueDataSerializer.Versionable 接口替代,您可以在将 DataSerializer 插件与 COPY_TO_BYTES 复制方式配合使用时,或在将 @Version 注释与 EntityManager API 配合使用时实现此接口。要了解更多信息,请参阅用于版本控制和比较高速缓存对象的插件。
- MapEventListener:MapEventListener 插件提供回调通知以及对 BackingMap 进行的大量高速缓存状态更改。应用程序可能希望了解 BackingMap 事件,例如,映射条目逐出或预装入完成的 BackingMap。
BackingMap 在 MapEventListener 插件上调用方法以通知应用程序发生了 BackingMap 事件。应用程序可以通过使用 setMapEventListener 方法为 BackingMap 提供一个或多个专门定制的 MapEventListener 插件,来接收各个 BackingMap 事件的通知。应用程序可以通过使用 addMapEventListener 方法或 removeMapEventListener 方法来修改列出的 MapEventListener 对象。要了解更多信息,请参阅MapEventListener 插件。
- BackingMapLifecycleListener:BackingMapLifecycleListener 插件为 BackingMap 实例提供 BackingMap 生命周期事件。
BackingMapLifecycleListener 插件可以用作所有其他 BackingMap 插件的可选混合接口。
- BackingMapPlugin:BackingMapPlugin 是一个可选混合接口,为所有其他 BackingMap 插件提供扩展生命周期管理事件。
- 建立索引:使用 MapIndexplug-in 插件提供的建立索引功能,来对 BackingMap 映射构建一个或多个索引以支持非关键数据访问。
- 装入器:ObjectGrid 映射上的装入器插件用作数据的内存高速缓存,这些数据通常保存在相同系统或某个其他系统上的持久存储器中。(仅服务器端)
例如,可以使用 Java™ 数据库连接 (JDBC) 装入器来将数据移动到 BackingMap 和关系数据库的一个或多个关系表中,以及将数据从其中移出。
不需要将关系数据库用作 BackingMap 的持久存储器。还可以使用装入器以在 BackingMap 和文件之间、BackingMap 和 Hibernate 映射之间、BackingMap 和 Java 2 Platform, Enterprise Edition (JEE) 实体 bean 之间以及 BackingMap 和其他应用程序服务器之间等移动数据。针对使用的每种技术,应用程序必须提供专门定制的装入器插件,来在 BackingMap 和持久存储器之间移动数据。如果未提供装入器,那么 BackingMap 将变成一个简单的内存中高速缓存。
要了解更多信息,请参阅用于与数据库通信的插件。
- MapSerializerPlugin:MapSerializerPlugin 允许您序列化和扩充高速缓存中的 Java 对象和非 Java 数据。它与 DataSerializer 混合接口配合使用,从而为高性能应用程序提供强大、灵活的选项。