第3章 开始Seam,,使用 JBoss Tools

第3章      开始Seam,,使用 JBoss Tools

 

JBoss Tools是一个Eclipse插件集。JBoss Tools以向导方式创建Seam一个项目,为facelets Java 代码提供统一的EL内容助手,一个图形化的jPDL编辑器,一个图形化的Seam配置文件编辑器,在Eclipse中支持Seam集成测试,等等。

 

简言之,如果你是Eclipse用户,那么你会想要JBoss Tools!

 

JBoss Tools,与seam-genJBoss AS,配合最好,你的应用程序如果运行在其它服务器上,可能存在一些问题。有关很多变化的那些描述在后面的参考手册中。

 

3.1. 开始之前

 

在开始之前,确信你已正确地安装了JDK 5, JBoss AS 4.2, Eclipse 3.3, JBoss Tools插件(至少有Seam工具, 可视页面编辑器, jBPM 工具 JBoss AS 工具)以及TestNG插件。

 

TODO——升级站点有详细的说明。

 

[*

JBoss Seam 开发环境IDE配置:

Eclipse 3.4+ jboss as 5.0.0.CR2 Release Candidate+JBossTools3.0+ testng-eclipse-5.8.0.1

 

1、  Eclipse IDE for Java EE Developers (163 MB)

Eclipse 3.4下载地址:http://www.eclipse.org/downloads/

2、  JBossTools-200810070143-nightly-ALL-win32.zip

JBossTools3.0下载地址:http://download.jboss.org/jbosstools/builds/nightly/200810070143-nightly/index.html

3、  testng-eclipse-5.8.0.1.zip

testng-eclipse-5.8.0.1下载地址: http://testng.org/doc/download.html

有关testng插件的使用请参考:http://testng.org/doc/documentation-main.html

 

解压安装Eclipse 3.4,将JBossTools3.0testng-eclipse-5.8.0解压,并将其插件目录pluginsfeatures下的内容拷入Eclipse 3.4对应目录下。

 

安装新插件后,启动Eclipse,在Eclipse 3.4目录下最好运行一次Eclipse –clean命令。

 

配置原有Jboss as 4.2.3all)服务器:

New Server->Jboss,a division of Red Hat ->Jboss as 4.2

 

Seam项目:

File->new ->other->Seam-> Seam Web Project

 

成功!

 

但是,启动Jboss as 4.2.3all,开始部署正常,但以后不知什么原因,部署总是报“Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener

,有人说是安装目录名有空格造成的。将空格取消,问题仍然。

 

然而,用seam-gen产生的项目,导入到eclipse中,可以使用,但报jstl.jar包有错,可能是下载的seam2.1的这个文件有错,找一个jstl.jar导入库中,一切正常!

 

4 不用Jboss as 4.2.3all),改用jboss-5.0.0.CR2-jdk6.zipjboss as 5.0.0.CR2 Release Candidate)版

下载地址:http://www.jboss.org/jbossas/downloads/

重配服务器,如下所示,一切正常!

 

*]

 

3.2. 设立一个新的Seam项目

启动Eclipse,选Seam透视图。

File -> New -> Seam Web Project

首先,为你的项目输入一个名字。对这个教程,我们使用了helloworld

 

现在,我们需要告诉JBoss Tools相关的JBoss AS。有两个处理阶段,首先我们需要定义一个运行时间,确信你选了JBoss AS 4.2

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

输入运行时间名字,并在你的硬盘上定位它:

 

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

下一步,我们需要定义一个JBoss Tools能部署项目的服务器。再次确定选了JBoss AS 4.2,也正确地定义了运行时间:

 

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

在下一屏幕给出了服务器名,并点击Finish完成:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

确定你刚刚创建的运行时间和服务器被选取,选取Dynamic Web Project动态网页项目Seam 2.0(技术预演)并点Next下一步:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

下面第3屏幕,允许你将来自定义你的新项目,但是对我们而,缺省更好。所以只需点击

Next。直到最后屏幕。

 

在这里的第一步是告诉JBoss Tools有关你想使用的Seam下载版。增加一个新的Seam 运行时间——确定给了它名字,并选取了2.0版:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 
你需要做的最重要的选择是在你的项目是EAR部署还是WAR部署之间做一个选择。EAR项目支持EJB 3.0 ,并要求Java EE 5WAR项目不支持EJB 3.0,便可以被部署到一个J2EE

环境。一个WAR包简单容懂。如果你安装了一个迅速的EJB3应用服务器,如JBoss,选择ear。否则,选择WAR。我们假设你为后面的教程已经选择了一个EAR部署,然而,对一个WAR部署你能正确地跟随同样的步骤。

 

下一步,选取你的数据类型。我们假设你已安装了MySQL,用了一个存在的数据库。你需要告诉JBoss Tools有关你的数据库,选取MySQL作为数据库,并创建一个新的连接profile文件。选取Generic JDBC Connection普通JDBC连接(eclipse 3.4选取MySQL连接):

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

给它一名字:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

JBoss Tools没有带任何数据库驱动程序,所以你需要告诉JBoss Tools MySQL JDBC驱动程序在那儿。告诉它有关驱动程序点.... Locate MySQL 5,并点Add...

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

选取MySQL JDBC Driver模版:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

通过选Edit Jar/Zip查找到你计算机上的MySQL JDBC Driverjar包:

[移去默认,Add增加也行]

 

写入数据库连接使用的用户名和密码,如果正确,点Ok

最后,选取新建的驱动程序:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

如果你使用了一个存在的数据模型,确信你告诉了JBoss Tools数据表已经存在数据库中。

 

输入连接使用的用户名和密码,用Test连接按钮测试的连接,如果它成功,点Finish完成:

 

最后,查看你产生的bean的包名,如果如果成功,点Finish完成。

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

JBoss支持先进的WARs EARs热布置。不幸地,导致JVM程序缺陷,重复一个EAR布置——在布置期间,那是普通的——最后引起JVM内存溢出。为这个原因,在开发期间,我们推荐运行JBoss在一个有一个巨大的内存的永久保存区域的JVM上。如果你从JBoss IDE运行JBoss,你能在服务器启动配置中配置这个,在"VM arguments"下。我们建议下面的值:

 

-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512

 

如果你没有这么多的内存可用,下面是我们推荐的最小配置:

 

-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256

 

如果你从命令行运行JBoss,你能在bin/run.conf文件中配置JVM选项。

 

 

定们到JBoss Server 视图中的服务器,右击服务器,并选取 Edit Launch Configuration(编辑启动配置):

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

 

然后,改变VM参数:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

如果现在你不想麻烦这些事,你不必管——当你第一次遇到OutOfMemoryException,稍后再恢复它。

启动JBoss,并部署项目,右击刚你创建的服务器,点Start(或调试,启动in debug mode:

 

不要恐惧产生在项目中的XML配置文本。它们是最标准的Java EE东西,以前你需要建立这些东西,然后不会再看它们,在所有Seam项目之间,它们90%是相同的。

 

3.3. 创建一个新的动作Creating a new action

 

如果你习惯于传统的动作类型网页框架,你可能会惊讶在JAVA中用无状态动作方法创建一个简单网页。

首先,选择 New -> Seam Action

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

现在,输入Seam组件名字。JBoss Tools智能给其它字段选取缺省值:

最后,击Finish完成。

 

现在,到http://localhost:8080/helloworld/ping.seam。并点击按钮。查看项目src目录,你能看见在这个动作后的代码。设置一个断点在ping()方法,并再点击按钮。

 

最后,打开helloworld-test项目,定位PingTest类,右击它,并选Run As -> TestNG Test

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

3.4.创建一个表单


现在,输入Seam组件名字。JBoss Tools智能给其它字段选取缺省值:

jboss seam reference 2.1(第3章) - *工* - 要有光,于是就有了光

http://localhost:8080/helloworld/hello.seam。然后看一下产生的代码。运行测试。试着增加一些新字段到表单和Seam组件(注意,每次你改变了src/action目录里的代码,你不必重启应用程序服务器,因为Seam为你热加载了组件。章节 3.6,Seam和改进的热部署”)

 

3.5. 从一个存在的数据库产生一个应用程序

在你的数据库中手动创建一些表。(如果你需要切换到一个不同数据库,创建一个新的项目,并选取正确数据库)。然后,选择New -> Seam Generate Entities

JBoss Tools给你一个“倒置”实体选项,来自一个数据库表的组件和视图,或者来自存在的JPA实体的组件和视图。我们打算从数据库“倒置”。

 
重启部署:

然后到http://localhost:8080/helloworld。你能浏览数据库,编辑存在的对象,创建新的对象。如果你查看产生的代码,你可能会吃惊它是多么简单!Seam被设计便于数据访问代码是容易手工书写,甚至对不想用“倒置”的人们。

 

[*出错

Could not instantiate Seam component:

Caused by: java.lang.IllegalArgumentException: EntityManagerFactory not found in JNDI : java:/helloworldEntityManagerFactory

 

*]

 

3.6. Seam和改进的热部署

JBoss Tools 支持改进的热部署:

 

* 所有 facelets页面

* 所有 pages.xml 文件

 

超出范围。

But if we want to change any Java code, we still need to do a full restart of the application by

doing a Full Publish.

但是,如果我们想改变任何JAVA代码,我们仍然需要做一个应用程序全重启,通过执行Full Publish

 

然而,如果你真想一个快速的编辑/编译/测试周期,Seam支持改进的JavaBean组件重部署。为使用这个功能,你必须部署JavaBean组件到WEB-INF/dev目录,以便通过一个特殊的Seam类加载器代替WAR EAR类加载器加载它们。

 

你需要注意下的限制:

* 组件必须是JavaBean组件, 它们不能是EJB3 beans (我们正在努力修补这个限制)

* 实体绝不能被热部署

* 通过 components.xml来实现组件部署可以不是热部署

* the hot-deployable components will not be visible to any classes deployed outside of 对在WEB-INF/dev外面的任何类部署,热部署组件是不会可见的。

* Seam 调试模式可以使用, jboss-seam-debug.jar必须在WEB-INF/lib

* 你必然安装Seam 过滤器在web.xml

* 如果系统被放在任何加载和任何调试之下,你可以看见错误。

 

如果你使用JBoss Tools创建了一个WAR项目,改进的热部署可用范围是超出了在src/action资源目录的类的区域。然而,对EAR项目,JBoss Tools不支持改进的热部署。

你可能感兴趣的:(eclipse,mysql,jboss,seam,JBossTools)