使用 WebSphere Application Server 开发高性能 J2EE 线程
2009-09-30 00:00:00 来源:WEB开发网图 4. 使用 EventSource 的安全上下文切换
图片看不清楚?请点击这里查看原图(大图)。
同一技术可以应用到任何 POJO(传统 Java™ 对象),后者可以使用 EventSource 进行打包,以便针对单个方法调用切换对象的 J2EE 上下文。EventSources 使用 java.lang.reflect.Proxy 对象将每个对象实例与专用的 J2EE java.lang.reflect.InvocationHandler 打包在一起。使用代理来调用 Java 对象方法时,J2EE 处理程序将自动在注册侦听器时捕获的线程上应用 J2EE 上下文。
当在范围外的线程上执行方法时,此功能特别有用;例如,启动线程池中的线程。
如果没有 EventSource 代理,则新的线程将没有 J2EE 上下文。线程池将实例化新的 java.util.Thread 对象,并调用 start() 方法。
EventSource 使我们能够执行可以插入到 PooledExecutor 或 ThreadPoolExecutor 的 ThreadFactory 实现。创建 ThreadFactory 的 J2EE 组件的 J2EE 上下文将被保留,并在启动新的工作线程之前重新应用到线程。切换上下文的所有开销都一次性应用到线程。
由于 Commonj WorkManager 规范中不存在 EventSource 对象,所以不可能构建线程工厂。仅当使用异步 Bean 时,线程工厂才可使用。
实现线程工厂
在本文中,我们提供了示例线程工厂实现,这些实现支持使用 J2SE 5、J2SE 1.4 的组件范围的自定义线程池(使用 J2SE 5 java.util.concurrent.ThreadPoolExecutor 的向下移植或在 WebSphere 应用程序中使用 dl.util.concurrent.PooledExecutor)。
Tags:使用 WebSphere Application
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接