使用WebSphere Application Server开发高性能J2EE线程

引言

IBM WebSphere Application Server 软件提供了以下两种机制,以支持 J2EE 应用程序开发人员在 Servlet 和 EJB 组件中安全地使用线程:

异步 Bean

Commonj Timer and WorkManager for Application Servers 1.1 规范。

两种编程模式都允许您创建池线程和守护程序线程,以便运行 J2EE 业务逻辑。

在两种编程模式中,线程可以由不同的应用程序重用。当应用程序逻辑开始和终止时,这可以通过应用和删除线程内外的 J2EE 上下文信息来完成。因此,单个线程池可以由多个应用程序使用。每次使用线程时,其标识都会更改。

每次重用线程时,都必须更改线程的上下文,对于可能很少在这些线程执行活动的应用程序,开销会特别大。在这些情况下,需要一个组件范围的线程池,并在每个线程上具有固定的 J2EE 上下文。这可以通过使用 Asynchronous Beans EventSource 接口来完成。

本文介绍如何使用 Asynchronous Beans EventSource 构造线程工厂,文中还包括一个称为并发适配器 (Concurrent Adapter) 的可下载示例,它可以与第三方线程池实现一起使用,以创建能够在 WebSphere Application Server 上工作的快速线程池。

全局线程池

WebSphere Application Server 提供了高性能和高伸缩性的线程池实现。异步 Bean 和 Commonj 的 WorkManager 对所有池线程都使用此线程池。

由于 WorkManager 实例可用于全局命名空间,所以它们可以在多个应用程序之间共享,因此需要 J2EE 上下文切换。为完成此任务,WorkManager 在提交工作时会获取线程上 J2EE 上下文的快照。产生的对象将成为 WorkWithExecutionContext (WWEC) 对象(图 1)。

图 1. WorkWithExecutionContext

如果将WorkManager 用作全局线程池(图 2),则每次向线程分配工作时,提交给线程池的每项工作都将具有应用于线程(或从线程中删除)的应用程序上下文:

将工作提交给 WorkManager 线程池(蓝框)

获取 J2EE 应用程序上下文的快照,并将其作为 WWEC 对象与该工作存储在一起。

将 WWEC 添加到池的输入队列。

工作线程从输入队列提取一个 WWEC,并运行它。

获取工作线程上当前 J2EE 应用程序上下文的快照,以便在工作完成之后进行恢复。

将与 WWEC 一起存储的 J2EE 上下文应用到线程。

运行工作。

时间: 2024-10-30 07:24:50

使用WebSphere Application Server开发高性能J2EE线程的相关文章

在IBM WebSphere Application Server上部署J2EE应用程序

本文将介绍http://www.aliyun.com/zixun/aggregation/7155.html">开发人员如何利用此框架将他们在 IBM® WebSphere® Application Server 上部署的 J2EE 应用程序与这些 C++ 库相集成. IBM® WebSphere® Application Server 是一个兼容 Java® EE 6 的.健壮且高度可用的中间件环境,它提供了一个平台来托管和管理各种不同的企业应用程序.一些用户可能遇到过这样的场景,他们需

Web网站从Domino迁移到WebSphere Application Server上的优势

本文将分析 Web 网站从 Domino 迁移到 WebSphere Application Server 上的优势,结合一个示例展现整个迁移. IBM Lotus Domino 是功能强大的企业级协作服务器平台,用于电子邮件.日程安排和协作应用.它提供的服务包括邮件服务器,Notes/Domino 应用程序服务器,数据库服务器,目录服务器,以及 Web 服务器等.当 Domino 提供 Web 服务器功能时,它能够将 Notes/Domino 应用程序中的设计元素和文档数据转换成 HTML 代

了解用于大型缓存实现的WebSphere Application Server选项

