ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:824.26KB ,
资源ID:5495375      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5495375.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验四基于WAS和RAD的EJB应用开发.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验四基于WAS和RAD的EJB应用开发.docx

1、实验四基于WAS和RAD的EJB应用开发实验四 基于WAS和RAD的EJB应用开发实验目的:掌握使用WAS和RAD进行EJB开发目标要求:1. 掌握运用WAS和RAD开发EJB 实验说明:第一节 建立EJB项目在RAD的“项目资源管理器”中,选中“EJB项目”然后右键点击“新建”“EJB项目”,如下图所示。此时会出现“新建EJB项目”对话框。在“名称”中填入“HotelEJB”,“项目位置”一栏默认即可。点开“隐藏高级”选项,确认“EJB版本”是“2.1”,选中“将模块添加到EAR项目”复选框,然后在“EAR项目”中选中“HotelEnterpriseApplication”,点击“完成”,具

2、体见下图。在“项目资源管理器”中,我们会看到如下的EJB项目目录结构。 第二节 建立会话Bean接下来,我们要建立第一个会话Bean,该会话Bean是一个无状态的会话Bean,它将完成注册成功的用户查询自己的注册资料的功能。在这里说明一下关于无状态会话Bean和有状态会话Bean的区别。所谓有无状态指的是服务器的EJB容器是否保存该会话Bean的状态,例如:如果是无状态会话Bean,容器并不保存该会话Bean的状态,也就是说,容器只需要维护该会话Bean的一个实例即可,每个需要调用该会话Bean的请求都使用该Bean的同一实例。而有状态会话Bean的状态由容器管理,但是它的生命周期也就仅仅是请

3、求期,当请求结束时,该有状态会话Bean的生命周期也随之结束,也就是说,每个求情对应一个有状态会话Bean的实例,这就是由状态会话Bean和无状态会话Bean的本质区别。通过上面的分析,我们看到,在这里只需要建立无状态会话Bean就可以满足我们的需要。在“EJB项目”“HotelEJB”“部署描述符”“会话Bean”上,右键选择“新建”“会话Bean”,见下图。在随之出现的“创建企业Bean”对话框中,确定“会话Bean”但选框被选中,“EJB项目”一栏中是“HotelEJB”,“Bean名”一栏填写“Getguest”,“源文件夹”一栏是“ejbModule”,而“缺省包”一栏改为“tju.

4、ibm.hotel.ejbs”,具体见下图。点击“下一步”,进入“详细信息”对话框。在该对话框中,确保“会话类型”一栏是“Stateless”,当然,如果要创建有状态会话Bean就选“Stateful”,“事物类型”一栏是“Container”,“远程客户机视图”复选框被选中。同时观察一下要生成的Bean的结构,具体的参看下图的结构。点击完成,我们可以看到该会话Bean的类图出现在“default.dnx”视图中,保存该文件,然后关闭它。该视图可以呈现EJB类于接口之间的关系,例如:将刚刚生成的Home接口和Remote接口拖入该视图中,我们将会看此三者的关系,具体的请见下图。同时,我们在“项

5、目资源管理器”中看到刚刚生成好的会话Bean的结构,如下图。下面的工作是修改已经生成的会话Bean,首先我们用该Bean来调用在前些章节中编写好的数据库管理程序来进行和数据库的联系。我们双击“HotelEJB”“部署描述符”,在打开的编辑区中选中“引用”,然后点击“Getguest”,并点击下面的“添加”,出现“添加引用”对话框,见下图所示。选择“资源引用”,然后点击“下一步”,此处是添加数据库引用。在出现的“添加资源引用”对话框中,“名称”一栏填写“jdbc/hotel2”,“类型”一栏选择最后一项的“javax.sql.DataSource”,认证一栏选择“Application”,“共享

6、作用域”一栏选择“Shareable”,然后点击“完成”。见下图。此时在“WebSphere 绑定”“JNDI名称”一栏中填写“jdbc/hotelDev”。同时注意,此时不要在“WebSphere 扩展”“隔离级别”中选择任何选项。如下图所示。关闭“EJB部署描述符”,并在“HotelEJB”-“ejbModule”中添加包“tju.ibm.hotel.databases”,并在该包中添加接口“GuestDatastore”和“BuildConnection”,以及类“DatastoreFactory”、“GuestDatastoreJDBC”、“DataSourceConnection”、

7、“ConnectionFactory”和“Guest”,代码见具体的接口和类,这里不再赘述。但是要注意的是在类“DatastoreFactory”中,“lookupName”的值要和刚刚添加的数据源资源的名称一致,即为“java:comp/env/jdbc/hotel2”,具体见下图。此时要修改会话Bean的Bean代码。双击“HotelEJB”“部署描述符”“会话Bean”“Getguest”“GetguestBean”文件,在编辑区中出现“GetguestBean.java”文件。添加方法“public Guest getGuestInfo(String guest_id, String

8、password)”,并在此方法中添加如下代码,见下图。保存修改后,在右边的“大纲”视窗中选中“GetguestBean”“getGuestInfo”,并点击右键,选中“企业Bean”“提升至远程接口”。见下图。此时会在“大纲”视窗中选中“GetguestBean”“getGuestInfo”上出现一个“R”,它代表着该方法已经成为了远程接口方法了,这样,当请求得到会话Bean的实例后就可以调用该方法了,同时在远程接口类“Getguest”中会看到该接口,见下图所示。接下来我们要做的是生成Bean代码并进行服务器的部署,右键点击“HotelEJB”“部署描述符”“会话Bean”“Getgues

9、t”,选择“部署”,见下图。然后我们就可以验证该会话Bean了,首先使用“通用客户测试机”。仍然右键点击“HotelEJB”“部署描述符”“会话Bean”“Getguest”,选择“运行”“在服务器上运行”。见下图。此时,WebSphere应用服务器会启动,等待一段时间后,会在“服务器”一栏处看到“已启动”,并且在编辑区出现“测试客户机”,如下图所示。点击“EJB Bean”“Getguest”“GetguestHome”,我们看到“create”方法,点击它,在右边的“参数”区域里出现“调用”,点击它,在下面的“结果来自”一栏中出现“Getguest”对象,并且下面有“处理对象”的按钮,如下

10、图所示。点击“处理对象”,在左边的“JNDI资源管理器”一栏下面看到出现一个新的对象“Getguest1”,展开它,我们得到了“getGuestInfo”方法。点击它,在右面的“参数”区域里的“值”一栏中分别填入“ivan”和“ivan”,点击“调用”,见下图。此时得到“Guest”对象,同样点击“处理对象”按钮,在左边的“对象”区域里出现它的对象,见下图。展开“Guest”对象,选择“getEmail”方法,然后在右边的“参数”区域中点击“调用”,我们会得到chaoxu的结果,这就说明我们的会话Bean创建成功了,见下图所示的结果。在上面我们用“通用客户机”测试了会话Bean,在成功返回正确

11、结果的基础上,我们就可以创建Web客户端了,下面我们要创建调用该会话Bean的Web客户端。在这之前先关闭“通用客户机端”和应用服务器。第一步是添加一个登陆的jsp页面,右键点击“动态Web项目”“HotelWeb”“WebContent”“新建”“JSP文件”,出现“新建JSP文件”对话框。见下图。在“文件夹”一栏中应该是默认的“/HotelWeb/WebContent”,在“文件名”一栏中填入“ListGuestInfo”,同时确保“模型”一栏中为“无”,应为我们这里不是用Struts框架,然后点击“完成”,见下图。在编辑区中出现“ListGuestInfo.jsp”文件,编辑该JSP文件

12、,代码见附件的文件,具体的页面形式如下图所示。该JSP的动作响应为“/Hotel/GuestInfo”的Servlet,见下图。于是我们接下来要创建一个Servlet,它的URL映射为“/Hotel/GuestInfo”。关闭“ListGuestInfo.jsp”文件。右键点击“动态Web项目”“HotelWeb”“部署描述符”“servlet”,选择“新建”“servlet”,如下图所示,出现“创建Servlet”对话框。在出现的“创建Servlet”对话框中的“名称”一栏填写“GuestInfo”,此时在“URL映射”一栏中会出现“/GuestInfo”,点击“下一步”,确定“文件夹”一栏

13、是“HotelWebJavaSource”,点击“Java包”一栏右侧的“浏览”,选择“tju.ibm.hotel.servlet”,点击“下一步”,选上“doGet”和“doPost”复选框。点击“完成”,生成该Servlet。见下图所示。在生成的“GuestInfo.java”文件中,修改“doGet”和“doPost”方法的代码,在这之前需要将HotelEJB中的Getguest会话Bean做一个Web的本地映射,然后在“GuestInfo”此servlet中即可获得该Bean的实例。下面,我们先创建Getguest会话Bean的本地映射。双击“动态Web项目”“HotelWeb”“部署

14、描述符”,在编辑区中会出现“Web部署描述符”,选择“引用”,点击左边的“添加”,出现“添加引用”对话框,选择第一项“EJB引用”,点击“下一步”,见下图。在“为Web EJB引用添加字符串”对话框中的“名称”一栏中填写“ejb/Getguest”,“引用类型”选择“本地”,此时,在该对话框的面板上方会出现“如果 EJB 在相同的 EAR 中,则最好的方法是创建对 EJB 的本地引用。”的信息,选上“工作空间中的企业Bean”,然后在下面选上“Getguest”,点击“完成”,见下图所示。这样,我们的EJB引用就设置好了,现在可以修改“GuestInfo.java”的代码了,在“doGet”方

15、法中添加如下代码可以得到“Getguest”会话Bean的远程接口,如下:GetguestHome home = (GetguestHome) ServiceLocatorManager.getRemoteHome(ejb/Getguest, GetguestHome.class);Getguest getguest = null;try getguest = home.create(); catch (RemoteException e) e.printStackTrace(); catch (CreateException e) e.printStackTrace();如果得到的远程接口g

16、etguest为空,则重定向到“ListGuestInfo.jsp”,代码如下:req.setAttribute(message, new Message(Login failed: There is an error. Please try to login later.);req.setAttribute(idcookie, guest_id);context.getRequestDispatcher(/ListGuestInfo.jsp).forward(req, resp);如果得到的远程接口不为空,则显示用户的信息,定向到“ListInfo.jsp”文件,代码如下:HttpSessi

17、on session = req.getSession();session.setAttribute(guest, guest);Cookie idCookie = new Cookie(idcookie, guest_id);idCookie.setMaxAge(7*24*60*60);resp.addCookie(idCookie);req.setAttribute(message, new Message(guest_id + Login succeed, here is your infomation!);context.getRequestDispatcher(/ListInfo.j

18、sp).forward(req, resp);这里,我们还缺少一个“ListInfo.jsp”文件,该文件用来显示用户的信息,具体的创建方法和“ListGuestInfo.jsp”相同,具体的设计可以参见项目代码,这里给出该文件的设计概要,见下图所示。接下来就可以测试我们的Web客户端了,右键点击“ListGuestInfo.jsp”,选择“运行”“在服务器上运行”,出现“选择服务器”对话框,默认所有设置,点击“完成”,见下图所示。等待一段时间,当服务器启动完毕后,会出现“Web浏览器”,在“Username”和“Password”一栏中分别填上“ivan”和“ivan”,点击“ok”按钮,见

19、下图所示。少许等待后,我们会看到返回的结果,说明我们的Web客户端创建成功,具体见下图所示。关闭服务器和所有编辑区打开的内容,我们将进入下一环节,创建一个实体Bean。第三节 建立实体Bean 在上一节中我们已经通过RAD创建了一个无状态的会话Bean,同时我们也介绍了无状态会话Bean和有状态会话Bean的区别。这一节中,我们将介绍如何使用RAD创建一个实体Bean,正如在本章前述节中介绍的,实体Bean分为容器管理持久化的CMP和Bean管理持久化的BMP,这里我们主要介绍CMP。由于数据库已经设计完成,我们将使用“自底向上”的方法来创建和已有数据库中的表对应的CMP。点击“EJB项目”“

20、HotelEJB”,选择“EJB至RDB映射”“生成映射”,将出现“EJB至RDB映射”对话框,见下图所示。在出现的“EJB至RDB映射”对话框中,由于此时并没有为该EJB项目添加任何的“后端文件夹”,我们并没有任何选择,只能选择“创建新的后端文件夹”,并点击“下一步”,具体的见下图所示。同时,在下一个对话框中也没有任何选择,只有“自底向上”可以选择,这是因为上一步并没有创建“后端文件夹”,只能选择“自底向上”,我们看到,它的作用是“根据现有数据库模式生成企业Bean和映射”,也就是说,我们可以借助该更能实现从现有数据库的数据表映射生成所需要的CMP,点击“下一步”在下一个对话框中,填写“连接

21、名称”一栏为“HotelConn”,在“数据库”一栏中填写“HOTEL”,并且在“数据库位置”一栏中填写hotel数据库的位置,点击“下一步”,具体急见下图所示。我们将下一对话框的“HOTEL”一项都选上,点击“下一步”,如图所示。在最后一个对话框中的“生成EJB类的包”一栏中,填写“tju.ibm.hotel.ejbs”,然后点击“完成”,见下图所示。生成三个CMP,但是我们只需要保留“Guest”,所以删除其他的两个CMP。展开“EJB项目”“HotelEJB”“实体Bean”“Guest”,并双击它,将会在编辑区出现“EJB部署描述符”,在右边的“JNDI名称”一栏填入“hotel/Gu

22、estLocalHome”,如下图所示。点击“EJB部署描述符”下边的“引用”,给会话Bean“Getguest”添加一个EJB引用,选择“Getguest”,并点击“添加”,同样像上次给Web项目添加EJB引用那样,选择“EJB引用”,点击“下一步”,此处的“名称”一栏填写“ejb/GuestLocalHome”,“引用类型”选择“本地”,并且选中“工作空间中的企业Bean”,选中“Guest”Bean,点击“完成”,见下图所示。关闭“EJB部署描述符”,我们需要修改“Guest”CMP,打开“GuestBean.java”,修改“ejbCreate”和“ejbPostCreate”方法,代

23、码如下:public tju.ibm.hotel.ejbs.GuestKey ejbCreate(Guest guest) throws javax.ejb.CreateException setGuest_id(guest.getGuest_id(); setPassword(guest.getPassword(); setFirst_name(guest.getFirst_name(); setLast_name(guest.getLast_name(); setIc_card(guest.getIc_card(); setEmail(guest.getEmail(); setTeleph

24、one(guest.getTelephone(); setRank(guest); return null;public void ejbPostCreate(Guest guest) throws javax.ejb.CreateException 保存后,关闭该文件,同时打开“GuestLocalHome.java”文件,它是“GuestBean”的本地Home接口,我们需要相应的修改“create”方法,修改代码如下:public tju.ibm.hotel.ejbs.GuestLocal create(Guest guest) throws javax.ejb.CreateExcept

25、ion;保存后关闭该文件。下面需要部署该实体Bean到应用服务器,右键点击“EJB项目”“HotelEJB”“实体Bean”“Guest”,选择“部署”,该过程和上一小节中部署会话Bean类似。这里我们需要修改一下已经创建好的会话Bean“Getguest”,使它可以得到这一节中创建好的实体Bean的实例,首先打开“EJB项目”“HotelEJB”“实体Bean”“Getguest”“GetguestBean”,修改“getGuestInfo”方法,代码如下:GuestLocalHome guestLocalHome = (GuestLocalHome) ServiceLocatorManag

26、er.getLocalHome(ejb/GuestLocalHome, GuestLocalHome.class);if(guestLocalHome = null) return null; GuestLocal guestLocal = null; try guestLocal = guestLocalHome.findByPrimaryKey(new GuestKey(guest_id); catch (FinderException e) e.printStackTrace(); if(guestLocal != null & password.equalsIgnoreCase(gue

27、stLocal.getPassword() guest = new Guest(guest_id, password, guestLocal.getFirst_name(), guestLocal.getLast_name(), guestLocal.getIc_card(), guestLocal.getEmail(), guestLocal.getTelephone(); return guest;保存关闭该文件后,重新部署该会话Bean,方法和上述章节中叙述的相同,这里就不再赘述了。最后,打开服务器,并且使用我们在上一节中创建的Web客户端来测试该会话Bean和CMP实体Bean的协同工作,我们应该会得到和上一节中相同的结果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1