王朝网络
分享
 
 
 

企业级EJB开发实例

王朝other·作者佚名  2008-05-31
宽屏版  字体: |||超大  

对企业开发人员来讲,难以编写分布式商务应用程序和其它任何较大的应用程序是他们今天所面临的一个共同问题。假如一个应用程序是分布式或在网络中以多重形式出现,那它应该是一个综合化的产物。EJB结构是Java平台上的服务器端组件模型,设计EJB结构的目的是通过使企业开发人员将注重力只集中于编写商务逻辑,从而解决上面所提出的问题。这些企业级bean使应用程序编程人员能够开发与平台无关、面向事务的分布式应用程序,而且这种应用程序可在众多厂商的服务器上运行。

尽管企业级bean减轻了应用程序编程人员处理系统功能的负担,但这些bean相当复杂,开发它们并不是一项简单的工作。以下几个部分将具体分析企业级bean的开发,并会通过一个具体实例来介绍如何通过可视化编程工具Jbuilder在Weblogic应用服务器下开发一个企业级bean。

企业级bean的开发

企业级bean有两种类型:会话bean和实体bean。它们在下列几个方面很相似:必须整合到应用程序中、必须部署到符合EJB规范的容器中,并且必须在符合EJB规范的服务器上运行。

开发企业级bean要完成四项主要的任务:即创建、包装、测试和部署。

要创建企业级bean,你必须遵循Sun公司的EJB规范所定义的一组接口。例如,除了定义一个企业级bean类之外,你还必须为每个企业级bean定义远程接口和本地接口。远程接口定义企业bean业务方法的客户视图,而本地接口定义企业级 bean对象生存周期的客户视图,生存周期包括诸如企业级bean的创建和删除这类事件。

你还必须确保在企业级bean的接口和类中定义的方法保持一致。假如创建的是实体bean,则你必须定义它的持久性域,并将这些持久性域映射到持久数据存储,如关系数据库。

一旦创建了企业级bean,就必须针对特定的bean容器部署它,即生成本地接口和远程接口的实现类。完成部署之后,还需要测试 bean 的远程方法和本地方法。最后,一旦完成测试,你就可以将bean打包,以便将其安装在应用服务器上。

开发过程

下面笔者将具体讲解Jbuilder和Weblogic5.1下的一个EJB开发的具体过程:

环境搭建

安装Weblogic5.1和Jbuilder4.0企业版(从网上下载的Jbuider一般是先安装Foundation版再在此基础上安装企业版)。Weblogic5.1安装好后,假如Weblogic Server无法启动,可能是由WeblogicLicense.XML过期所致,可到网上下载一新版将此文件覆盖即可将Server启动。

环境配置

对于Weblogic5.1,以文本形式打开Weblogic根目录下的startWeblogic这个NT命令文件。对JAVA_CLASSPATH和Weblogic_ CLASSPATH这两个属性值更改如下(由于笔者的数据库服务器是Oracle8i,所以在此引用Oracle的JDBC Driver驱动):

set JAVA_CLASSPATH=%JAVA_HOME%\lib\classes.zip;.\classes\boot;.\eval\cloudscape\lib\cloudscape.jar;D:\Oracle\Ora81\jdbc\lib\classes12.zip

set Weblogic_CLASSPATH=.\license;.\classes;

.\lib\Weblogicaux.jar;.\myserver\serverclasses;D:\Oracle\Ora81\jdbc\lib\classes12.zip;

%JAVA_HOME%是系统变量,指的是JDK的安装目录,可在98或NT环境下对此环境变量进行设置。

然后找到Weblogic安装的根目录下的Weblogic.properties文件,以文本文件形式打开此文件并在此文件中配置Weblogic服务的监听端口(80)和数据源连接池(FordPool),配置如下:

Weblogic.system.listenPort=80

Weblogic.jdbc.connectionPool.FordPool=url=jdbc:oracle:thin:@130.140.55.50:1521:xjdb1,driver=oracle.jdbc.driver.OracleDriver,loginDelaySecs=1,shrinkPeriodMins=15,refreshMinutes=10,testTable=dual,props=user=fordxj;passWord=fordxj;server=serverName

Weblogic.jdbc.TXDataSource.FordPool=FordPool

