本文描述了Forte for Java企业版3.0和java 2.0 平台、以及与J2EE兼容的服务器和容器一起,为开发者提供了一个建造端对端(end-to-end)Java应用程序的强大的环境。在本文中,我们将集中介绍使用Forte for Java企业版开发企业JavaBean(Enterprise JavaBeans简称EJB)应用程序。
简介
Sun ONE(Sun Open Net Evironment)开放网络环境作为Sun公司发布的网络服务战略,为企业提供创建、装配和配置Web的服务。Sun ONE框架包括很多工具和技术,例如Forte for Java和Forte ESP,创建(create)、装配(assemble)、集成(integrate)和分发(distribute)这些Web服务给最终用户。Forte for Java基于开放式架构,设计成容易和其他工具集成,诸如Macromedia Dreamweaver与Adobe GoLive等网页设计工具和包括ISV等开发的应用服务器(Application Server)等软件。
Forte工具向导包括了许多向导和特性,为开发者自动完成了许多细节性工作。
本文着重介绍了Forte for Java企业版在EJB开发方面的特性,以及如何有效的利用这些特性。利用Forte for Java 企业版工具向导可以开发、配置和测试符合EJB 1.1规范的EJB(注:Forte for Java企业版将在下一个版本中支持EJB 2.0规范)。简言之,Forte for Java 企业版提供的EJB开发主要包括了以下的特性和优点:
提供开发会话bean(session bean)(有状态的或无状态的皆可)和实体bean(entity bean)的模板。
包括 bean管理存储(bean-managed persistence简称BMP)和容器管理存储 (container-managed persistence简称CMP)。
生成需要的界面和类---bean的本地接口(home interface),远程接口(remote interface)和实现类(implementation class)。
通过"logical" bean来协调与简化bean的开发。
可以用来检查bean是否遵循EJB 1.1 规范。
自动将这些bean打包在一个EJB的 JAR文件中。
通过标准的部署(deployment )API 实现应用服务器的集成,使bean的开发更快捷。
通过采用工具向导并生成一个bean的JSP 测试客户端,简化了bean的测试过程。
Forte for Java 企业版的关键特性是它侧重于EJB的开发、部署、测试周期。它关心的是bean开发过程中的大部分的'杂务活'以及其他的一些工作。例如:
自动生成必要的界面。
包含了必要的方法的实现。
帮助建立EJB的字段。
能提示或直接插入所有方法必要的参数、返回类型和异常。
编译bean一步完成。
对已编译的bean进行应用服务器打包和部署的工作也是一步完成。同时FORTE FOR JAVA企业版能为bean创建测试客户端。这个测试客户端可以从浏览器一端调用以测试该bean的功能。
开发EJB
EJB是一种用于商务过程(business processes)和商务数据(business data)建模的强大的组件。EJB开发者,通常也就是个人或某公司商务系统的专家,他们更适合把精力集中在bean的商务逻辑的实现上,而让EJB容器和J2EE平台来处理企业运算当中的非商务逻辑的部分(如远程访问,事务处理,安全等)。尽管如此,开发EJB绝不仅仅是单纯编写商务方法这么简单。
首先,开发EJB需要正确设置开发环境,才能把bean的组件部署到应用服务器上。其次,需要创建构成EJB的不同组件,并根据bean类型的不同,这些组件必须包含特定的方法。一旦开发了bean,就必须把这些bean部署到操作环境中。最后,应该通过客户端或测试程序来对这些bean进行验证。
设置开发环境
Forte for Java企业版为开发者提供了用于设置开发环境的工具和向导。开发EJB就意味着要与数据库打交道,显然相应地,就要能访问J2EE应用服务器和数据库服务器。Forte for Java 企业版使开发者们能在集成开发环境(IDE)里进行这项设置工作。在这里使用Forte for Java企业版命令,可以安装数据库驱动程序,建立与基础数据库的连接。该IDE 还能帮助开发者配置和运行应用服务器,运行必要的数据库服务器等等。
作为一个例子,图1显示了如何从FORTE FOR JAVA企业版浏览窗口中启动J2EE 引用实现(Reference Implementation,简称RI)应用服务器的一个实例。图片下方的输出窗口则显示了服务器的启动信息。
图1:启动缺省的应用服务器
假若您需要定义一个实体bean来建模一个已存在的数据库,可以利用FORTE FOR JAVA企业版非常方便地将数据库的表映像到这个新的bean中,一旦启动了数据库服务器并且已经建立了连接,你就可以在IDE 里显示这个数据库表,表中的列,定义视图和过程。反过来你也可以在IDE 里将某实体bean及其字段映像到某数据库表和表中的列。如果你选择容器管理存储的方式,你既可以用其中的属性对话框窗口去映像bean的存储字段,也可以手工定义这些字段。
在项目中采用FORTE FOR JAVA企业版的工具并不会限制你只能在它的IDE 里开发该项目所有的EJB。FORTE FOR JAVA企业版允许将在其他地方开发的EJB也集成进来。使用项目管理的功能,我们可以引入已存在的个别bean乃至整个包。
创建EJB组件
开发EJB时必须遵守某些规定--- 不管是会话或实体bean,都是由三个接口和类组成的:一个本地接口,一个远程接口,一个实现类。并且,这些接口与类必须包含需要的方法,方法要以特定的方式命名,有特定的返回类型,异常,诸如此类。
FORTE FOR JAVA企业版在许多方面简化了EJB的开发。由向导在开发过程中一步步的指引,向导不仅会显示当前处于开发过程的那个阶段,而且可以提示接下来的步骤。选择的选项不同,接下来的步骤提示相应会改变。
定义一个新的EJB
假设需要为一个应用程序创建多个EJB,首先我们会为这个应用程序新建一个包,以便把所有的bean都集中到一起。接着,在浏览窗内用鼠标右击包的名字,从弹出的上下文菜单(context menu)中选择要放置在包中的组件的所属类型的模板。例如,JSP, Java Servlet, JavaBeans, EJB 等。出于本文的需要,我们选择EJB组件中的会话bean,而不是实体bean。
选择EJB组件后,不管是会话bean还是实体bean,模板向导都会一步步指引我们创建特定的组件。图2显示了创建有状态会话bean时的向导屏幕。
图2:有状态会话bean的向导窗
在创建实体bean的向导中提供一个选项用于指定采取bean管理存储还是容器管理存储。一旦指定了实体bean的存储管理方式,向导会自动依据选择结果提示下一步的信息。
bean管理存储选项意味着开发者自行提供存储代码,这种情况下需要附加一步,也是唯一的一步就是指定bean的实现类与接口。若选择容器管理存储,向导会引导你完成附加的定义和映像存储字段的工作。如果实体bean建模的是已存在的数据库表,我们可以选择这个表,将bean字段映像表的列。另外也可以手工指定存储字段,或对于已存在的bean可以从它的主键Java类选择。
实现bean
确定bean类型之后,IDE 会生成组件必须包含的本地接口,远程接口和 bean的实现类。并且,这些接口与类又包含了所有需要的方法,(例如 ejbLoad, ejbStore, ejbActivate, ejbPassivate方法) 、上下文相关(context-related)的方法,以及create, find, and remove方法。这样有助于开发者将精力集中于实现bean的商务逻辑上。
为了进一步方便bean的开发过程,FORTE FOR JAVA企业版提供逻辑EJB(logical Enterprise JavaBeans).在浏览窗口中逻辑EJB用图标 表示,它为所有bean提供一个完整协调的视图,包括他们的接口,字段,方法等。由于bean的接口和实现紧密相连,使同一个方法在各处保持一致是很重要的。例如,如果在一个会话bean的home接口声明create方法,那就必须在实现类中提供相应的ejbCreate方法。在bean的remote接口声明的商务方法必须在bean的类中正确实现。
EJB的逻辑视图保证了FORTE FOR JAVA企业版自动保持bean的所有的相关组件之间的同步。FORTE FOR JAVA企业版很灵活,它不但可以直接加工单个的组件,例如实现类或远程接口,也可以通过逻辑视图(logical view)集体进行。两种方式下,IDE 都能保证其中的协调性。举例来说,FORTE FOR JAVA企业版可以保证一个新方法,不论是从bean的逻辑视图还是它的远程接口处定义的,都会在bean的类里正确地显示出来。如果你想在bean的类里包含一个方法,却不想让此方法在远程接口中显示出来的话,务必直接将此方法添加到bean的实现类中。这样处理的方法是不会自动加入远程接口的。
图3展示了一个实体bean产品逻辑EJB,还有home接口、remote接口还有beans类。这里的逻辑EJB,即Product.entejb在浏览器窗口中展开了。由此可以看出,从逻辑EJB可以访问bean类和它的两个接口。也可以看见实体bean的create, find, 和 business 方法,以及它的容器管理存储的字段。另外,鼠标右击bean的逻辑名将弹出包含可执行操作的上下文菜单(如图3所示)。菜单中可执行的命令例如:察看部署描述符(deployment descriptor),验证(validate)和编译bean的所有类与接口,创建新方法(包括create, find, and business方法),生成EJB模块,创建测试程序。
图 3: 使用一个逻辑 Enterprise Bean