学习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规范定影了复杂的查询语言!
【编辑推荐】
- Eclipse+JBoss+EJB3配置文件发布Session Bean
- Java使用EJB容器的详细概述
- EJB2.0教程 详解EJB技术及实现原理
- 什么是EJB,EJB技术概览
- EJB3.1增加了Singleton Beans的概念