Weblogic.allow.reserve.Weblogic.jdbc.connectionPool.FordPool=everyone

对数据源连接池主要是url属性和props属性,其中url属性指出了Oracle服务所在的主机名(130.140.55.50)、端口(1521)和数据库服务名(xjdb1);props属性指出了用户名、口令和Oracle服务所在的主机名。

打开Jbuilder4.0点击Tools→Enterprise Setup,接着打开Application Server标签下的Weblogic5.1标签,定位Weblogci5.1的安装目录。

EJB工程开发

先新建一个空的工程,在建此工程的第二步时选择Required libraries选项时选定Weblogic5.1。再在此工程中新建一个Entity EJB Group和一个Enterprise JavaBean。在建Enterprise JavaBean 时提供了四种选项,这四种选项分别对应了EJB的四种类型(Stateful session bean、Stateless session bean、BMP和CMP)。我们选定EJB的类型为Bean managed persistence entity bean(BMP),之后的几步中可以更改JNDI名称。

工程建好后,点击Project→project property,打开Enterprise标签,确保选中的Application server 是Weblogic5.1,再打开Build标签下的Weblogic标签,确保选中Use Weblogic EJBC to generate stub files选项。

编写每一个EJB时,都必须为它定义一个宿主接口、一个远程接口和一个Bean类。

宿主接口定义了Bean的生命周期方法,客户机调用这些方法创建、寻找并删除Bean实例。宿主接口必须继续javax.ejb.EJBHOme类。客户机通过命名和目录接口(JNDI)对宿主接口进行定位,然后再利用这个宿主接口创建一个Bean对象。宿主接口指定了一个或多个create方法;对宿主接口中的create方法来说,必须在Bean类中为它指定一个具有同样签名的ejbCreate方法。客户机调用宿主机上的create方法时,不管当时请求的是什么服务,容器都会调用Bean内的ejbCreate方法。

远程接口列出了客户机可以调用的所有Bean方法或公用接口。远程接口继续了javax.ejb.EJBObject类。远程接口可以定义零个或多个业务方法,这些方法必须声明为“public”,这些方法不能是“final”方法,方法名禁止以“ejb”开头。远程接口中的方法必须是合法的RMI方法:它们的参数和返回值必须是序列化类型。

Bean类用于实现Bean的业务逻辑,Bean类将驻留于服务器上。对宿主接口和远程接口中的每一个方法来说,Bean类中必须有一个能与之相符的方法签名。

由于我们建的是一个BMP,它是直接关联到表中记录,所以对应每一个字段在Bean类都有对应的属性和相应的Set、Get方法。而且在ejbLoad方法中必须对这些属性赋值,在ejbStore方法中将相应的属性值存入到对应的字段中去。

对于我们在Weblogic.properties文件中所配置的数据源连接池,在代码中可以以如下方式引用:

InitialContext ic = new InitialContext();

datasource = (DataSource) ic.lookup(FordPool);

dbConnection = datasource.getConnection();

部署并测试EJB

EJB创建之后,下一步就是针对Weblogic来部署它,也就是生成本地接口和远程接口的实现类(一些以stub或impl结尾的文件)。其实这一步的工作只要在Jbuilder中点击鼠标就能实现。右键点击工程文件→Rebuild,Jbuilder将会生成一个与EJBGroup同名的jar文件。这个jar文件中包括了我们所需的所有实现类文件。

EJB类都实现之后,我们可以新建一个测试类来测试它。点击File→New→EJB Test Client。新建的这个测试类会产生针对EJB类中各方法的测试方法。我们可以在main方法中调用这些方法来测试EJB。

发布EJB

EJB中的各方法都测试通过后,我们可将部署时形成的jar文件发布到Weblogic服务器并在客户机中调用。发布到webLogci中有两种方式:热发布和冷发布。热发布就是在Weblogic.properties文件中加入下面一行:(Infopub_ Group.jar是笔者发布的jar文件)

Weblogic.ejb.deploy=\d:/mywork/InfoPub /Infopub_Group.jar,\

冷发布是在Weblogic服务器已经在运行的情况下,用Weblogic提供的工具EJB deployer来发布的。

通过创建、包装、测试和部署,我们就利用Jbuilder在Weblogic应用服务器下开发出了一个完整的企业级bean。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有