seam-gen有两种版本,命令行脚本和IDE插件。命令行版本是披着脚本皮的Ant,他的优势是他和他生成的项目都能通过命令行或IDE驱动。IDE版本是个Eclipse的插件,是JBoss Tools的一部分。插播广告:有了JBoss Tools,让你的JavaEE生涯更轻松!作者主要是介绍命令行脚本,所以想了解plugin版本,到别处翻翻吧。

      作者会先带我们大概看看seam-gen脚本,然后再执行下seam-gen的命令。

seam-gen命令一瞥

       把seam和例子中的H2数据库备好,进入解压后的seam目录。你能在里面找到seam 和 seam.bat两个脚本。

       先看看seam脚本能做什么吧!在控制台里敲 seam help,这个命令会显示seam-gen的简介,还有一长串他所支持的命令。


seam的简介 写道


seam (aka seam-gen) - Execute seam code generation.
The seam.bat (Windows) and seam (Linux/Unix) scripts support
commands that use Ant build targets to set up a Seam project and
generate source code. Ant is not required to be on your path to
use this script.
JBoss AS must be installed to deploy the project. If you use EJB3
components, the JBoss server must have EJB 3 capabilities.
(JBoss AS 4.2 is strongly recommended)


 seam-gen的命令可以分为两类,第一组命令是用来构建、管理和部署seam-gen项目的。

 

命令

介绍

setup

生成用于创建项目的seam-gen/build.properties,文件中的key-value对是你给这个命令提出的问题的答案。这些信息包括,项目所在的目录、数据库连接、JBoss AS所在的目录。在回答完问题后,你也可以手工修改seam-gen/build.properties

create-project

创建seam项目,包含构建脚本,依赖类库,以及基本的seam组件配置。根据seam-gen/build.

properties文件中的值进行个性化设置。

update-project

更新项目的依赖类库至最新版

delete-project

卸载并删除生成的项目

deploy

把项目包(WAR或EAR)及数据源配置文件部署到JBoss AS中

undeploy        

卸载部署的项目包及数据源配置文件

explode

部署项目文件(非打包方式的WAR和EAR项目包)和数据源配置文件到JBoss AS中。并执行增量式热部署,不包括EJB组件及JPA实体类。

restart

将之前部署的项目(非打包方式)重启,不是重启JBoss AS

unexplode

卸载项目(非打包方式)文件和数据源配置

archive

创建项目包(WAR或EAR)并把他放到项目根目录下的dist文件夹下。

clean

移除生成项目中的已编译类及中间目录。

test

运行测试

settings

显示seam-gen/build.properties中的设置

reset

重置seam-gen/build.properties中的设置

 

 

 

第二组命令,用于在被seam管理的项目中生成代码。

命令

介绍

new-action

创建带有seam/EJB3注解的java接口及stateless session bean。同时创建模拟JSF request/response的测试用例及相关的TestNG配置

new-form

new-conversation

创建带有seam/EJB3注解的java接口及stateful session bean,添加带有@Begin和@End的句柄方法。

new-entity

创建带有seam/EJB3注解的entity bean

new-query

创建管理定制JPA查询的EntityQuery子类及显示查询结果的view模板

generate

产生映射到数据库schema的entity class及对其进行CRUD操作的用户界面

generate-ui

产生已有JPA entities的CRUD用户界面

generate-model

产生映射到数据库schema的JPA entity类

创建带有seam/EJB3注解的java接口及stateful session bean。同时创建模拟JSF request/response的测试用例及相关的TestNG配置

 

没必要现在就弄懂每个命令,这两个表格只是给你介绍下seam-gen的能力,以后你会有机会用这些命令来完成任务的。

下面这个列表指导你创建Open 18程序原型所需执行的命令步骤:

命令

目的

seam setup

输入关于Open 18程序及H2数据库的相关信息

seam create-project

命令seam-gen创建open 18程序

seam generate

创建管理Open 18数据库表的CRUD程序

seam explode

部署项目文件(非打包方式的WAR和EAR项目包)和数据源配置文件到JBoss AS中

执行完这些命令后,你就有了一个可以展示给老板的程序原型。当他要你修改的时候,你也不会无言以对。修改seam-gen生成的程序简单直接,本章的后续部分会告诉你如何进入seam-gen已经为你准备好的各种开发环境及部署环境。不过,现在你还是要先告诉seam-gen你想生成一个什么样的程序。

seam-gen的我问你答节目

     书接上段,下面就来讲讲第一个要运行的seam setup命令。前面已经提过了,这个命令会问你一系列的问题,以便决定该怎么给你创建个程序。需求分析阶段!他提的问题由三部分组成,问题;默认答案;有效答案。你就逐一回答敲回车就成了,这是唯一需要你做的工作,回答完这些问题,剩下的事就是seam的了,有没有点当甲方的感觉?

      seam-gen的主要目的就是把你的答案保存到seam-gen/build.properties中去。如果你觉得某个回答不妥,你随时都可以重新来一次,以前的答案都变成了默认答案,不用改的敲回车接受就行了。如果你不想用这个向导,也可以自己手工编辑seam-gen/build.properties文件。

      注意下WAR与EAR的区别,还有就是你可以试试ICEFaces。

      除了处理seam-gen/build.properties,setup命令还负责把JDBC 驱动copy到${jboss.home}/server/default/lib中,以便定义JCA数据源,建立到数据库的连接。

创建基本的项目骨架

      setup仅仅是在做准备工作,要把seam的项目模板转变为真正的应用程序,还要执行seam create-project。执行完这个命令,seam会在你的Java工作目录下创建一个新项目,自带一个可以编译、测试、打包及部署程序的Ant build脚本。以此为基础,开始开发你的seam程序吧!

      插播广告!JBoss Tools可以给你一个GUI的向导,你不用到DOS窗口里去执行脚本了。

生成CRUD

     项目的脚手架搭好了,让我们继续前进!先开始对数据库表进行反向工程,生成一些代码出来看看。这就轮到seam generate命令登场了。它会产生映射到数据库schema的entity class及对其进行CRUD操作的用户界面,view层是由Facelets 模板组成的,而作为后备的action 类是JavaBean。


写道


我们在setup的时候提供了schema和catalog的值,这是为了放在JPA entity class之上的@Table注解不必去绑定这些属性。因为他们往往比表名和列名的变动更有可能发生。所以最好不要让entity class中保留这些信息。如果有必要,可以在Hibernate或JPA配置信息中的hibernate.default_schema 和 hibernate.default_catalog属性上来指定。

 

       seam generate的输出信息非常丰富,因为Hibernate非常尊重我们的知情权,所以把他做反向工程的每一步都像我们做了报告。

      项目原型已经生成了!但还不是部署的时候,如果你按generate最后的建议,运行 seam restart命令,你会发现,无论JBoss AS 运行与否,http://localhost:8080/open18返回的都是404错误!这里还有个问题,欲知后事如何,且听下回分解!