




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五 JNDI及会话Bean实验内容学习JNDI的概念及使用学习会话Bean的编写、部署及调用学习JBoss的配置实验目的了解JNDI使用方法掌握会话Bean的编写、部署及调用方法掌握有状态Session Bean与无状态Session Bean的区别环境要求服务器:JBoss6.0以上集成开发环境:myEclipse 8.5 或更高实验指导1、 在MyEclipse中配置JBoss) 下载JBoss-6.0.0.CR1,并解压;) 添加环境变量“JBoSS_HOME”为JBoss的安装目录) 启动myEclipse,在下方的“Server”选项卡中点击右键,在快捷菜单中选择“Configuer Server Connector”,打开如下对话框:) 在左侧列表中选择“Servers”列表中的“JBoss”-“JBoss v6.x”,然后在右侧面板中的“JBoss server”中选择“Enable”,并在“JBoss home directory”中指明你JBoss的安装目录。然后点击“ok”按钮。2、 JNDI的使用) 在JBoss下绑定将资源绑定到JNDI。i. 创建一个“Web Project”工程名为“jndi”。JNDI Demoii. 创建一个JSP页面“index.jsp”,并编写如下内容:iii. 将此工程发布到JBoss上,然后启动JBoss。iv. 打开另一个浏览器窗口,访问一次刚发布的jdni的index.jsp页面,若看到“绑定成功. ”,表示JNDI名已经绑定成功。) 通过JNDI查询并引用绑定对象i. 创建一个“Java project”工程,工程名为“jndiClient”。ii. 在工程名上点击右键,在弹出的快捷菜单中选择“Build Path”-“Configure Bulid Path”,弹出如下对话框:点击“Add External JARS.”按钮,将JBoss安装目录中“client”目录中的所有Jar文件添加(jndi的客户端类库)。import javax.naming.*;import javax.swing.*;import java.util.*;public class Client public static void main(String args) throws ExceptionHashtable ht = new Hashtable();/设置上下文类工厂ht.put(Context.INITIAL_CONTEXT_FACTORY,erfaces.NamingContextFactory); /设置JNDI服务提供者地址ht.put(Context.PROVIDER_URL,jnp:/localhost:1099);/创建JNDI上下文Context ctx = new InitialContext(ht);/通过JNDI绑定名查询绑定对象JFrame jWin = (JFrame)ctx.lookup(testName);jWin.setBounds(20,20,400,300);jWin.setVisible(true);iii. 添加一个类“Client”,代码如下:iv. 运行上面代码,应该看到如图窗口:3、 编写会话Bean) 无状态会话Beani. 创建一个“EJB Project”工程“MyEJB”,界面如下图。“Persistence Configuration”选择“None”,然后点击“Finish”按钮。ii. 创建一个包:“cn.bean”用于保存EJB的类和其对应的接口文件。iii. 创建一个叫SayHi的“EJB3 Session Bean”,如下图:选中“Create Interface”的“Local”和“Remote”,即为此类创建远程接口和本地接口,对应类文件为:SayHiLocal.java和SayHiRemote.java。“Session Type”(会话类型):Stateless(无状态会话Bean)。SayHiLocal内容package cn.iface;import javax.ejb.Local;Local /指定接口为本地调用public interface SayHiLocal public String sayHi(String name);SayHiRemote内容:package cn.iface;import javax.ejb.Remote;Remote /指定接口为远程调用public interface SayHiRemote public String sayHi(String name);iv. 两个接口内容如下:package cn.bean;import javax.ejb.Stateless;import cn.iface.SayHiLocal;import cn.iface.SayHiRemote;Stateless /注解,此Bean为无状态会话Beanpublic class SayHi implements SayHiLocal, SayHiRemote public String sayHi(String name) return name +欢迎你进入EJB世界!;v. 编写会话类:SayHi,并实现以上两个接口。其内容如下:vi. 部署EJB:在前面创建的JBoss Server的图标上点击右键,在弹出的快捷菜单中选择“Add Deployment.”,弹出对话框如下图:在“Project”中选择当前工程“MyEJB”。vii. 启动JBoss。) 编写远程客户端i. 创建一个“Java Project”工程,名为“EJBClient”。ii. 编辑“Build Path”将JBoss目录中Client中的所有的JAR包添加到工程的类路径上。iii. 编辑“Build Path”,在“Projects”选项卡中将“MyEJB”工程添加的列表(如图),或复制上面EJB工程中的远程接口文件SayHIRemote包括整个包,到本工程中。import java.util.*;import javax.naming.*;import cn.iface.*;public class Client public static void main(String args) Hashtable ht=new Hashtable(); ht.put(java.naming.factory.initial,erfaces.NamingContextFactory);ht.put(vider.url,localhost:1099);Context ctx;try/创建上下文环境 ctx = new InitialContext(ht);SayHiRemote s =(SayHiRemote)ctx.lookup(SayHi/remote);System.out.println(s.sayHi(Tome); catch(Exception e)e.printStackTrace();) 创建一个类Client,代码如下:2)有状态会话Bean(1)编写一个有状态会话Bean完成购物车的功能。新建一个名叫“CartBean”的EJB3 Session Bean,对话框如下:CartBean类的代码如下:package cn.bean;import java.util.ArrayList;import java.util.HashMap;import javax.ejb.Stateful;Stateful(mappedName=cart)/指明JNDI名为cartpublic class CartBean implements CartBeanLocal, CartBeanRemote /商品信息列表,信息包括:gdID(编号),name(商品名),price(单价),number(购买数量)private ArrayListHashMap goodsList = new ArrayListHashMap();/添加商品public void add(HashMap goods)boolean found = false;for(HashMap gd:goodsList)if(gd.get(gdID).toString().equals(goods.get(gdID).toString()int num = (Integer) gd.get(number);gd.put(number, num + 1);found = true;break;if(!found)goods.put(number, 1);goodsList.add(goods);/删除商品public void delete(String gdID)for(HashMap gd:goodsList)if(gd.get(gdID).toString().equals(gdID)goodsList.remove(gd);break;/清空购物车public void clearCart()goodsList.clear();/获得商品清单public ArrayListHashMap getGoodsList()return goodsList;两个接口的代码:Localpublic interface CartBeanLocal public void add(HashMap goods);public void delete(String gdID);public void clearCart();public ArrayListHashMap getGoodsList();Remotepublic interface CartBeanRemote public void add(HashMap goods);public void delete(String gdID);public void clearCart();public ArrayListHashMap getGoodsList();(2)创建一个Web工程作为CartBean的客户端。创建一个名为“cart”的Web工程,复制上边EJB3工程的中的本地接口文件(CartBeanLocal)包括包名到本工程中。创建几个JSP页面完成商品的购买(放入购物车)、查看购物车、清除购物车的功能。index.jsp:功能显示商品列表及添加到购物车的链接,代码如下: My JSP index.jsp starting page % /下面代码模拟生成商品列表,各位可以通过数据库获取 ArrayListHashMap gds; gds = (ArrayListHashMap)session.getAttribute(gds); if(gds = null) gds = new ArrayListHashMap(); HashMap tmp = new HashMap(); tmp.put(gdID,sp0001); tmp.put(name,新编大学英语教程); tmp.put(price,23.5); gds.add(tmp); tmp = new HashMap(); tmp.put(gdID,sp0002); tmp.put(name,J2EE权威指南); tmp.put(price,63.5); gds.add(tmp); tmp = new HashMap(); tmp.put(gdID,sp0003); tmp.put(name,太阳泪); tmp.put(price,21.5); gds.add(tmp); tmp = new HashMap(); tmp.put(gdID,sp0004); tmp.put(name,新编大学文化教程); tmp.put(price,28.5); gds.add(tmp); session.setAttribute(gds,gds); % 商品列表 商品编号 商品名称 单价 操作 $gd.gdID $ $gd.price 添加到购物车 查看购物车 add.jsp: 将指定商品添加到购物车%CartBeanLocal cart;cart = (CartBeanLocal)session.getAttribute(cart);if(cart = null)InitialContext ctx = new InitialContext();cart = (CartBeanLocal) ctx.lookup(CartBean/local);session.setAttribute(cart,cart);String gid = request.getParameter(gdID);ArrayListHashMap gds = (ArrayListHashMap)session.getAttribute(gds);for(HashMap gd:gds)if(gd.get(gdID).equals(gid)cart.add(gd);response.sendRedirect(index.jsp);%cart.jsp: 显示购物车中的商品列表 Insert title here%try CartBeanLocal cart;Object cartTmp = session.getAttribute(cart);if(cartTmp = null)InitialContext ctx = new InitialContext();cart = (CartBeanLocal) ctx.lookup(CartBean/local);session.setAttribute(cart,cart);elsecart = (CartBeanLocal)cartTmp;ArrayListHashMap goodsList = cart.getGoodsList();pageContext.setAttribute(gdlist,goodsList); catch (NamingException e) out.println(e.getMessage();% 商品列表 商品编号 商品名称 单价 数量 $gd.gdID $ $gd.price $gd.number 清空购物车clearCart.jsp:清空购物车(3) 部署使用前面的无状态会话Bean的部署方法,在MyEclipse中直接部署本部分内容可能会不能正常运行,在此必须脱离MyEclipse将两个工程直接部署到独立的JBoss服务器中。第一步:将两个工程导出a、 导出EJB工程。在工程列表中的MyEJB工程上点击右键,在弹出的快捷菜单中选择“”,弹出如下对话框:选择导出目标为“Java”-“JAR file”,点击“Next”按钮,显示如下:所有选择使用默认值,在“JAR file”中指明导出JAR文件的路径;点击“Finish”按钮,完成导出。b、 导出Web工程同EJB工程,在工程名上点击右键,在快捷菜单中选择“Exp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电信运营商招聘技术岗位模拟题及参考答案
- 免疫细胞技术临床应用规范
- 腹膜透析的护理
- 田园四季歌课件
- 新解读《GB-T 36778 - 2018燕麦花叶病毒检疫鉴定方法》
- 用表格表示变量关系课件
- 升国旗作文教学课件
- 新解读《GB-T 22048-2022玩具及儿童用品中特定邻苯二甲酸酯增塑剂的测定》
- 2025年建筑工程管理与实务一级建造师考试冲刺押题卷
- 生活安全知识培训方案课件
- 并购贷款业务培训
- 维护新疆稳定 实现长治久安课件
- 北京大学人民医院-医疗知情同意书汇编
- 档案管理员述职报告9篇
- 舞台灯光基础知识教学课件
- 建设集团有限公司安全生产管理制度汇编
- 牙体牙髓病最全课件
- 交通信号控制系统检验批质量验收记录表
- 疫苗运输温度记录表
- 各国钢材-合金牌号对照表
- 医院定岗定编要点
评论
0/150
提交评论