论坛首页 Java企业应用论坛

EJB 和 App Server FAQ

浏览 8686 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-09-16  
引用
1. 按照Robbin对EJB和app srv的介绍,我是否可以这样认为:

a. 普通的java程序员和EJB程序员工作差别是很大的.
b. EJB程序员(或者是这个角色),主要任务是将分析师的分析结果,制作成一个个的EJB,并且将它们之间的调用关系都通过EJB的接口,一一连接好?
c. EJB程序员还要照顾调整好自己的App Srv,配置好工作环境用于EJB的放入(deployment)


a. EJB和普通Java对象的工作方式相比较而言,差别确实比较大,因为普通的Java对象从原理上来说是在JVM里面运行,其整个生命周期是由JVM来管理的,而EJB的整个生命周期并不是由JVM直接管理的,而是由EJB容器来直接管理的,EJB容器决定了EJB对象的状态。而EJB容器的管理方式和JVM管理Class的方式则是非常的不同,因此掌握EJB容器对EJB对象的管理方式就特别重要。

EJB容器对EJB对象的关系就等同于JVM对Java Class的关系。

因此,如果说要真正掌握好Java编程就必须了解JVM的工作原理的话,那么要学习好EJB,就必须对App Server有相当程度的掌握才行。

我想这就是普通Java程序员和EJB程序员的工作方式的差别吧。

b. EJB对象中最常用的Session Bean和Entity Bean是由Bean对象本身和一个远程接口和一个Home接口以及相应的XML配置描述文件组成的。

可以粗略的理解为
远程接口是提供给客户端程序调用的,都是软件业务逻辑调用;
Home接口是提供给EJB容器调用的,都是软件系统级功能调用,比如EJB对象的创建,销毁,激活,休眠等等
Bean对象本身无论是客户程序还是EJB容器都不能直接调用,必须通过这两个接口来控制EJB对象,因此通过这两个不同的接口就把业务逻辑调用和系统级功能调用区分开来了。
XML配置文件也是供EJB容器使用的,描述EJB的各种属性,这样可以在不修改EJB代码的情况下根据业务需求的不同调整EJB的属性。

c. 由于App Server本身的复杂性,因此EJB开发和部署是两种不同性质的工作。EJB程序员只负责编写代码实现EJB,EJB部署人员专门负责EJB的部署,调整EJB组件的各项属性,根据业务需求调整App Server各项性能。

做个对比来说明,EJB程序员相当于数据库程序员,根据业务创建相应的数据库表,编写相应的SQL语句;而EJB部署人员相当于数据库DBA,不但要调整表的各项属性(比如表的存储空间大小,扩展情况,建立索引等等),还需要根据整个业务调整整个数据库的各项参数。

EJB的部署本身是一项要求非常高的工作,不但要对App Server异常精通,还要对各个EJB组件的作用非常了解,甚至要对整个包括OS,DB,JVM在内的软件和硬件环境有整体的把握能力。
所以EJB的部署,特别是对App Server上的EJB进行performance tunning,绝对是个极具挑战的工作。



引用
2. 我翻阅了几本java bean和EJB的刊物,我是否可以认为 EJB和java bean是根本不同的两个东西?


在Java Web开发领域,EJB和Java Bean确实完全是两回事。在J2EE设计模式里面,Java Bean大致相当于Value Object对象,从概念上来说,等同于C语言中的Struct和Pascal语言的Record数据类型。
Java Bean只是普通的Java class,是由JVM来创建和管理的,EJB容器完全没有办法控制Java Bean。所以要想利用EJB容器提供的各种功能,比如分布式计算,事务处理,资源管理等等就必须用EJB。只有EJB对象才能被EJB容器监视和管理。

引用
3. 在一个由App Srv和EJB构成的系统中,程序编码过程和方法是否和一个普通的C-M-V java servlet/jsp应用 完全的不同?


这两者是不矛盾的,在一个普通的MVC应用中:
M: Java Bean以及其他的可能用于控制的Java Class
C: Java Servlet
V: JSP

在一个EJB的Web项目中:
M: EJB和一些Value Object和其他工具类等等
C: Java Servlet
V: JSP

Web端的Servlet用来实现控制流程,Web端的JSP用来生成HTML,这都完全一样。差别只是在Model这一层有所不同。

在商业逻辑端又或者叫中间层,普通的MVC就是简单的封装业务逻辑的Java对象和Java Bean(这里的Java Bean类似于C的Struct或者Pascal的Record的概念),因为不是分布式的,所以Web层和中间层必须在同一个JVM中运行。

如果是EJB项目,中间层会是实现业务逻辑的Session Bean和表示业务实体的Entity Bean和一些Value Object(等同于Java Bean),Web层和中间层可以在不同的JVM中运行。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics