您的位置:首页 > 数据库

EJB学习历程1---转摘

2004-09-21 17:13 375 查看
为了力求新的进步,我觉得从今天起开始学习EJB编程。
希望各位志同道合的朋友能一起参加进来。
我选用的参考书是wrox的EJB编程指南。这个书有1000多页,争取能全部完成他吧!
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

好了,不多说没用的了。现在开始进入第一章的学习。
 

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

容器:说白了容器就是JAVA程序的运行环境。不知道我的理解是否正确。现在的程度就只能理解到这了。
 

书上说J2EE规范定义了四种容器类型:
1.       小应用程序(APPLET)。
2.       应用程序客户容器。(自己以为就是SWING)
3.       WEB容器(SERVLET 和 JSP)
4.       EJB容器。
 

看来123都已经掌握了,现在就差4了,所以EJB容器还是要学习的哦!~
 

书上对EJB写了个更加深入的解释:EJB是个分布式组件模型,可以开发安全的、可伸缩的、事务性的多用户组件。简单的说,EJB是包含业务逻辑的可复用软件单元。就象JSP可以将应用程序与业务逻辑分开一样,EJB可以将应用程序逻辑和系统层服务分开,使开发人员集中考虑业务问题,而不必考虑系统编程。
 

<
4000
p class="MsoNormal" style="margin:0cm 0cm 0pt;">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规范定影了复杂的查询语言!还是很费解!~~~~不过应该是有用吧!!以后估计就能搞明白!呵呵!~~
 

消息驱动BEAN。第6章讲!等着吧!兄弟们~~~~
 

哈哈!看完第一章了。明天再看第2章!
 
 
 
第一章    EJB开发
 

EJB的角色:(规定了6种开发和部署的角色)
l         企业BEAN提供者(Enterprise Bean Provider)
工作任务如下:
1.编写BEAN的主接口。
2.编写BEAN的组件接口,声明应用程序需要的各种业务方法。
3.编写实现远程接口中定义的各种业务方法的实现类。
4.编写部署描述项。
5.打包。
 

其实就是编写EJB的编程人员。至于什么是主接口,什么是组件接口,什么是实现类以后再说吧!先死记吧!

 

l         应用程序汇编者:其实就是把BEAN提供者写好的东西组织在一起的人了。没什么大用,还号称是行业专家!(开玩笑了)
 

l         部署者
 

l         系统管理员
 

l         EJB服务提供者,容器提供者(书上是分两条的,但是我认为他们应该是一样的东西,至少暂时是一样的东西)
 

其实话说回来了,别的人都不怎么重要,我们要做的人就是企业BEAN提供者。
 

开发第一个EJB

高兴,终于有个HELLOWORLD了!

大家一定要记住BEAN提供者的那几个要素啊!很关键的,全是从那几个要素之间展开的。

 

HELLOWORD的题目是:根据年薪、公积金和所得税计算每月的净收入。(无状态会话BEAN)。

EJB客户视图:

本地客户:使用本地接口和本地主接口。按引用传递值。

远程客户:使用远程接口和远程主接口。按变量传递值。会有java.rmi.RemoteException错误。

标准的设计模式是,业务逻辑层的所有访问使用会话BEAN,这些会话BEAN需要发表远程接口,使客户层可以访问这些会话BEAN。其余实体和无状态会话BEAN可以看成“实施细节”,只发表本地接口。

 

这是书上原话,大家明白吗?反正我就只能明白个80%。哈哈~~~再接着来。

 

开发主接口
倒!前边讲了一大堆主接口,现在才想起来解释,不知道老外这个书是怎么写的。
主接口负责控制BEAN的寿命周期操作:生成,删除和寻找。主接口是客户在BEAN中的第一个联系点。客户通过JNDI取得引用。其实是在部署的时候确定JNDI的,不着急。
当客户引用了主接口之后,就可以通过这个接口对BEAN进行下列操作:
l         生成新的实例或者寻找现有的BEAN实例。(本地或者远程)
l         访问EJBMetaData接口(远程)。
l         取得BEAN实例的序列化引用(远程)。
l         删除BEAN实例。
l         执行主业务方法。
 

在这个例子中只使用主接口生成BEAN的新实例。
 

EJB里定义了本地接口和远程接口。(EJBHome 和EJBLocalHome)。这两个接口的源程序书上有。
 

EJBHome接口中的方法:
getEJBMetaData():返回EJBMetaData接口的引用,取得BEAN信息。(还是不知道EJBMetaData是什么东西。查字典是元数据的意思)。
getHomeHandle():返回主对象的句柄。
remove():很简单,删除了。哈哈,玩笑,其实对不同BEAN结果不一样啦,会话BEAN是将BEAN再放回池中,而实体BEAN则是从数据库中删除数据。这次才对嘛!
 

下边就是程序了,我先试试程序到底是怎么回事再给大家讲啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息