学习EJB编程的简单过程

从单层体系结构讲到了多层体系结构,又讲到了N层体系结构。这样引出了主题(J2EE)。不过这句话翻译的不错:其他需要特别注意的(是)服务器方资源包括线程,数据库连接,安全、事务等等。定制处理这些资源的基础结构是相当费劲的。这种工作在INTERNET环境中是不可能的。如果你的开发周期只有三个月,能够对数据库访问建立连接池、对象缓冲区或“精彩的”对象层吗?

说了一大堆话终于引出了伟大的J2EE。不过要是不知道N层结构的真应该看看!容器:说白了容器就是JAVA程序的运行环境。不知道我的理解是否正确。现在的程度就只能理解到这了。

在学习EJB过程中,书上说J2EE规范定义了四种容器类型:

1.小应用程序(APPLET)。

2.应用程序客户容器。(自己以为就是SWING)

3.WEB容器(SERVLET 和 JSP)

4.EJB容器。

看来123都已经掌握了,现在就差4了,所以学习EJB容器还是必要的哦!书上对EJB写了个更加深入的解释:EJB是个分布式组件模型,可以开发安全的、可伸缩的、事务性的多用户组件。简单的说,EJB是包含业务逻辑的可复用软件单元。就象JSP可以将应用程序与业务逻辑分开一样,EJB可以将应用程序逻辑和系统层服务分开,使开发人员集中考虑业务问题,而不必考虑系统编程。

J2EE API:

RMI/IIOP:Remote Method Invocation类似网络连接使用的一些东西。

JNDI:Java Naming and Directory Interface。

JDBC:这个不用说了吧?

JAVAMAIL/JAF:JAVA的MAIL服务,JAF是邮件的附件。

JMS:JAVA MESSAGE SERVER。JAVA消息服务。

设计中为何使用EJB:

说了一大堆,我还是不确定是为什么。再接着看吧!不过这次我更加的确定了,原来EJB容器就相当于一个“功能“服务器,可以把一些业务功能写在这个里边。然后用123来调用咯!(不知道这么说是不是有点搞笑)。哈哈,我的理解正确了,果然书的第8页就说了,容器可以看成是执行环境!EJB的容器服务:(这里的容器服务都是不用编码,而是容器管理自己实现的啊。不错)

组件池和寿命周期管理:

哈哈,来点白话的,这是我个人理解的,组件池在容器启动的时候就自己生成了好多的BEAN的实例,假如说是10个吧,这个时候客户1来了,他就拿了BEAN1,这个时候别人是不能使用BEAN1的,再来了第2个客户,他不能拿BEAN1了,就只能拿BEAN2了。。。。。。。这个时候客户11来了,容器发现已经没有BEAN给他用了,于是就找个现在没人用的BEAN给他用,可是发现全都在被占用,没办法了,就只好再生成一个给他用了。哈哈,就是这么简单,可是有人会问了,这不是越生成越多吗?没关系,容器发现生成的BEAN没人用了,就会自动的给删掉,释放空间,释放系统资源嘛!

客户会话管理:

理解钝化和激活就行了。钝化就是把客户的BEAN状态保存在池中。激活就是把客户的这个BEAN状态再还给客户。

数据库连接池:

这个好象不用讲了吧!数据资源共享!这个名起的COOL B了。

事务管理:

事务很是昂贵啊!

验证和访问控制:

这个很简单!容器如何提供服务:这一部分先不写,以后再写,因为我也不怎么理解。哈哈

EJB类型:

分为3种类型:

会话BEAN:

1.无状态会话BEAN。

2.状态会话BEAN。

这两个BEAN非常的重要,但是在第3章才有讲。哈哈,先搁这!

实体BEAN:

自己理解就好象是数据库BEAN,就是把数据库的内容都读出来放在BEAN里,也不知道它具体是怎么读的,这样做会不会很浪费系统资源!???

实体BEAN根据同步的不一样又可以分为:

CMP(容器管理的持久性):容器负责BEAN与基础的数据库同步。

BMP(BEAN管理的持久性):这里要编程人员负责和基础数据库同步!容器在适当的时候调用编程人员写好的SQL语句!

真不明白,为什么已经有CMP了还要出了个BMP,书上是这么解释的:

有时需要增加设计的灵活性或在非关系型存储中支持持久性?这是人话吗?

还有个比方:EJB规范V1.1只允许实例变量和表格列之间的一对一映射。这样,使用这个版本时,如果要在实体BEAN中表示在多个表格中存储状态的累计对象,则无法使用CMP,而要使用BMP。EJB2.0规范定影了复杂的查询语言!

【编辑推荐】

  1. Eclipse+JBoss+EJB3配置文件发布Session Bean
  2. Java使用EJB容器的详细概述
  3. EJB2.0教程 详解EJB技术及实现原理
  4. 什么是EJB,EJB技术概览
  5. EJB3.1增加了Singleton Beans的概念
THE END