曾在一个论坛上看到一个帖子“国内有些程序员拿着吓人的工资,使用吓人的技术,做着吓人的项目--得出的结果也很吓人!”。对于J2EE开发而言,所谓的吓人的技术指的就是EJB。学会EJB就可以拿着吓人的工资,你是否也动心了呢?
EJB包括实体Bean、会话Bean、消息驱动Bean。实体Bean现在被称为ORM(对象关系映射),是对象关系映射。会话Bean一般对应系统的一个功能模块,分为有状态Bean和无状态Bean两种;有状态bean是指在bean不同的调用方法中能保存bean状态,无状态bean不保存状态。现在一般非常建议使用无状态Bean,因为这样效率最高。
EJB的学习成本非常高,高得足以把很多人吓跑。所以会EJB的人可以拿吓人的工资,但随着Hibernate等轻量级的ORM技术的流行、Spring等轻量级的容器的兴起,这些情况正在悄悄的发生改变。特别是Spring的缔造者对EJB发表了猛烈的抨击后,EJB专家组终于被逼疯,于是吸取了Hibernate和Spring思想,制定了EJB3的规范。
如果你学过Hibernate,或懂得ORM,EntityBean就不难看懂;假如有XDoclet的基础,学EJB3真是小菜一碟。如果你是一个初学者也没关系,EJB3好简单,只要把开发环境搭建起来,你就可以进入EJB的殿堂里徜徉,欣赏其优美的ORM,慢慢地掉入沉思,也会有所悟。
环境搭建(Eclipse3.1M4+JBoss4)
1.下载并安装JDK5.0:.自己找并安装。(我安装在:C:Java)。
2.下载Eclipse3.1M4: [url]
。安装完JDK,Eclipse下载完解压缩就能用了。(我的是E:Eclipse)
3.下载JBoss4:。下载完解压缩就能用。(我安装在:d:JBoss4)
4.下载JBoss的EJB3插件:。安装该插件的方法请参考:。安装很简单的,把jboss-EJB-3.0_Preview_2.zip解压后,把lib下面的所有东西拷贝到{JBoss_Home}serveralldeploy下面就OK了。(我的是:D:JBoss4serveralldeploy)。
5.设置环境变量:JAVA_HOME和JBOSS_HOME。我的是:JAVA_HOME=C:Javajdk1.5.0和JBOSS_HOME=D:JBoss4
6.启动JBoss,从命令行运行:d:JBoss4binrun.bat -c all
7.打开Eclipse,新建一个project(我建的是ejb_test),如果你看到工程下面的JRE System Library有jre1.5的字样,那就恭喜你,你的Eclipse能认出JDK5了。如果看不到,您还得按右键configure。
8.在你的工程下新建一个名为lib的目录,找到开发EJB所需要的jar,分别是:D:JBoss4lib的所有jar;D:JBoss4serveralllib的所有jar;D:JBoss4serveralldeployejb3.deployer的所有jar;把D:JBoss4serveralldeployjboss-aop.deployer这个文件用WinRAR打开解压后得的所有jar。把这些jar拷贝到新建的lib目录。
9.为了享受Eclipse自动编译的好处,你还需要把Eclipse编译java生成的class存放在如下指定的目录:在你的工程下创建一个名为build的目录,在该目录下创建名为classes的目录,然后右键选中你的工程,选中properties,把Default Output folder设置为:你的工程名字/build/classes
10.把我贴出来的ejb_test.rar解压,把所有的东东拷贝覆盖到你的工程,再刷新Eclipse。
11.环境配置完毕,为了照顾很多不会的人,配置是烦了点--高手看了我写的东西肯定会笑死的^_^。
开发模板
EJB2下的开发我没经历过,只是看过几个EJB的Demo,我这里所贴出来的开发模板是我仿照我在Spring+Hibernate+XDoclet下的开发方法做的(对错否望指正)。
我贴出来的开发模板可以将其划分成三层:ORM层、Dao层、Service层。
ORM层是为对象关系映射层,是EntityBean的定义,和Hibernate差不了哪去,就是把XDoclet改成Annotation而已。
Dao层是Data Access Object层,Dao是对单个表(或Entity)的增删查改,按照惯例,使用了接口。
Service层是通过调用Dao层来对多个表(或Entity)的的负责操作。这一层我是从Spring+Hibernate移植过来的,感觉有好多问题--总觉得通过调用Dao层这种方法的远程调用代价太高,而且怎样给SessionBean配置另一个SessionBean的实例我还没配置成功。
运行方法
1.先启动JBoss4,JBoss4的配置采用默认的设置.
2.本工程要用到junit,如果没有junit的包,你的工程出现了红色的错误提示信息。出现该错误信息时,把鼠标放在错误信息的那一行,按CTRL+1,eclipse会提示你把junit的包import进来的。保证无语法错误后,就可以运行junit测试了。
3.运行工程下的ant脚本build.xml:右键点击该文件->Run As->Ant Build。这样会打包和部署ejb到jboss服务器。
4.运行junit测试套件org.ggyy.test.AllTests.java,(右键->Run As->Junit Test),如果能看到绿线,就恭喜你,测试通过。
调试EJB
不知道是我的孤陋寡闻,还是IDE技术本身的落后,我以前好像记得EJB无法调试的,也就是无法一步一步的调试跟踪,这是EJB饱受批评的地方。
今天我到JBoss的网站看一下,JBoss IDE 出来新版本(测试版),能够Debug EJB3.0!
JBoss IDE 的下载地址是:
下载后,解压,从Eclipse的Help->SoftWare Updates->Find and Update->Search New Features to install->New Local Site,然后选择刚才解压的目录进行安装,一直Next下去就OK了。[/url]
调试方法
我们使用Junit测试时,所能调试的都是远程的Bean,而远程Bean在部署的服务器的。为此,我们需要在Eclipse里面启动JBoss服务器。先把JBoss IDE面板显示出来:Windows->Show View->other..->JBoss IDE->Server Navigator。
在JBoss IDE 面板右键->Configuration->JBoss4.0.x,按右键->New,选择JBoss安装路径,进行其它设置就OK。
由于我们调试的都是远程程序,而我们编写的EJB的实现是经过服务器的所谓代理的,所以在Junit外面是无法单步跟踪到我们编写的EJB的实现的(这点和被Spring 拦截代理相似),所以我们必须在自己写的Bean的实现中设置断点才能调试我们的EJB。
阅读(9089) | 评论(0) | 转发(0) |