引言 在不久前我撰写的一篇评论专栏文章中,提供了一些建议,提醒大家,除非应用程序需要大型缓存或能够利用 64 位算法,否则需要谨慎对待过渡到 64 位 JVM 的方案.到目前为止,我曾工作过的一些公司事实上都在尝试管理具有大型缓存的应用程序,因此都考虑了此建议.他们现在都计划从 32 位 JVM 过渡到 64 位 JVM. 我之前没有提到的是,至少有一个可用于处理大型缓存的 32 位选项:IBM WebSphere Extended Deployment 的 ObjectGrid 组件(也称为

在WebSphere Application Server V6.1应用程序中跟踪死锁

学习如何使用 IBM WebSphere Application Server V6.1 中的线程转储工具了解您的系统环境,检查是否发生死锁以及提取信息来帮助避免或解决自己应用程序的死锁情况. 引言 当两个或多个线程彼此形成循环依赖关系时,就出现了死锁.例如,如果线程 A 处于等待线程 B 的等待状态,而同时线程 B 处于等待线程 A 的等待状态,则出现了死锁.一旦形成此情况,线程 A 和线程 B 都不能有任何进展,因为这两个线程现在都无限期地挂起了.为什么会有人创建这种系统?当然,您并不会有意

为WebSphere Application Server Community Edition开发富Internet应用程序

本文配套源码 引言 Ajax(异步JavaScript和XML)术语用于表示一组支持创建富Internet应用程序 (Rich Internet Application) 的技术.通过使用这些技术,可以创建响应能力强且具有与桌面应用程序类似的丰富用户界面的Web应用程序.这些技术允许在后台以异步方式检索数据,而不会影响所显示的页面,而且可以仅请求数据,而不用请求整个HTML页面.可以使用现在的浏览器提供的XmlHttpRequest或等效对象进行此异步后台通信. IBM WebSphere Ap

将JNDI用于WebSphere Application Server J2EE瘦客户端应用程序

引言 命名服务管理一组命名空间,解析数据对象的名称绑定问题.Java命名和目录接口(Java Namingand Directory Interface,JNDI) 是一组 API,它提供对命名和目录服务的访问.许多 Java 应用程序使用 JNDI 来定位资源,比如数据源和在 Java 2 企业版(Java 2 Enterprise Edition, J2EE)中注册的企业JavaBeans(Enterprise JavaBeans,EJB). IBM Java 瘦客户端应用程序提供了一种轻量

为什么WebSphere Application Server Version 8.5.5非常适合开发人员

WebSphere Application Server Version 8.5.5 中的 Liberty Profile 仍然拥有许多优秀的特征,这些特征时的使用它进行开发变得很有趣(是的,非常有趣!),目前,通过额外的编程模型,它能够支持更 丰富的应用程序.您也可以编写自己的特性来扩展服务器功能!   Liberty 配置非常简单.每个特性都包含一些有用的默认值, 所以您几乎不需要在 server.xml 中添加任何内容.您可以将服务器的所有配置放在这个文件中,或者使用 include 将它

使用IBM WebSphere Application Server中Eclipse插件简化开发

本文将介绍如何使用 http://www.aliyun.com/zixun/aggregation/13387.html">WebSphere Application Server Developer Tools for Eclipse 插件简化对数据访问应用程序的开发,以便将应用程序发布在轻型应用程序服务 Liberty 配置文件环境中.本文包含一个基于 JPA 的示例数据访问应用程序,用于演示 Liberty 配置文件的动态功能. Liberty 配置文件是 IBM WebSphere

WebSphere Application Server Web 2.0 功能部件包入门

引言 WebSphere Application Server 的 Web 2.0 功能部件包(WebSphere Application Server Web 2.0 Feature Pack,下面简称 WAS-WEB2FEP)是 WebSphere 应用服务器专门对 Web 2.0 功能提供的可选择安装的增强包,使在 WebSphere Application Server 上运行的 Web 应用程序更易于使用. 此功能包通过将外部的 Web Service.内部的 SOA 服务以及 J2E