有状态会话Bean实验指导.docx
- 文档编号:26137515
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:17
- 大小:1,016.61KB
有状态会话Bean实验指导.docx
《有状态会话Bean实验指导.docx》由会员分享,可在线阅读,更多相关《有状态会话Bean实验指导.docx(17页珍藏版)》请在冰豆网上搜索。
有状态会话Bean实验指导
开发EJB2.X的有状态会话Bean
步骤1:
新建名为CountBean的J2EE1.4工程。
设置工程的源程序目录为src,目的目录output为bin。
步骤2:
在新建向导中,选择JBoss-IDE|EJBComponents|SessionBean创建会话Bean。
步骤3:
设置SessionBean的各种参数,点击Finish按钮,即可看到生成的EJB类框架代码。
其中各参数解释如下:
Sourcefolder:
源程序所在目录;
Package:
源程序的包名;
Name:
SessionBean类的类名;
Superclass和Interfaces:
取默认值即可;
SelectthetypeoftheEJB:
选择EJB的类型;
SelecttheaccessoftheEJB:
选择EJB的接口类型,会话Bean通常是Remote接口;
Whichmethodstubswouldyouliketocreate?
:
EJB类要实现的方法,应选择Inheritedabstractmethods
和ejbCreate()method生命周期方法。
步骤4:
在PackageExplorer中,利用EJB类的右键菜单添加商务方法。
步骤5:
设置Business方法的参数。
完整的CountBean.java代码如下:
packagecount;
importjava.rmi.RemoteException;
importjavax.ejb.EJBException;
importjavax.ejb.SessionBean;
importjavax.ejb.SessionContext;
importjavax.ejb.CreateException;
publicclassCountBeanimplementsSessionBean{
publicintval;
publicvoidsetSessionContext(SessionContextctx)
throwsEJBException,
RemoteException{
//TODOAuto-generatedmethodstub
System.out.println("setSessionContext()");
}
publicvoidejbRemove()throwsEJBException,RemoteException{
//TODOAuto-generatedmethodstub
System.out.println("ejbRemove()");
}
publicvoidejbActivate()throwsEJBException,RemoteException{
//TODOAuto-generatedmethodstub
System.out.println("ejbActivate()");
}
publicvoidejbPassivate()throwsEJBException,RemoteException{
//TODOAuto-generatedmethodstub
System.out.println("ejbPassivate");
}
publicvoidejbCreate(intval)throwsCreateException{
//TODOAuto-generatedmethodstub
this.val=val;
System.out.println("ejbCreate()");
}
publicintcount(){
//TODOAuto-generatedmethodstub
System.out.println("count()");
return++val;
}
}
步骤6:
分别建立对应于Remote接口和Home接口的java接口文件。
Remote接口代码如下:
packagecount;
importjavax.ejb.EJBObject;
importjava.rmi.RemoteException;
publicinterfaceCountextendsEJBObject{
publicintcount()throwsRemoteException;
}
Home接口的代码如下:
packagecount;
importjavax.ejb.EJBHome;
importjavax.ejb.CreateException;
importjava.rmi.RemoteException;
publicinterfaceCountHomeextendsEJBHome{
publicCountcreate(intval)throwsCreateException,RemoteException;
}
结构如下:
步骤7:
在工程下建立Count子目录,作为没有打包的EJB模块。
在Count子目录下,再新建count目录。
步骤8:
把bin目录中自动编译生成的class文件导入到count子目录下。
步骤9:
在Count子目录下建立META-INF子目录,并建立ejb-jar.xml和jboss.xml配置文件。
ejb-jar.xml代码如下:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" jboss.xml代码如下: xmlversion="1.0"encoding="UTF-8"? > 步骤10: 在项目CountBean下建立一个ant的XML文件packaging-build.xml。 在packaging-build.xml的右键菜单上执行ant命令,打包生成jar文件。 packaging-build.xml代码如下: xmlversion="1.0"encoding="UTF-8"? > 压缩完成提示信息如下: 目录结构如下图: 步骤11: 启动jboss服务器,显示界面如下: 把打包生成的Count.jar文件拷贝到C: \jboss-4.0.4.GA\server\default\deploy路径下(不同机器,安装路径不同),jboss服务器如果成功部署该Count组件,则显示如下所示信息: 步骤12: 在新建向导中,利用向导JBoss-IDE|EJBTestClient建立EJB客户机程序。 步骤13: 设置EJB客户机的各种参数。 客户机代码如下: packagecount; importjunit.framework.TestCase; importjava.util.Hashtable; importjavax.rmi.PortableRemoteObject; importjavax.naming.Context; importjavax.naming.InitialContext; publicclassTestCountextendsTestCase{ publicTestCount(){ super(); } protectedcount.CountHomehome; protectedContextgetInitialContext()throwsException{ Hashtableprops=newHashtable(); props.put( Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put( Context.URL_PKG_PREFIXES, "org.jboss.naming: org.jnp.interfaces"); props.put(Context.PROVIDER_URL,"jnp: //localhost: 1099"); Contextctx=newInitialContext(props); returnctx; } protectedcount.CountHomegetHome()throwsException{ Contextctx=this.getInitialContext(); Objecto=ctx.lookup("Count"); count.CountHomeintf=(count.CountHome)PortableRemoteObject.narrow(o,count.CountHome.class); returnintf; } protectedvoidsetUp()throwsException{ this.home=this.getHome(); } publicvoidtestCount(){ try{ Countcount[]=newCount[5]; intcountVal=0; System.out.println("InstantiatingBeans..."); for(inti=0;i<5;i++){ count[i]=this.home.create(countVal); countVal=count[i].count(); System.out.println(countVal); Thread.sleep(500); } System.out.println("Callingcount()onBeans..."); for(inti=0;i<5;i++){ countVal=count[i].count(); System.out.println(countVal); Thread.sleep(500); } for(inti=0;i<5;i++){ count[i].remove(); } }catch(Exceptione){ e.printStackTrace(); } } } 步骤14: 运行客户机程序TestCount.java。 出现错误信息是因为设置Contex的类没有找到。 因为根据JBoss文档,Client目录的类库是专门为运行客户机程序设立的。 简单的解决办法就是添加JBoss的Client目录下的所有类库到工程的路径中。 步骤15: 在工程的右键菜单中点击Properties命令,打开工程的属性窗口。 在属性窗口中,选择JavaBuildPath中的Libraries选项卡。 步骤16: 点击AddExternalJARs按钮,选择JBossClient目录下的所有jar文件。 回到属性窗口如下: 步骤17: 再次右键菜单|RunAS|JunitTest命令运行客户机程序TestCount.java。 若测试成功,结果如下: 若测试成功。 JBoss服务器的日志如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 状态 会话 Bean 实验 指导