上图中可以看到
1 组件是在容器中的。容器提供了组件的环境并对其进行管理。
2 调用组件的被称为ejb客户端。客户端可以运行在web容器中。如jsp,servlet,jndi,web service等
实现逻辑
实现逻辑组件中有各种抽象的方式。这样通过客户端的调用实现了业务的封装
实现分布式
首先要认识到RMI技术(远程调用),EJB的基础是RMI,通过RMI,J2EE将EJB组件创建为远程对象,EJB虽然用到了RMI,但是只需要定义远程接口无需实现,这样就将RMI技术细节屏蔽了。
这种将需要特定执行的类,放在Ejb中并打包发送到服务器上,,客户端通过RMI技术到服务器上进行调用,这样就实现了分布式调用。
所谓的服务器群
既然已经知道了,RMI是将各种任务与功能的类放到不同的服务器上,然后通过各个服务器间建立的调用规则实现分布式的运算,也就明白EJB所谓的"服务群集"的概念。就是将原来在一个计算机上运算的几个类,分别放到其他计算机上去运行,以便分担运行这几个类所需要占用的CPU和内存资源。同时,也可以将不同的软件功能模块放到不同的服务器上,当需要修改某些功能的时候直接修改这些服务器上的类就行了,修改以后所有客户端的软件都被修改了
一个简单的分布式群图

小结:
EJB实现原理:就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。
服务器集群:就是通过RMI的通信,连接不同功能模块的服务器,以实现一个完整的功能。
EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
使用POJO名称是为了避免和
EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为
VO(value -object)或
dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
- 外文名
- POJO
- 全 称
- Plain Ordinary Java Object
- 中文释义
- 简单的Java对象
- 实际意义
- 普通JavaBeans
- 特 点
- 支持业务逻辑的协助类
- 发明者
- MartinFowler等
自身特点
POJO是Plain OrdinaryJava Object的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。
实例
POJO有一些private的
参数作为对象的属性。然后针对每个
参数定义了get和set方法作为访问的接口。例如:
public class User {
private long id;
private String name;
public void setId(long id) {
this. id = id;
}
public void setName(String name) {
this. name=name;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
}
POJO对象有时也被称为
Data对象,大量应用于表现现实中的对象。如果项目中使用了Hibernate
框架,有一个关联的xml文件,使对象与数据库中的表对应,对象的属性与表中的字段相对应。
POJO与javabean的区别
POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的。JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为POJO。POJO(Plain Old Java Object)这个名字用来强调它是一个普通java对象,而不是一个特殊的对象,其主要用来指代那些没有遵从特定的Java对象模型、约定或框架(如EJB)的Java对象。理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)
[1] 。
错误的认识
POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。
真正的意思
POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,
EJB,
JDBC等等。
即POJO是一个简单的普通的Java对象,它不包含
业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。
下面是摘自Martin Fowler个人网站的一句话:
"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."--Martin Fowler
我们疑惑为什么人们不喜欢在他们的系统中使用普通的对象,我们得到的结论是——普通的对象缺少一个响亮的名字,因此我们给它们起了一个,并且取得了很好的效果。——Martin Fowler