在逻辑bean中鼠标右击一个组件也会弹出上下文菜单,菜单中显示可用于该组件的特定的子操作集。例如,本地接口的上下文菜单中只提供增加新的create和find方法的操作。
在逻辑bean中鼠标右击一个组件也会弹出上下文菜单,菜单中显示可用于该组件的特定的子操作集。例如,本地接口的上下文菜单中只提供增加新的create和find方法的操作。而远程接口的上下文菜单只提供创建新的business方法的操作。
不使用逻辑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 生成的测试程序
结论
这篇文章描述了如何使用FORTE FOR JAVA企业版产品来进行EJB的开发,部署与测试,使整个过程更容易,以便我们把精力集中编写在bean的商务逻辑,这也是作为bean开发者的正务。这个目标是能够达成的,因为FORTE FOR JAVA企业版自动管理许多EJB的开发工作,例如保持本地与远程接口和bean 实现类之间的同步,生成需要的方法,保证正确的方法返回类型,等等。
开发完EJB后,FORTE FOR JAVA企业版可以一步完成组成bean的类与接口的编译。接着对已编译的bean打包和部署到符合J2EE规范的应用服务器上,最后,创建一个测试客户端。这个测试客户端可以从浏览器一端调用以测试该bean的逻辑。
查看本文来源