实验五 JNDI及会话Bean.docx
- 文档编号:30737129
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:26
- 大小:691.38KB
实验五 JNDI及会话Bean.docx
《实验五 JNDI及会话Bean.docx》由会员分享,可在线阅读,更多相关《实验五 JNDI及会话Bean.docx(26页珍藏版)》请在冰豆网上搜索。
实验五JNDI及会话Bean
实验五JNDI及会话Bean
实验内容
学习JNDI的概念及使用
学习会话Bean的编写、部署及调用
学习JBoss的配置
实验目的
了解JNDI使用方法
掌握会话Bean的编写、部署及调用方法
掌握有状态SessionBean与无状态SessionBean的区别
环境要求
服务器:
JBoss6.0以上
集成开发环境:
myEclipse8.5或更高
实验指导
1、在Eclipse中配置JBoss
1)下载JBoss-6.0.0.CR1,并解压;
2)添加环境变量“JBoSS_HOME”为JBoss的安装目录
3)启动myEclipse,在下方的“Server”选项卡中点击右键,在快捷菜单中选择“ConfiguerServerConnector”,打开如下对话框:
4)在左侧列表中选择“Servers”列表中的“JBoss”->“JBossv6.x”,然后在右侧面板中的“JBossserver”中选择“Enable”,并在“JBosshomedirectory”中指明你JBoss的安装目录。
然后点击“ok”按钮。
2、JNDI的使用
1)在JBoss下绑定将资源绑定到JNDI。
i.创建一个“WebProject”工程名为“jndi”。
ii.
创建一个JSP页面“index.jsp”,并编写如下内容:
iii.将此工程发布到JBoss上,然后启动JBoss。
iv.打开另一个浏览器窗口,访问一次刚发布的jdni的index.jsp页面,若看到“绑定成功....”,表示JNDI名已经绑定成功。
2)通过JNDI查询并引用绑定对象
i.创建一个“Javaproject”工程,工程名为“jndiClient”。
ii.在工程名上点击右键,在弹出的快捷菜单中选择“BuildPath”->“ConfigureBulidPath”,弹出如下对话框:
点击“AddExternalJARS...”按钮,将JBoss安装目录中“client”目录中的所有Jar文件添加(jndi的客户端类库)。
iii.
添加一个类“Client”,代码如下:
iv.运行上面代码,应该看到如图窗口:
3、编写会话Bean
1)无状态会话Bean
i.创建一个“EJBProject”工程“MyEJB”,界面如下图。
取消“AddSupportforEntitybeans”的选择,然后点击“Finish”按钮。
ii.创建一个包:
“cn.bean”用于保存EJB的类和其对应的接口文件。
iii.创建一个叫SayHi的“EJB3SessionBean”,如下图:
选中“CreateInterface”的“Local”和“Remote”,即为此类创建远程接口和本地接口,对应类文件为:
SayHiLocal.java和SayHiRemote.java。
“SessionType”(会话类型):
Stateless(无状态会话Bean)。
iv.
两个接口内容如下:
v.
编写会话类:
SayHi,并实现以上两个接口。
其内容如下:
vi.部署EJB:
在前面创建的JBossServer的图标上点击右键,在弹出的快捷菜单中选择“AddDeployment....”,弹出对话框如下图:
在“Project”中选择当前工程“MyEJB”。
vii.启动JBoss。
2)编写远程客户端
i.创建一个“JavaProject”工程,名为“EJBClient”。
ii.编辑“BuildPath”将JBoss目录中Client中的所有的JAR包添加到工程的类路径上。
iii.编辑“BuildPath”,在“Projects”选项卡中将“MyEJB”工程添加的列表(如图),或复制上面EJB工程中的远程接口文件SayHIRemote包括整个包,到本工程中。
3)
创建一个类Client,代码如下:
2)有状态会话Bean
(1)编写一个有状态会话Bean完成购物车的功能。
新建一个名叫“CartBean”的EJB3SessionBean,对话框如下:
CartBean类的代码如下:
packagecn.bean;
importjava.util.ArrayList;
importjava.util.HashMap;
importjavax.ejb.Stateful;
@Stateful(mappedName="cart")//指明JNDI名为cart
publicclassCartBeanimplementsCartBeanLocal,CartBeanRemote{
//商品信息列表,信息包括:
gdID(编号),name(商品名),price(单价),number(购买数量)
privateArrayList
//添加商品
publicvoidadd(HashMap
booleanfound=false;
for(HashMap
goodsList){
if(gd.get("gdID").toString().equals(goods.get("gdID").toString())){
intnum=(Integer)gd.get("number");
gd.put("number",num+1);
found=true;
break;
}
}
if(!
found){
goods.put("number",1);
goodsList.add(goods);
}
}
//删除商品
publicvoiddelete(StringgdID){
for(HashMap
goodsList){
if(gd.get("gdID").toString().equals(gdID)){
goodsList.remove(gd);
break;
}
}
}
//清空购物车
publicvoidclearCart(){
goodsList.clear();
}
//获得商品清单
publicArrayList
returngoodsList;
}
}
两个接口的代码:
@Local
publicinterfaceCartBeanLocal{
publicvoidadd(HashMap
publicvoiddelete(StringgdID);
publicvoidclearCart();
publicArrayList
}
@Remote
publicinterfaceCartBeanRemote{
publicvoidadd(HashMap
publicvoiddelete(StringgdID);
publicvoidclearCart();
publicArrayList
}
(2)创建一个Web工程作为CartBean的客户端。
创建一个名为“cart”的Web工程,复制上边EJB3工程的中的本地接口文件(CartBeanLocal)——包括包名到本工程中。
创建几个JSP页面完成商品的购买(放入购物车)、查看购物车、清除购物车的功能。
index.jsp:
功能显示商品列表及添加到购物车的链接,代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@taglibprefix="c"uri="%>
<%
//下面代码模拟生成商品列表,各位可以通过数据库获取
ArrayList
gds=(ArrayList
if(gds==null){
gds=newArrayList
HashMap
tmp.put("gdID","sp0001");
tmp.put("name","新编大学英语教程");
tmp.put("price",23.5);
gds.add(tmp);
tmp=newHashMap
tmp.put("gdID","sp0002");
tmp.put("name","J2EE权威指南");
tmp.put("price",63.5);
gds.add(tmp);
tmp=newHashMap
tmp.put("gdID","sp0003");
tmp.put("name","太阳泪");
tmp.put("price",21.5);
gds.add(tmp);
tmp=newHashMap
tmp.put("gdID","sp0004");
tmp.put("name","新编大学文化教程");
tmp.put("price",28.5);
gds.add(tmp);
session.setAttribute("gds",gds);
}
%>
forEachitems="${gds}"var="gd"> gdID=${gd.gdID}">添加到购物车${gd.gdID} ${gd.name} ${gd.price}
forEach>
add.jsp:
将指定商品添加到购物车
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@pageimport="javax.naming.*,java.util.*,cn.bean.CartBeanLocal"%>
<%
CartBeanLocalcart;
cart=(CartBeanLocal)session.getAttribute("cart");
if(cart==null){
InitialContextctx=newInitialContext();
cart=(CartBeanLocal)ctx.lookup("CartBean/local");
session.setAttribute("cart",cart);
}
Stringgid=request.getParameter("gdID");
ArrayList
for(HashMap
gds){
if(gd.get("gdID").equals(gid)){
cart.add(gd);
}
}
response.sendRedirect("index.jsp");
%>
cart.jsp:
显示购物车中的商品列表
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@pageimport="javax.naming.*,java.util.*,cn.bean.CartBeanLocal"%>
<%@taglibprefix="c"uri="%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
<%
try{
CartBeanLocalcart;
ObjectcartTmp=session.getAttribute("cart");
if(cartTmp==null){
InitialContextctx=newInitialContext();
cart=(CartBeanLocal)ctx.lookup("CartBean/local");
session.setAttribute("cart",cart);
}
else{
cart=(CartBeanLocal)cartTmp;
}
ArrayList
pageContext.setAttribute("gdlist",goodsList);
}catch(NamingExceptione){
out.println(e.getMessage());
}
%>
forEachitems="${gdlist}"var="gd">${gd.gdID} ${gd.name} ${gd.price} ${gd.number}
forEach>
clearCart.jsp:
清空购物车
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@pageimport="javax.naming.*,java.util.*,cn.bean.CartBeanLocal"%>
<%
CartBeanLocalcart=(CartBeanLocal)session.getAttribute("cart");
cart.clearCart();
response.sendRedirect("cart.jsp");
%>
(3)部署
使用前面的无状态会话Bean的部署方法,在MyEclipse中直接部署本部分内容可能会不能正常运行,在此必须脱离MyEclipse将两个工程直接部署到独立的JBoss服务器中。
第一步:
将两个工程导出
a、导出EJB工程。
在工程列表中的MyEJB工程上点击右键,在弹出的快捷菜单中选择“
”,弹出如下对话框:
选择导出目标为“Java”->“JARfile”,点击“Next”按钮,显示如下:
所有选择使用默认值,在“JARfile”中指明导出JAR文件的路径;点击“Finish”按钮,完成导出。
b、导出Web工程
同EJB工程,在工程名上点击右键,在快捷菜单中选择“Export....”,在弹出的对话框中选择目标为:
“JavaEE”->“WARfile(MyEclipse)”,点击“Next”按钮,显示如下:
在“WARfile”中指明要导出的目标位置,点击“Finish”按钮完成导出。
第二步:
启动JBoss并进行部署
执行JBoss的安装目录中bin目录下的run.bat,启动JBoss。
在浏览器的地址栏中输入:
localhost:
8080,得到如下界面:
点击“AdministrationConsole”进入JBoss管理系统的登录界面,如图
Username和Password均为“admin”,登录进入管理界面如下图:
在左侧的栏目中选择“Applications”->“EJB3JARS”,部署EJB工程——MyEJB.jar,界面如图:
点击“Addanewresource”,得到如下界面:
点击“浏览...”选择上面导出的EJB工程的jar文件,然点击“Continue”按钮完成部署。
成功后可看到下图:
看到列表中出现了“MyEJB.jar”表示部署成功。
然后点击“Applications”中的“WebApplication(WAR)s”,看到如下图,进行Web工程的部署;
点击“Addanewresource”按钮,得到和部署EJB时相似的界面,选择要部署的Web工程的导出文件cart.war,并点击“Continue”按钮完成部署,最后看到如下图:
表示部署成功。
第三部:
测试
在浏览器地址栏中输入:
localhost:
8080/cart
4、扩展
1、为Web工程cart添加删除购物车中指定商品的功能。
2、将MyEJB和cart工程部署到两台服务器上。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验五 JNDI及会话Bean 实验 JNDI 会话 Bean