7. Using XDoclet EJB Facilities
在继续Trader EJB 开发过程的第二过程前,我们需要介绍配置和使用XDoclet EJB功能。采用XDoclet技术的好处是标签处理器能够分析标注有XDoclet信息的源代码文件和生成独立的源文件和配置资源。XDoclet 依赖于一个 ANT 脚本来指定他的执行环境和代码生成任务。一个XDoclet 标签由注释模型组成,此模型映射1或多个注释同ANT子任务交互。MyEclipse允许你去配置和定制子任务来执行和它的默认操作值。
默认的, MyEclipse EJB 工程不是自动配置使用XDoclet功能的。这部分展示着几步骤,使用和配置XDoclet 支持的firstejb EJB 工程和执行源于Trader EJB 依赖的源代码和部署组件XDoclet代码生成。
我们开始通过添加标准的 EJB XDoclet配置给firstejb 工程。这部分最后的目标是产生XDoclet配置,它将用于产生ANT脚本用于MyEclipse执行生产附加EJB部署TraderEJB而所需文件。
7.1.1 Basic EJBDoclet Configuration
- 打开MyEclipse工程属性页。右键单击firstejb 工程在包浏览视图然后选择Properties > MyEclipse-XDoclet (查看图8)
Figure 8. MyEclipse-XDoclet configuration page
- 选择 Add Standard 按钮.
- 选择 Standard EJB 配置然后OK 如图 9.
附加的重新配置XDoclet 模块由MyEclipse所提供,你可以创建你自己的自定义的XDoclet配置。完整自定义XDoclet模块的过程超出了本文档的范围。
Figure 9. Adding Standard EJB configuration
一旦Standard EJB模块已经被添加到列表中,用鼠标选择它来显示这个doclets的内容。注意ejbdoclet 出现在左手列表的下边。子doclets 在ejbdoclet 包含的下边,包含需要的和可选的子任务。许多子任务对于一个如Trader EJB这样的简单的无状态的绘话Bean都不可用。
Figure 10. Default subtasks for Standard ejbdoclet
- 删除不需要的子任务通过右击每个子任务,他们都在左部底下面板,然后选者Remove.
- 继续这一过程直到剩下如图11所示的字任务。在配置中的每一项重新描绘EJB XDoclet 子任务。有一个链接详细说明@ejbdoclet 和它的子任务,在Resources 部分.
- (可选的)如果一个非默认的源文件夹在工程创建时被指定,以一定要更新工程相关路径属性通过元素ejbdoclet > destDir, deploymentdescriptor > destDir 和 fileset > src 任务. 选择每个这些元素在左部下面的面板,那么回顾修改这些各自的属性在右下部分的面板。
Figure 11. XDoclet EJB subtasks required by Trader EJB
- 通过在Build 页中选择来配置这个工程的XDoclet 的编译文件规则。
注意: 如果这时一个新建的工程,编译规则被设置成默认的规则,那么你可以跳到第9步。
选择Use dynamic build specification 规则如图12所示。
如果你用一个已存在的项目而它已包含XDoclet 配置,那么你可以选择删除不需要的 xdoclet-build.xml 文件。它将不再需要。关于这点规则更加详细的说明请看表2。默认的新的工程被设置使用dynamic build policy. 你可以须改默认设置通过 Window > Preferences > MyEclipse > XDoclet > Build 属性页。
Figure 12. XDoclet Build File Policy Configuration
表 2 - Description of XDoclet build policies
Field | Description |
用动态编译规范 [推荐] | 指示XDoclet处理过程为动态的说明它的编译规范,这个规范是直接来自于项目的XDoclet 配置属性。没有xdoclet-build.xml 文件被创建或被需要。这项规则是被推荐的因为当枪的工程的编译环境是常常被使用。 |
用 xdoclet-build.xml 文件 | 指明MyEclipse-XDoclet 属性惯例为生成一个新建的xdoclet-build.xml 这发生在一个工程的XDoclet 配置属性被跟新和保持时,并且XDoclet 使用这个xdoclet-build.xml 文件在代码生成过程中。警告:一个工程的xdoclet-build.xml 文件将被当此工程的XDoclet 配置信息被修订时产生的新版本覆盖。这条原则仅仅用在你必须手动管理xdoclet-build.xml 文件时。 |
- 选择 OK .
在完成XDoclet 配置过程将被保存在本地一个名叫.xdoclet 的文件中。另外如果"Use xdoclet-build.xml file" 原则被使用,那么MyEclipse 将产程一个叫xdoclet-build.xml的文件,里面存储你的新的XDoclet设置并
且文件包存在跟路径下。
这将完成基础的XDoclet EJB 配置过程。下一个部分目标是如何配置XDoclet EJB 子任务为了你特殊的应用服务器。
7.1.2 Configuring Application Server XDoclet (optional)
XDoclet 是能够生成应用程序服务器的特殊部署描述符的。这部分的目标是通过JBoss应用程序服务器的子标签来配置一个XDoclet @ejbdoclet。XDoclet所支持的应用程序服务器列表可以在弹出菜单中查看到如图13。
注意:下边部分我们的目的是发布firstejb 到本地的JBoss 3.2 服务器上。因此我们将用JBoss子任务。
- 右击 ejbdoclet 然后从菜单中选择Add.
- 在doclet子任务中选择jboss , 接着选择 OK 如图12所示。
- Figure 13. Adding JBoss subtask to ejbdoclet
- 如图14所示摄者如下的jboss 属性。
Version = 3.2
destDir = src/META-INF
Figure 14. Setting jboss subtask attributes
- 选择 OK .
7.2 Running XDoclet Code Generation
一旦你完成配置你的工程的XDoclet 设置,你可以在任何时候运行XDoclet的代码生成。代表的你可以在每次改变XDoclet EJB的配置或应用服务器设置或当你修改任何EJB bean的实现类中XDoclet 声明后去执行XDoclet。
当Trader EJB 还没有被新建的XDoclet-声明的业务方法扩展时,现在一个好的机会去执行XDoclet在firstejb工程中,然后测试一下新的XDoclet 设置。.
1. 为了载 firstejb上运行XDoclet 右击工程然后在菜单中选择MyEclipse > Run XDoclet (查看图15).
Figure 15. Starting XDoclet code generation on EJB project
- 监视Console 视图在xdoclet-build 脚本中的反常信息输出。 图16 描述了XDoclet 在TraderBean 类被加工的过程信息。
Figure 16. Console output of Run XDoclet action
在XDoclet完成后, firstejb 工程应该包含新版本的的Trader 和 TraderHome 接口和 ejb-jar.xml 和 jboss.xml 部署描述符。图17 描述了初始生成这个新工程的资源。
注意: 当我们在第5步创建TraderBean.java 类文件时,我们指明它的Java package 名为 com.genuitec.trader.ejb 并且强调了报名义".ejb" 结尾。这是因为标准的EJB XDoclet包置换(packageSubstitution) 子任务创建一个相应的 Java 包以 ".interfaces" 结尾并且添加了生成的EJB 和Home 接口到其中。在我们的例子包 com.genuitec.trader.interfaces 将被创建并且它将包含Trader EJB 和 TraderHome 接口。如果你不按照这个包命名习惯那么XDoclet 设置的默认的一些文件将不会被创建。
Figure 17. Contents of EJB project before and after XDoclet generation