无状态Enterprise JavaBeans的观点

在Component-Base和N-Tier潮流下,无状态(stateless)物件扮演着重要的角色。stateless物件是 OO 和Transaction Service两项技术结合的产物。OO 技术强调的是弹性(felxibility)、重用性(reusability)和分散性(distribution),Transaction Service技术强调的是效率(performance)和延展性(scalability)。 Stateless物件是这两项技术结合的重要支柱。

传统的OO技术大多着重于 Stateful 物件,然而在今天的MiddleWare(如EJB和 COM+/MTS)里面,Stateless物件的地位却远远高于Stateful物件。尤其是在EJB的架构里,Stateless有着非常重要的用途。例如Stateless的Session物件不需要长期保存自身的状态值,也不专属于特定的用户(client),所以占用的服务器资源非常之少,也由于不隶属于特定的用户,所以许多EJB物件可以共用少数的Stateless物件。

Stateless物件的特性

就Client而言,在意的是server物件的外在行为,而行为又和物件的状态无关。所以client物件不必在意物件状态的变化,而不是此 种物件真的没有状态。比如说stateless的限制并不意味着stateless的session beans不能拥有属性变量,所以,这些session beans一样会拥有自己的内部状态,然而重要的是,client不会看到这些内部状态。

在Internet时代里,资讯系统的扩展性(scalability)显得无比重要,而高度扩展性的前提是必须有效运用Server的资源,而无状态的物件的资源共用性极大地减少了服务器的负载,因此,在开发N-Tier系统的时候,活用Stateless物件是系统开发人员必须具有的技能之一。

使用Stateless支持交易

当企业资讯系统的Client数目大幅度增加的时候,每个Client能够享有的共用资源(shared resources)自然会更加稀少。面对这个问题,除了投入更多的资源之外,好好协调以避免资源的浪费,达到充分共享,也是重要的解决之道。

其中,数据库是最典型的稀有共享资源,交易是协调这项共享资源的可靠技术,如果加上Stateless物件,交易就会更加具有威力--更有效运用数据库的connection,并能跨越不同的数据库(即分布式交易)。

交易是商业往来或异动的事件(event) 。事件一旦发生,企业资讯系统就会参与进行一连串的作业过程(process),在这个过程中,会导致共享资源(比如数据库的资料)的一连串异动。为了确保在异动过程中,不受到别的交易的干扰,也为了确保异动过程中的例外处理(比如roll back),“交易”就成为用来管理和协调共用资源的工具。

在交易过程中,需要数据库提供服务(即资源),以便能够异动数据库里面的资料,完毕后就把资源释放,供彼得交易使用。在像EJB等系统的交易服务(transaction service)里 ,都必须具备有ACID(atomic,consistency,isolation,duration)四个特性,来做到上述的资源管理功能。

一般来说,必须先取得和数据库的沟通管道(connection) ,才能获得数据库的服务,而数据库的connection又很有限,所以协调connection成为管理数据库资源的重心。让每个client能尽快释放connection成为重要的管理工作。

在交易的进行过程中,会取得所需的数据库连接,一直到交易结束才会释放掉,所以充分运用连接一定要注意两点,一是交易的时间越短越好,交易越短就能越快速地释放被占用的connection。二是交易所需要的connection越少越好,这样就有更多的共享机会了。

在component-based环境中,一个交易通常由一群物件所共同合作,每个物件可能由不同人所设计开发,每个物件也都可能向数据库索取connection。如果一个交易的参与物件越多,而且每个物件占用的connection时间越长,则这个交易就需要足够多的connection才能完成任务。

因此,“让物件迅速释放connection” 是提升数据库资源运用效率的重要策略,stateless物件则是实现这个策略的重要技术。

时间: 2024-08-03 12:04:46

无状态Enterprise JavaBeans的观点的相关文章

Enterprise JavaBeans入门

EJB(Enterprise JavaBeans)可不算什么新概念了,但许多人在听到或者看到这个名词的时候还会眼晕.EJB组件在J2EE规范中自成一层,把应用程序的表示层和后端信息系统(比如数据库或者主框架计算机)捆绑了起来.EJB架构既用到了EJB对象的功能又利用了它们所运行的环境. 为什么出来个EJB 从概念上看,EJB对象封装了业务对象及其概念,让开发人员把精力集中于解决方案的细节之上.从设计的角度看,EJB应该轻便而相互影响地合并起来.这一举措可以令单一的EJB,不论其是否为商务应用程序

