不使用逻辑bean也可以直接加工bean的接口与类。例如,在需要创建bean的类与接口的子类,或是将其映射到数据库表时你可能希望直接去编辑它,或单独对某个类或接口进行编译。
在定义bean的新的方法或字段的过程时,会有对话框引导你。这些对话框会提示输入方法或字段的名称,字段的类型,方法的返回类型,所有的方法参数及其类型,所有除了EJB必要的异常外的附加异常(必要的异常已经缺省添加了)。IDE 会在bean的类,远程或本地接口处加入正确的方法签名。图4展示了创建一个新的商务方法时的对话框。
Figure 4: 创建一个商务方法
如何编写方法的实现:首先,在FORTE FOR Java企业版资源编辑器(Source Editor)窗口中打开bean的实现类,接着,找到方法声明,敲入代码。注重ForteJava企业版把Java保留字用兰色显示。另外,编译bean时如有编译错误将用红色标出。
Bean的引用(reference),诸如EJB引用,环境表项(environment entries),资源构造引用(resource factory references),安全角色引用(security role references)等皆可以在属性编辑器(Property Editor)中的References 标签内指定。在这里可以添加,编辑和删除这些引用和环境表项。References标签如图5所示。
Figure 5: 属性编辑器中的References 标签
验证和编译EJB
Forte for Java企业版包含一个验证EJB(Validate EJB)命令和编译所有EJB的类的命令。验证类似于编译。执行Validate EJB时,Forte for Java企业版会检查bean的类是否正确遵守J2EE规范。源代码中的错误被提亮显示,必须予与更正。
除了可以编译或验证单个的bean组件之外,也可以通过企业版的逻辑bean窗口,使用单条命令就编译或验证所有组件。浏览器窗口中标明了哪些bean需要编译,哪些bean已经成功编译了。其中bean的接口与类用一连串的点加以标记的表示需要编译。如图6中,名为ProdUCt 和MySession的bean它们的类、远程接口与本地接口都需要进行编译(注重逻辑bean旁没有这些标记)。相比之下, bean CustomerTbl没有这种标记,表示它已经成功编译了。
Figure 6: 浏览器窗口中bean的编译标记
打包与部署
编译之后,EJB类就可以打包到需要的JAR文件、创建一个EJB模块,然后部署到J2EE应用服务器。使用Forte for Java企业版,不仅可使打包与部署过程缩减到一步,而且IDE 还能生成测试程序---一个jsp客户端,可以从浏览器调用它来测试bean。
在打包EJB和创建EJB模块之前,任何有bean的开发者指定的EJB引用都需要人工解析(resolve)。测试客户端应用程序不能自动处理含有EJB引用的EJB模块的打包。EJB引用使从特定的EJB模块的属性编辑器里解析的。
在组装(assembly)过程中,bean的开发者指定的引用和环境表项可以被EJB模块上执行的操作覆盖(overridden)。EJB模块的部署描述符也可以人工编辑。假如覆盖了表项或引用,新的值将只应用于引用此EJB的模块。也就是说,并不会影响为EJB设置的初始值。假如同一个EJB也包含在另一个EJB模块中,则后一个EJB模块将引用bean的初始环境表项和引用值。一个EJB模块的覆盖过程如图7所示。
Figure 7: 覆盖一个 EJB 引用
EJB模块通过在一系列被引用的java类上执行传递性关闭(transitive closure)来协助bean的打包。传递性关闭在编译时会算出一个类中所有可识别的类引用。这样做的目的是减轻组装器维护所有被引用的类的负担。结果,组装器只需要维护被动态引用的类就行了。
解析bean的EJB引用之后,就可以鼠标右击逻辑bean来完成它的打包和部署。然后从上下文菜单中选择创建EJB测试程序的选项。IDE 将会提示你指定要部署应用的应用服务器。这个过程可以随意分解成几个步骤:例如,可以使用命令:New EJB Module(创建新的EJB模块)将bean的类打包到一个EJB模块中,接着在此模块上调用部署的操作,然后再创建它的测试程序。
为了使部署功能起作用,在此之前必须从IDE 的Server Registry(服务器注册)里选择缺省服务器。Server Registry列出你的系统上所有可用的服务器。同时还必须创建服务器的一个实例,启动服务器进程。
尽管J2EE应用服务器的部署过程一般是一致的,每一种应用服务器却都有自己的部署方式。目前,J2EE平台正在定义一个标准的服务器部署API。此API通过提供标准的在与J2EE相兼容的应用服务器上部署EJB的方法,将会增加EJB在J2EE应用服务器的可移植性。
鉴于服务器API有望成为一种平台标准,FORTE FOR JAVA企业版提供了一个可以插入应用服务器软件的服务器API。该服务器API包含了整个部署过程,从而实现FORTE FOR JAVA企业版对部署过程的标准化。应用服务器厂商可以向该API提供他们自己的插件。基于特定的应用服务器,每个插件的兼容性有所不同。这些插件在FORTE FOR JAVA企业版开发环境和每个支持J2EE的服务器间运行。他们实现服务器API,将各个服务器的部署过程与FORTE FOR JAVA企业版集成在一起。图8示描述了这个结构。
Figure 8: 应用服务器部署插件
指定了即将使用的应用服务器,FORTE FOR JAVA企业版就会自动插入相应的服务器API,好预备部署EJB。从开发者的角度看,不管使用哪一种服务器,开发过程都很简单,直截了当。因为FORTE FOR JAVA企业版懂得不同的服务器之间部署上的差别,它可以自动处理好这些差别。
测试 bean
Figure 9: Generating a Test Application
在成功部署这些bean之后,FORTE FOR JAVA企业版会为bean创建一个EJB和一个Web模块,以及bean的测试程序。其中EJB模块包含已编译的EJB类。Web模块则包含测试客户端的JSP(Java Server Pages)。要测试bean时,只需简单地在浏览器内调用测试程序即可。
例如,在部署会话bean MySession时,FORTE FOR JAVA企业版会创建EJB模块:ySession_EJBModule, Web模块:MySession_WebModule,和测试程序:MySession_TestApp。如图9所示。
在浏览器窗口内输入URL来测试应用程序,如以下所示:
http://server:8000/test application
(其中server是我们的web服务器的名称,test application则是开发环境中创建的测试程序的名称。例如:MySession_TestApp)
通过浏览器视图可以访问本地和远程接口的实例,从本地接口开始。接口中的方法可以被调用。例如,用create方法来创建远程接口的一个实例。方法需要的任何参数都可由浏览器中输入,它则会显示方法的返回值。这个视图还会保留测试会话中创建的一系列对象。比如,图10显示的是运行MySession_TestApp时浏览器内显示的测试页面。
Figure 10: 在浏览器中使用IDE 生成的测试程序
标签: