在本文中,将讨论EJB会话Beans的知识——EJB客户端应用程序所用到的核心业务服务对象,有助于理解简单新颖的EJB会话Bean模型。
什么是会话bean?
会话Bean是Java组件,其既可运行于独立的EJB容器中,也可运行于作为标准Java平台、Java EE应用程序服务器一部分EJB容器中。这些Java组件通常用于建模某一特定用户任务,如输入顾客信息或实现某一维持客户端会话状态的过程。另外,会话Bean还能在多种类型应用程序中实现所需的业务逻辑,如人力资源、订单录入及费用报表等等。
会话Bean有以下两种类型:
无状态:这种类型的Bean不能为客户端程序维持任何会话状态。当对象(bean)被创建(实例),如果重新再创建的话,对象将改变。
有状态:这种类型的Bean维持状态,且对每一客户请求,都对应一个特例Bean。有状态Bean可看作是运行在服务器上的客户端程序扩展。只要对象(bean)被创建(实例),那么对象将无法改变。
何时该用会话Bean?
会话Bean通常用于编写业务逻辑,维持客户端的会话状态,且对那些执行一个或多个业务操作的后台处理或用户任务进行建模。一般可用在以下方面:
人力资源程序中的会话Bean,其创建一个新的雇员,并分配其到某一部门。
费用报表程序中的会话Bean,其创建一张新的费用报表。
订单录入程序中的会话Bean,其为特定顾客创建一个新的订单。
在EJB 3容器中的会话Bean,其用于交易服务负载平衡(无须开发者编写交易支持系统)等。
会话Bean既能用于传统两层或三层架构的“胖”客户端程序,也能用于三层基于Web的应用程序,这些应用程序能被部署在不同的逻辑或物理层,或它们的组合中,下面,将讨论某些最有可能的组合。
图1展示了一种三层会话Bean的典型架构,其“胖”客户端前台程序,带有一些数据输入窗口,主要用于公司客户服务代表、银行出纳员等等;而这些客户端程序则可使用Java Swing技术,以Java Platform、Java SE,或运行于命令行的纯旧式Java对象(POJO)来开发。通常,最终用户都是从桌面运行客户端程序,输入某些数据,并按下某个界面元素,如点击“提交”按钮来引发一个事件。
图2所示 是一种典型的前台应用,通常为运行于台式机或笔记本电脑浏览器中的Web应用程序。目前,各种类型的客户端设备,如PDA、手机、使用Telnet协议的设备,都开始用于运行这类程序。运行于浏览器或移动设备中的Web程序,提供了用户界面(数据输入窗口、提交按钮等等),使用了JSP、JSF、或Java
Servlets等Web技术,而典型的用户动作,如输入搜索条件、在“购物车”中添加特定商品,都会通过这些Web技术,调用运行于某个EJB容器中的会话Bean。一旦会话Bean被调用,它会处理请求,并发回响应到Web程序中,而Web程序进行相应处理后,再发回到客户设备上(浏览器、PDA、Telnet)。
会话Bean有很广泛的应用场景,这里只是简单描述,之后的java学习过程中还会继续深入研究,从实践入手。