J2EE探险者: 用于无状态网络的J2EE技术

在最近几年里,Java 行业的发展呈指数级增长.作为一名企业应用程序开发人员.架构设计师或者技术经理,您可以从许多供应商.最佳实践.规范和组件类型中为您的 Java 技术实现进行选择.J2EE 探险者系列的目的是帮助您从这些选择中找到一条途径,对于任何一种给定的情形,协助您挑选合适的技术. 在本文,也就是第 1 部分中,我们将探讨无状态 J2EE 组件,并评估出最合适的组件来用于您的企业体系结构.说到无状态.请求处理组件,可供选择的 J2EE 技术主要有两种:servlet 或 Enterpri

EJB之无状态会话Bean简单应用-学习与实践

客户通过由EJB容器提供的远程和本地接口进行通信 • 访问控制表是用于保证安全其授权能访问特定功能的用户组或个人表. • 持久性是指对象状态永久地存储在数据存储器中,诸如数据库. • 企业 beans的类型: –实体 (Entity) beans 实体beans支持多个会话和多个客户,可分为: Bean - 管理Bean持久性 Container- 管理容器的持久性 –会话 ( Session) beans 会话beans 执行业务任务时没有存储机制,可分为: 有状态会话(Stateful se

Enterprise JavaBeans组件慨述之二

EJB 编程模型 本文的第二部分说明创建 Enterprise JavaBean 组件所需的 Java 接口和类的作用.除了对 bean 类本身进行编码外,EJB 开发人员还必须为 bean 定义一个本地接口和一个远程接口.这些接口的实现类通常由容器生成,因此部署 EJB 组件是开发人员和 EJB 容器的合作行为.第二部分还区分了 enterprise bean 的两种主要类型,即会话 bean 和实体 bean,并说明了 EJB 容器和 EJB 服务器之间的关系. enterprise bea

深入RESTful无状态原则

前言 在上篇RESTful基础知识中整体的介绍了RESTful架构设计思想的框架,在往后的RESTful主题博文中,我们在这个框架的基础上不断的为其填充更加深入的知识材料.  RESTful基础知识,传送门:http://blog.csdn.net/jmilk/article/details/50452595 无状态原则 Statelessness:无状态原则是RESTful架构设计中一个非常重要的原则,无状态是相对于有状态而言的.在理解什么是无状态的交互请求之前,首先我们需要了解什么是有状态,

HTTP协议是无状态协议,怎么理解

HTTP协议是无状态协议,怎么理解?   Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息.  自己的理解,在asp.net里:每次提交服务器的页面没有任何关系,每次记录在页面的信息下次提交是记不住的,(除了应用本身可能已经存储在全局对象中的所有信息外)在.net里实际就是ViewState,ViewState是asp.net中保存页面信息的基本单位,应用时就是保存在控

如何制作无状态的ASP组件 (转)

如何制作无状态的ASP组件 一般我们在web或其它有关的无状态应用中使用组件时,脚本运行完毕后我们都会丢失组件的所有参照.当然可以简单地将组件的参照保存在会话(session )变量中,但这浪费资源.更聪明的方法是用会话变量或隐式表单标签保存组件的一些信息.当重新制作组件的实例时,试图用保存在会话变量中的信息恢复组件的状态.但两种方法的弊端都在于:从资源的角度来看过于昂贵,甚至恰好难以实现. 很幸运有个好消息.我们都知道可持续性的整个前提是能够将变量恢复到这样的状态,以至于组件知道在上次的例示中

如何制作无状态的ASP组件

2000-08-05· 青苹果电脑工作室·Yesky 一般我们在web或其它有关的无状态应用中使用组件时,脚本运行完毕后我们都会丢失组件的所有参照.当然可以简单地将组件的参照保存在会话(session )变量中,但这浪费资源.更聪明的方法是用会话变量或隐式表单标签保存组件的一些信息.当重新制作组件的实例时,试图用保存在会话变量中的信息恢复组件的状态.但两种方法的弊端都在于:从资源的角度来看过于昂贵,甚至恰好难以实现. 很幸运有个好消息.我们都知道可持续性的整个前提是能够将变量恢复到这样的状态,以

eclipse+JBoss 5+EJB3开发指南(1):编写第一个无状态的SessionBean

本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp 在本文中将编写一个简单的无状态SessionBean.在发布EJB时,一般需要将EJB程序以jar文件的形式 进行发布.这些jar文件将被放在