- 浏览: 167431 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ooo456mmm:
正解~~~
无需安装oracle,配置plsql developer -
tjuking:
帮我解决了一大问题,thx~
vim批量修改文件 解决 非法字符: \65279 问题 -
dou85dou:
where is lz's content?
如何打造Linux下的IDE
J2EE--之EJB的没落与轻量级服务器的崛起
前言:好久一段时间没关注过j2ee了, 昨天恶补了一下。不看不知道,一看吓一跳! J2EE在过去一年发生了如此大的变化:EJB, 那个曾经作为J2EE核心部件的概念,如今似乎已经没落了, 落得人人喊打的地步了!!!继而兴起了一批新的概念:AOP, IoC轻量级服务器,POJO...
真的感慨万千。在2004年还无限风光的EJB, 在2005年便落到这种地步了! 于是让我怀疑: 当前那么急切的紧跟EJB潮流是否值得? AOP又能持续多久? 是否还要紧跟所谓的时尚技术? 以后如何应对新技术潮流的变迁?
本来这个技术圈子没有一个严格的标准,就是一个婆说婆有理,媳说媳有理的事!这个圈子从来没缺少过争吵!J2EE与.net吵, C++ 与JAVA吵, Linux与Windows吵... 感觉真的很乱,让人无所适从!
跑题太远了,还是转入正题吧!
一、EJB为我们提供了什么?
1. 声明性事务管理
避免编写大量的事务管理代码, 通过声明来完成事务性管理
2. 持久性管理
通过使用entity bean 来实现O/R mapping 即对象到关系数据库的影射
3. 安全性管理
开发者可以在EJB的部署描述文件中进行方法级的、基于角色的安全性管理
4. 生命周期管理
它实际上是为了实现EJB的持久性管理和资源管理而衍生出的功能。由于EJB实例对象和的生命周期是由EJB容器负责维护的,所以EJB实例对象的状态通常是不可预期的。于是EJB提供了一组生命周期管理接口, 供用户对EJB的生命周期进行一定的控制管理。
5. 资源管理
在J2EE的缓冲池中,不仅有对象实例池,还有资源管理池。例如:将数据库连接放入连接池中,其主要作用是防止以外情况时,不断的加载造成连接被全部耗尽!
6. 并发访问管理
也就是线程管理。EJB让开发者以编写单线程程序的方式编写业务对象,同时能使这些业务对象运行在多线程环境。
7. 业务对象管理(寻址服务)
借助JNDI为服务对象提供目录服务。EJB的部署描述文件提供了一个从服务名称到实现对象的影射,从而消除了业务接口(EJB组件接口)与实现类之间的耦合。
8. 远程访问
EJB本身设计就是分布式的,它通常是基于RMI来实现。
9. 集群
EJB曾被称为获得J2EE应用最大可伸缩性的不二法门。当然它有着出众的集群能力, 可方便的实现横向、纵向的集群,而不只是简单的应用的拷贝。
二、EJB的缺陷
EJB容器为EJB提供了一个优越而全面的服务环境! 这是它的优点,但也是它被人诟病的缺点: 很少有用到这么全面的服务的业务对象, 但不管用不用到这些服务都要为它埋单!因此在实施成本和性能上会有很大的损耗!
尽管当前的高端商业应用服务器在性能上有很强的表现,但是价格不菲!而开源的应用服务器在性能表现上并不能让人满意!
另外在如下一些方面也存在一些不足
1. 远程调用
EJB极大的简化了远程调用。但是EJB规范混淆了远程和组件模型。它往往会诱使人们采用一种并不适用且昂贵得体系结构。这对设计是有害的。
2. 集群方面
其实,机群的重点不应该在J2EEweb的应用业务对象层,通常专门的业务层集群不是很必要。相比而言,数据访问层,数据库层才是集群的重点!不过像 EJB这种比较笨重的东西需要集群也是可以理解的。^0^
3. 侵入性
为了使用EJB的服务业务对象必须实现EJB的特定接口!从而影响了原业务对象的固有形式!(其实在IoC中这个问题也没有真的完全解决。)
三、用什么方法代替EJB?
从EJB架构到轻量级架构:
1. 对于本地对象: local EJB => 应用AOP注入操作代码的POJO
就分布式对象而言无状态session bean当然还是最好的选择!
2. 容器:EJB 容器=>IoC容器
3. entity bean => Hibernate或JDO
entity bean 早就被人们看作是不成功的废品了。这里就不多说了。
关于IoC容器, 以Spring架构为例说明它将如何以及在什么程度代替EJB容器。Spring一个开源的IoC容器实现。
1. 声明性事务管理、声明性安全、并发管理: Spring框架内置支持该功能。
2. 资源管理、业务对象管理: 是J2EE应用服务器提供的功能,它并不是EJB容器的特性。String支持这种能力。
3. 远程访问:
4. 生命周期管理:
5. 集群管理:支持横向集群,也就是应用的横向复制。
四、EJB目前还在坚守的阵地!
1. SLSB即无状态的session bean 还在被使用。在大型的企业级服务应用中,尤其涉及到需要横纵向集群方式的。SLSB仍是当前的最佳选择。只是,这种项目可能会很少接触到!而在一般情况下,我们应该考虑使用IoC, 而不是EJB.
2. MDB即消息驱动Bean, 这主要是目前轻量级服务器暂时没有一个规范性的实现策略。这只是暂时的, 因为轻量级服务器要想真的替代EJB,这个问题必须解决!(在Spring 2.0中已经有了异步JMS)
前言:好久一段时间没关注过j2ee了, 昨天恶补了一下。不看不知道,一看吓一跳! J2EE在过去一年发生了如此大的变化:EJB, 那个曾经作为J2EE核心部件的概念,如今似乎已经没落了, 落得人人喊打的地步了!!!继而兴起了一批新的概念:AOP, IoC轻量级服务器,POJO...
真的感慨万千。在2004年还无限风光的EJB, 在2005年便落到这种地步了! 于是让我怀疑: 当前那么急切的紧跟EJB潮流是否值得? AOP又能持续多久? 是否还要紧跟所谓的时尚技术? 以后如何应对新技术潮流的变迁?
本来这个技术圈子没有一个严格的标准,就是一个婆说婆有理,媳说媳有理的事!这个圈子从来没缺少过争吵!J2EE与.net吵, C++ 与JAVA吵, Linux与Windows吵... 感觉真的很乱,让人无所适从!
跑题太远了,还是转入正题吧!
一、EJB为我们提供了什么?
1. 声明性事务管理
避免编写大量的事务管理代码, 通过声明来完成事务性管理
2. 持久性管理
通过使用entity bean 来实现O/R mapping 即对象到关系数据库的影射
3. 安全性管理
开发者可以在EJB的部署描述文件中进行方法级的、基于角色的安全性管理
4. 生命周期管理
它实际上是为了实现EJB的持久性管理和资源管理而衍生出的功能。由于EJB实例对象和的生命周期是由EJB容器负责维护的,所以EJB实例对象的状态通常是不可预期的。于是EJB提供了一组生命周期管理接口, 供用户对EJB的生命周期进行一定的控制管理。
5. 资源管理
在J2EE的缓冲池中,不仅有对象实例池,还有资源管理池。例如:将数据库连接放入连接池中,其主要作用是防止以外情况时,不断的加载造成连接被全部耗尽!
6. 并发访问管理
也就是线程管理。EJB让开发者以编写单线程程序的方式编写业务对象,同时能使这些业务对象运行在多线程环境。
7. 业务对象管理(寻址服务)
借助JNDI为服务对象提供目录服务。EJB的部署描述文件提供了一个从服务名称到实现对象的影射,从而消除了业务接口(EJB组件接口)与实现类之间的耦合。
8. 远程访问
EJB本身设计就是分布式的,它通常是基于RMI来实现。
9. 集群
EJB曾被称为获得J2EE应用最大可伸缩性的不二法门。当然它有着出众的集群能力, 可方便的实现横向、纵向的集群,而不只是简单的应用的拷贝。
二、EJB的缺陷
EJB容器为EJB提供了一个优越而全面的服务环境! 这是它的优点,但也是它被人诟病的缺点: 很少有用到这么全面的服务的业务对象, 但不管用不用到这些服务都要为它埋单!因此在实施成本和性能上会有很大的损耗!
尽管当前的高端商业应用服务器在性能上有很强的表现,但是价格不菲!而开源的应用服务器在性能表现上并不能让人满意!
另外在如下一些方面也存在一些不足
1. 远程调用
EJB极大的简化了远程调用。但是EJB规范混淆了远程和组件模型。它往往会诱使人们采用一种并不适用且昂贵得体系结构。这对设计是有害的。
2. 集群方面
其实,机群的重点不应该在J2EEweb的应用业务对象层,通常专门的业务层集群不是很必要。相比而言,数据访问层,数据库层才是集群的重点!不过像 EJB这种比较笨重的东西需要集群也是可以理解的。^0^
3. 侵入性
为了使用EJB的服务业务对象必须实现EJB的特定接口!从而影响了原业务对象的固有形式!(其实在IoC中这个问题也没有真的完全解决。)
三、用什么方法代替EJB?
从EJB架构到轻量级架构:
1. 对于本地对象: local EJB => 应用AOP注入操作代码的POJO
就分布式对象而言无状态session bean当然还是最好的选择!
2. 容器:EJB 容器=>IoC容器
3. entity bean => Hibernate或JDO
entity bean 早就被人们看作是不成功的废品了。这里就不多说了。
关于IoC容器, 以Spring架构为例说明它将如何以及在什么程度代替EJB容器。Spring一个开源的IoC容器实现。
1. 声明性事务管理、声明性安全、并发管理: Spring框架内置支持该功能。
2. 资源管理、业务对象管理: 是J2EE应用服务器提供的功能,它并不是EJB容器的特性。String支持这种能力。
3. 远程访问:
4. 生命周期管理:
5. 集群管理:支持横向集群,也就是应用的横向复制。
四、EJB目前还在坚守的阵地!
1. SLSB即无状态的session bean 还在被使用。在大型的企业级服务应用中,尤其涉及到需要横纵向集群方式的。SLSB仍是当前的最佳选择。只是,这种项目可能会很少接触到!而在一般情况下,我们应该考虑使用IoC, 而不是EJB.
2. MDB即消息驱动Bean, 这主要是目前轻量级服务器暂时没有一个规范性的实现策略。这只是暂时的, 因为轻量级服务器要想真的替代EJB,这个问题必须解决!(在Spring 2.0中已经有了异步JMS)
发表评论
-
c++与java内存模型& c++ vTable
2012-11-03 16:25 1002参见: http://stackoverflow.com/q ... -
maven pom 指南
2012-11-03 15:56 774http://maven.apache.org/pom.htm ... -
could not discover transaction status
2012-11-01 18:08 1019https://community.jboss.org/thr ... -
zz java 类初始化顺序
2012-08-17 14:42 718zz from http://ig2net.info/arch ... -
JSP JSF tag关系
2012-07-12 23:44 939zz from http://drewdev.blogspot ... -
class泛型反射相关API介绍
2012-06-21 10:49 867class泛型反射相关API介绍: 1. getGeneri ... -
服务提供者框架(Service provider framework)
2012-06-14 16:55 1121服务提供者框架(Service provider framew ... -
JMS的使用
2012-05-30 16:24 9561. 何时使用MQ 如果仅仅是为了达到异步调用的目的, ... -
java EE 6 中Jsf 2.0 managedBean和CDI关系
2012-05-29 15:55 2762转自 :http://stackoverflow.com/qu ... -
maven 默认编码
2012-05-28 15:59 5428maven会使用平台的默认编码,中文系统就是GBK 如果使用 ... -
Seam的事务管理
2012-05-17 17:10 1153Seam的事务管理 Seam和jsf绑定在一起,seam将j ... -
seam与jsf的结合
2012-04-10 23:02 876Seam与JSF的结合 1. 采用org.jboss.seam ... -
maven依赖之optional
2012-04-09 15:42 894http://maven.apache.org/guides/ ... -
Visualsvn+trac 0.12 配置
2012-03-13 09:54 939主要参考了: http://www.cnblogs.com/ ... -
seam 的interceptor分析
2012-03-12 10:36 10221. componet.initialInstance()的时 ... -
zzEJB sessionBean的生命周期
2012-02-29 22:18 828【译】 Stateless Session Be ... -
关于jboss 4 的JNDIVIew 名字空间
2012-02-27 18:11 1036Jboss JNDI http://do ... -
多个EJB entity jar 使用同一个 persistence.xml
2012-02-22 18:32 745可以利用 persistence.xml 的 class、ma ... -
java的ClassLoader机制
2012-02-22 16:27 864zz from :http://www.cnblogs.com ... -
关于JPA的FlushModel---Manual
2012-02-21 17:08 1710zz from : http://www.codeinstr ...
相关推荐
《轻量级J2EE企业应用实战》这本书的介绍透露了相当丰富的J2EE开发知识点。首先,J2EE(Java 2 Platform, Enterprise Edition)是指Java平台的企业版,它是用于开发和部署企业级应用的一套规范和标准,其目的是为了...
随着技术的发展,现代J2EE已经演进为Java EE(后来称为Jakarta EE),引入了更多的轻量级框架,如Spring,简化了EJB的使用。然而,EJB作为企业级开发的基石,理解其原理和工作方式对于成为一名合格的J2EE开发者至关...
在EJB 3.0中,已经引入了许多重大的改进,包括注解驱动的配置、无容器依赖的POJO(Plain Old Java Object)实体、以及轻量级会话bean。EJB 3.1在此基础上进一步强化了这些特性,使企业级开发变得更加友好和高效。 1...
7. **部署与容器**:讨论如何在Tomcat、Jetty等轻量级应用服务器,以及GlassFish、JBoss等全功能应用服务器上部署J2EE应用。 8. **性能优化**:提供性能调优的技巧,包括代码优化、数据库查询优化、内存管理和并发...
实体bean的映射不再依赖于XML,而是通过注解完成,使得EJB更加轻量级,更接近POJO(Plain Old Java Object)。 9. **EJB与Java Persistence API(JPA)**: JPA是Java EE中用于对象关系映射的标准,常与实体bean...
动态代理是EJB容器实现的一种常见方法,尤其适用于轻量级的应用服务器。在这种方式下,容器在运行时动态地生成一个代理类,该类实现了客户端所调用的接口。当客户端调用EJB方法时,实际上是在调用这个代理类,由代理...
《深入Spring2:轻量级J2EE开发框架原理与实践》是一本专注于Spring2版本的权威指南,它详尽地介绍了Spring框架的核心特性和实际应用。Spring作为Java开发领域中的一个基石,以其轻量级、模块化和依赖注入特性,极大...
Java理论与实践:让J2EE脱离容器,探讨的是如何在非J2EE容器环境中使用J2EE的一些关键服务,从而让J2EE应用程序能在更轻量级的J2SE环境中运行。通常,J2EE应用程序依赖于完整的J2EE容器来提供服务,如EJB、JTA、JNDI...
这使得EJB更加轻量级,更易于使用,消除了早期版本EJB的复杂性。 六、EJB与Web层交互 在J2EE应用中,EJB通常与Servlets、JSF(JavaServer Faces)或其他Web框架结合使用。Web层负责用户界面,EJB处理业务逻辑,...
本文将详细介绍轻量级J2EE企业级应用实战的知识点,重点内容围绕JavaEE基础开发知识、三大框架Struts2.2、Spring3.0、Hibernate3.6的使用方法,以及如何将这些技术整合应用于实际项目中。 首先,我们需要了解JavaEE...
- **灵活的技术栈**:利用诸如控制反转(IoC)和面向切面编程(AOP)等新技术,可以构建更加轻量级和灵活的基础架构。 - **降低成本**:相比传统的EJB架构,这种简化的方法可以显著降低开发和维护的成本。 - **提高...
1. **轻量级容器的应用**: - **Spring框架**:作为本书的重点,Spring框架被广泛认为是替代EJB的有效解决方案之一。Spring提供了一种灵活的方式来管理对象的生命周期和依赖关系,同时也支持声明式事务管理和AOP...