|
|
翻译:Smiling_Sundoc:宋黎松 当你开发企业级bean时,你可能会发现最好是在全面地装配应用程序并将其部署到产品应用服务器之前测试它们。出于此目的,你可以使用Sun Java System Studio IDE为bean生成一个J2EE应用,包括带有JavaServer
Pages IDE为你创建的对象被设计用于测试过程。它们并没有被计划部署在产品环境中。 你可以在任何数据库和应用服务器支持的情况下使用IDE的测试功能。下面的操作说明和示例将PointBase作为测试数据库,J2EE RI应用服务器(RI)作为测试服务器,Netscape Navigator作为web 浏览器。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
字段 |
输入值 |
|
Data Source JNDI Name |
jdbc/Pointbase |
|
Data Source Password |
PBPUBLIC |
|
Data Source UserName |
PBPUBLIC |
注意—在这个窗口中, 输入“Pointbase”时只有第一个字母大写。在你输入密码之后,按下“Enter”键 。
RI的两个缺省设置使服务器为被测试的bean创建一个表,并在测试完成之后删除这个表。如果你的bean必须从特定数据库表中获取有效数据,则应做以下修改:
3.点击SQL Deployment Settings(SQL部署设置)字段和省略号(…)按钮。
SQL Deployment Settings属性编辑器出现。
4.选择你打算测试的bean ,并清除下面两个选取框:
l Create table when deployed
l Drop table when undeployed
5.点击OK关闭EJB 模块的属性页。
6.通过File(文件)->Save All(全部保存)保存你的工作。
为启动PointBase数据库服务器,从主菜单中选择Tools(工具)->PointBase Network Server(PointBase网络服务器)->Start Server(启动服务器)。
与往常一样启动你的web浏览器。
你可能希望将这两个窗口最小化,但是在你完成你的测试工作之前不要关闭它们。
现在你已经准备就绪使用IDE的向导来提供EJB模块、web模块和应用程序,通过它们来测试你的企业级bean。
为你的企业级bean生成测试对象应遵循以下步骤:
1. 在Explorer窗口内,选择bean的逻辑节点,右键点击,然后选择Create New EJB Test Application(创建新的EJB测试应用)。
出现向导,显示出测试你的应用程序所有必备部件的缺省值。
注意—如果你右键点击一个bean之后,发现Create New EJB Test Application(创建新的EJB测试应用)菜单项被禁用,那么此bean可能没有远程接口。按照为bean添加远程接口中的操作说明再试一次。
注意Package(包)字段显示的是bean当前所在的包。你可以移动EJB模块,并通过在这些字段中输入其他包的名称来测试向导即将创建的应用程序对象。
在接下来的字段中,如果需要你还可以指定其他包和模块的名称。然而,如果你计划将测试功能即将生成的EJB模块替换为现存模块,就不要在这里指定现存模块。你可以在后面的操作过程中使用应用程序的属性窗口。
注意Application Server(应用程序服务器)组合框中的选项。你可以使用RI作为你的测试服务器,你也可以使用你已经指定的其它服务器作为你的缺省服务器。
2. 选中Auto Deploy(自动部署)选取框,或者让它空着。
如果你选中该选取框,那么一旦你在本向导中完成测试模块的创建,IDE就自动将此bean的测试模块部署到服务器上。如果你测试的bean能够独立运行并且不需要其它的bean配合它的工作,那么你可能希望采用此方式。
如果你让该选取框空着,那么在后续操作中你必须自己进行部署。如果你的bean需要与其它的bean一起进行测试,则应采用这种方式。
3. 点击OK生成EJB模块、web模块和应用程序,并且(如果可以)自动部署应用程序。
过程监视器可以报告模块生成和部署的进展情况。部署完毕时,在IDE的日志窗口中将出现一条信息。
假设你已经让向导将其生成的内容放在bean的包中,为bean生成的对象命名为Account,该对象位于名为Account_North的包内,如图9-1所示。
图 9-1 为企业级bean生成的测试对象示例
注意生成的对象已经被加入bean的包中:
l 一个逻辑上的web模块
l 一个包含被测试企业级bean的EJB模块
l 一个包含EJB模块和WEB模块的测试应用
除非你予以指定,否则在向导中IDE将实际的WEB模块(包括JSP页和helper java类)放在它自己的新文件系统中。
同时应注意向导创建了新的文件系统以包含web模块和测试中使用的其它对象。当你展开文件系统节点时,你将看到WEB模块是第一个子节点。如下所示,这个web模块包含了JSP页和helper java类。
你现在已经生成了基本的测试应用。如果你的bean引用了其它任何bean,那么按照以下步骤将它们添加到EJB模块:
4. 在Explorer窗口中,选中已经生成的EJB模块节点,右键点击,然后选择Add EJB(添加EJB)。
5. 在树视图中,导航至被引用的企业级bean,选中它,并点击OK。
被引用的bean被添加到EJB模块内,而且对该bean的引用也被添加到测试应用中。
对每个被引用的bean重复步骤4和步骤5。
现在,除非你在步骤2种选中了Auto Deploy(自动部署)选取框,否则你已经完成了将测试应用部署到服务器上的准备。或者,如果你愿意,你可以一步完成部署应用和执行应用。接下来的章节将介绍各种途径。
将测试应用部署到RI上,应采取以下操作:
1. 在Explorer窗口中,选中J2EE应用节点,右键点击它,选择Deploy(部署)。
过程监视器和输出窗口将报告部署的进度如何。例如,你看到一条消息,指出测试应用已经被部署到RI(这指的是作为localhost)上。
2. 通过打开J2EE 命令行窗口并查看是否出现“Application name_TestApp deployed.”语句以证实你的测试应用已被部署完毕。
提示—如果你的部署失败,请查看你是否将IDE设置为正确地运行J2EE RI。特别是,注意RI_Home属性是否被设置为你的J2EE_HOME值。
部署成功后,你可以按照执行测试应用中的步骤进行操作。
为了在将你的测试应用部署到服务器的同时执行测试应用,采取以下操作:
在Explorer窗口中,选中J2EE应用节点,右键点击,然后选择Execute(执行)。
过程监视器和输出窗口将报告部署和执行的进度如何。例如,你看到一条消息,指出应用服务器已经连接,企业级bean已经被部署到服务器(注意RI指的是作为localhost)上,wrapper和RMI-IIOP节点已被编译,服务器和客户端的JAR或JARS已经构造完毕,WEB服务器已经连接并请求运行测试应用,并且所有已生成的代码已经被保存。
当此步完成之后,web浏览器出现并打开了测试客户端,这是一个JSP页面,其中包含了用以测试企业级bean的图形用户界面(GUI)。图9-2提供了一个示例。
继续使用测试客户端测试你的bean(使用测试客户端测试你的bean)。
如果你没有选择一步执行测试应用的部署和测试应用的执行,那么你可以采取以下操作来测试你的企业级bean:
打开web浏览器并输入正确的URL。
如果你使用J2EE RI,那么URL具有以下格式:
http://localhost:port/application_name/
port是安装RI时你指定的端口号。
application_name是应用的名称。
测试应用的客户端,一个JSP页面,出现在浏览器中。
你可以按照测试客户端的JSP页面内的操作指示来创建企业级bean的实例,并调用它的事务方法。下一节将描述你如何测试一个名为dollarToYen的简单会话bean,它能够完成美元到日元的等值转换。(这个会话bean被放在Java包Converter中)
图9-2给出了由IDE为应用客户端创建JSP页面的一个示例,生成应用客户端的目的是为了测试会话bean的例子。
图9-2 为测试简单会话bean dollarToYen而生成的JSP页示例
如图9-2所示,测试窗口的内容如下:
1. 浏览器的URL字段显示了测试客户端的JSP页面所在的位置。客户端的URL由IDE的测试功能自动生成。如果你愿意,你可以使用此URL返回到这个测试窗口。
2. Stored Objects(存储对象)帧显示了在你的测试过程中IDE和你自己的操作所创建的对象列表,例如,当你调用了接口或bean类的方法时。到目前为止,只显示了home接口。
你可以通过使用Remove Selected(删除选择项)或Remove All(删除所有项)从Stored Objects(存储对象)列表中删除对象。
3. EJB Navigation(EJB导航)帧显示IDE已经生成的对象,以便你能够测试你的bean。如果你测试的bean引用了其他bean,而且你的EJB模块包含不止一个bean,那么这个帧按照逻辑顺序列出已创建的对象,也就是采用模块中的一个bean调用另一个bean的顺序。
在图9-2中的EJB Navigation帧中,你可以看到Converter.dollarToYenHome,这表示IDE已经创建了此会话bean的home接口。稍后,你将会点击这个home接口以创建并初始化会话bean的新实例。当你看到此帧中列出的对象不止一个时,你点击对象将焦点移至你希望测试的bean。当你点击对象时,应注意其它帧发生的变化。
4. 例如,The Results of the Last Method Invocation帧显示了你最近调用的方法及其参数。到目前为止,由于我们还没有开始测试会话bean,因此此帧中没有显示任何内容。
5. 帧的底部显示了你目前可用于测试的方法。当你将焦点置于bean的不同组件上时,此帧发生改变(见EJB Navigation帧)。
接下来我们将测试dollarToYen bean的home接口和business方法。
为了验证Converter.dollarToYenHome正确地创建了会话bean的实例,操作如下:
1. 在EJB Navigation帧中,点击home接口的名称。
2. 在帧的底部,点击home接口名下面的Invoke按钮。
此例中,你点击Converter.dollarToYenHome下面的Invoke按钮。
注意此页的帧发生以下变化:
l 在EJB Navigation帧中,bean的实例已经被添加进来。具体到本例中,此实例名为Converter.dollarToYen,后跟一个进程号。
l 在Stored Objects帧中,bean的实例已被添加至列表的顶部。
l 在Results帧中,bean的实例已被反映出来,包括不带参数的create方法被激活。
现在让我们来测试dollarToYen bean的business方法。
l 如下所示,在Results帧中显示了激活方法的结果(结果是12755日元,因为business方法包含了127.55日元兑换1美元的计算)和我们输入用于测试的参数(100美元)。
l 在Stored Objects帧中,栈包含了结果对象和参数对象。
你可以调用帧底部列出的其他任何bean方法。
当你通过激活bean的其他方法来创建对象时,该对象进而可用于测试bean。例如,到目前为止通过测试Converter.dollarToYen创建的对象也出现在组合框内,如下面的例子所示。你可以选择其中一个对象并创建一个新类以供测试。
警告—IDE生成一个EJB模块、一个web模块和一个J2EE应用,这些仅被设计用以测试你的企业级bean。最好不要修改生成的这些对象。如果你做出任何修改,你可能无法再次部署J2EE应用。
如果你测试的bean只具有本地接口,那么你在测试准备期间可以通过复制本地接口来创建远程接口。简而言之,如下所示使用现存的接口:
l 使用本地接口(Localbean_name)来创建相应的远程接口(bean_name)。
警告—不要试图采取此过程来向EJB 1.1 CMP实体bean添加EJB 2.0部件(比如本地接口或引用),EJB
1.1 CMP实体bean尚未完全按照Enterprise Javabean Specification的当前版本予以更新。由此产生的bean将无效而且无法修复。具体细节参见避免在旧版本的bean中使用新功能。
7. 关闭Customizer对话框。
8. 在Explorer中,展开bean的逻辑节点。展开Classes(类)节点,选取新的远程接口(其标签为Remote Interface Class),在源代码编辑器中打开它。
|
创建EJB组件 |
816-7864-10 |
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||