EJB2.1学习系列一:初识EJB
为何学习EJB2.X
从接触java(2006年)这门语言起,就只有一种言论,“EJB太笨重”,轻量级的Spring更是现下最好的解决方案。所以工作后从来没有碰过EJB的任何东西,但是我也不想人人亦云,你说都没有接触,学习,深入了解过一种东西,而听信别人说它不好,这是对自己很不负责的表现。哪怕有一天,我真的也发表说EJB哪里不好的言论,也是经过了自己一番努力学习了解后,有理有据地分析的结论。所以,想反驳一个东西,得先了解它,我觉得有必要学习下EJB的时候来了。也不从最新的EJB3.X学起,就从大家都反感的之前版本学起。然后再看一下Rod Johnson大神的作品<<expert one-on-one j2ee development without ejb>>,看他是怎么抛弃EJB,又怎么构造自己的架构设计,即Spring前身。
EJB初起认识
EJB设计架构有如下期望目标:
- Ejb是用java语言构建面向对象的,分布式的应用程序的标准组件
- Ejb必需很好支持开发,部署,和web services使用
- Ejb使开发应用程序比较简单,应用程序开发者不用关注底层事务状态管理,多线程,连接池,或更复杂的底层api
- Ejb必需遵守java语言的“一次编写,到处运行”的理念,一个ejb程序能只开发一次,然后部署到不同的平台上而不用多次修改或编译代码
- Ejb架构重点关注的是应用开发,部署,和运行时期这几个方面
- Ejb架构应该定义各产商应该遵守的开发,部署规则约定
- Ejb架构将使开发应用程序通过使用不同产商的组件组合
- Ejb设计架构应该遵守CORBA协议
从上面的列表可以看出,EJB的目标是针对企业级开发环境下,一套能简化开发流程,让我们只关注业务,而封装底层复杂的技术体系。
EJB架构中的各类角色
Ejb架构定义了六种不同的角色概念:
- 企业bean提供者。此角色的输出一般是ejb-jar文件面里包含了多个企业beans
- 应用集成者。它们所做的是把
- 部署者。它们把"企业bean提供者"或"应用集成者"提供的一个或多个ejb-jar文件部署在特定的运行环境中(EJB容器或服务器)
- EJB服务器提供者。它必需在分布式事务管理,分布式对象和更底层系统级服务了解,所以一个典型的EJB服务器产商会是操作系统提供商,中间件开发商,或数据库产商
- EJB容器提供商。它是企业级beans的运行时环境。容器厂商必需隔离企业级beans的规范和特定厂商的容器实现,它们的实现应该符合Ejb规范合约。
- 系统管理员。职责是监控ejb运行时的实时情况,并根据ejb容器厂商的配置说明进行配置和网络配置
EJB运行结构图
EJB实体对象种类
- 会话bean(session object)
- 实体bean(entity object)
- 消息驱动bean(message-drive object)