用Seam-gen起步

 

 

Seam的发布包里已包含了命令行工具,用它可以很方便地搭建Eclipse项目,以及生成一些简单的Seam骨架代码,并能从已存在的数据库 反向 工程到应用程序。

它能让你感受到Seam给开发所带来的快捷,当你在电梯里看到那些令人厌烦的Ruby家伙在吹嘘他们的新玩艺儿是如何优美 地在应用中 将繁琐的数据放进数据库时,你就可以取笑他们了。

在此版本中,seam-gen能很好地与JBoss AS一起工作。通过对项目配置进行些许的手工修改,seam-gen生成的项目就可与其它J2EE或Java EE 5应用服务器一起工作。

请 注意,并不只限在Eclipse中使用seam-gen。但在本教程中,我们将为你演示如何在Eclipse中用它来完成调试与集成测试。 若你不想安装Eclipse,你仍可跟随教程的步骤,因为所有的操作都是在命令行中完成的。

Seam-gen的Ant脚本与 Hibernate工具包放一起,并同时提供了一些模板。这样我们就很容易地根据自己项目的需要来作些修改。

2.1. 准备活动

请 确保已安装了JDK 5或者JDK6,JBoss AS 4.2和Ant 1.6,以及较新版的Eclipse、JBoss IDE和TestNG的Eclipse 插件。 在Eclipse的JBoss Server View中将JBoss安装路径添加进去。然后以debug模式启动JBoss,并在弹出式命令窗口中进入Seam的目录。

JBoss很 好地支持WAR和EAR的热重部署,但麻烦的是,由于在JVM中存在着多个Bug,在开发进程中多次的重部署EAR是常见的事,但这最终会耗尽 PermGen 空间(Permanent Generation Space)。 因此建议你在开发的过程中加大perm gen空间。若你是在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选项作修改了。

当然,我们可以先不理会这些。当你在开发中第一次碰到OutOfMemoryException 异常时再回过头来作此修改。

2.2. 建立一个新的 Eclipse项目

首先,我们需要根据现有的开发环境对seam-gen进 行配置:JBoss AS安装目录、Eclipse workspace及数据库连接。这些都很容易,只要敲入:

cd jboss-seam-2.0.x
seam setup

根据弹出的提示输入开发环境的相关信息:

C:\Projects\jboss-seam>seam setup
Buildfile: build.xml

setup:
    [echo] Welcome to seam-gen :-)
    [input] Enter your Java project workspace [C:/Projects]

    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.2.0.GA]

    [input] Enter the project name [myproject]
helloworld
    [input] Is this project deployed as an EAR (with EJB components) or a WAR (with no EJB support) [ear] (ear,war,)

    [input] Enter the Java package name for your session beans [com.mydomain.helloworld]
org.jboss.helloworld
    [input] Enter the Java package name for your entity beans [org.jboss.helloworld]

    [input] Enter the Java package name for your test cases [org.jboss.helloworld.test]

    [input] What kind of database are you using? [hsql] (hsql,mysql,oracle,postgres,mssql,db2,sybase,)
mysql



    [input] Enter the Hibernate dialect for your database [org.hibernate.dialect.MySQLDialect]

    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb.jar]
../../mysql-connector.jar
    [input] Enter JDBC driver class for your database [com.mysql.jdbc.Driver]

    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]

    [input] Enter database username [sa]
gavin
    [input] Enter database password []

    [input] skipping input as property hibernate.default_schema.new has already been set.
    [input] Enter the database catalog name (it is OK to leave this blank) []

    [input] Are you working with tables that already exist in the database? [n] (y,n,)
y
    [input] Do you want to drop and recreate the database tables and data in import.sql each time you deploy? [n] (y,n,)
n
[propertyfile] Creating new property file: C:\Projects\jboss-seam\seam-gen\build.properties
     [echo] Installing JDBC driver jar to JBoss server
     [echo] Type


 'seam new-project' to create the new project

BUILD SUCCESSFUL
Total time: 1 minute 17 seconds
C:\Projects\jboss-seam>

该工具提供了相应的默认值,因此你可以直接按Enter键。

最重 要的是你要对EAR部署还是WAR部署进行选择。EAR项目支持EJB 3.0 并需要Java EE 5。而WAR包不支持EJB 3.0,但可在J2EE环境中部署。 另外WAR也更较简单,便于理解。假若你已安装了EJB3 profile,那你就用ear 好了,否则,就只好用war 。 在此假设我们选择了EAR部署,当然此教程也适用于WAR部署。

如果你手上有现成的数据模型,请确保你已输入现有数据库的表名。

这 些设置保存在seam-gen/build.properties 文 件中,但你可通过运行seam setup 来再次 修改。

现在我们就可以在Eclipse workspace目录中创建一个新的项目,只需输入:

seam new-project
C:\Projects\jboss-seam>seam new-project
Buildfile: build.xml

validate-workspace:

validate-project:

copy-lib:
     [echo] Copying project jars ...
     [copy] Copying 58 files to C:\Projects\helloworld\lib
     [copy] Copying 9 files to C:\Projects\helloworld\embedded-ejb

file-copy-war:

file-copy-ear:
     [echo] Copying resources needed for EAR deployment to the C:\Projects\helloworld/resources directory...

new-project:
     [echo] A new Seam project named 'helloworld' was created in the C:\Projects directory
     [echo] Type 'seam explode' and go to http://localhost:8080/helloworld
     [echo] Eclipse Users: Add the project into Eclipse using File > New > Project and select General > Project (not Java Project)
     [echo] NetBeans Users: Open the project in NetBeans

BUILD SUCCESSFUL
Total time: 7 seconds
C:\Projects\jboss-seam>

这组操作复制了Seam jar文件及相应的jar文件与JDBC驱动jar到新建的Eclipse项目中,并生成了所需的源文件及其配置文件、一个模板文件和样式文件,及相应的 Eclipse元数据及Ant构建脚本。 只要你依此操作New -> Project... -> General -> Project -> Next ,输入Project name (此例为helloworld ),并接着点击Finish ,就可将Eclipse项目自动部署到 JBoss AS分解式的(exploded)目录结构中,请不要在新项目向导中选择Java Project

若Eclipse中的默认的JDK不是Java SE 5 或Java SE 6,你就得通过Project -> Properties -> Java Compiler 来选择与Java SE 5 兼容的JDK。

另 外,可在Eclipse之外输入seam explode 来 部署项目。

http://localhost:8080/helloworld 中 查看此应用的首页。view/home.xhtml 是 个使用view/layout/template.xhtml 模 板生成的Facelets 页面,试着在Eclipse中编辑此页面或该模板,并在浏览器中刷新页面,立即看到结果。

别被在项目目录中的如 此多的XML配置文件给吓晕了。那都是些标准的Java EE的东西,它们只需生成一次就不用再去理会了。 在所有的Seam项目中,90%的配置内容都是一样的(这些可由seam-gen来帮我们完成)。

新生成的项目包含了三个数据库及持久化配 置文件。jboss-beans.xml persistence-test.xml import-test.sql 文件是用在当TestNG 对HSQLDB进行单元测试时。 在import-test.sql 中 的数据库Schema及其测试数据总是在测试前就已转入数据库中。myproject-dev-ds.xml persistence-dev.xml import-dev.sql 文件是在部署应用到开发数据 库时使用的。 数据库schema是否可在部署时自动导出,取决于你是否在设置seam-gen环境时配置了已存在的数据库。myproject-prod-ds.xml persistence-prod.xml import-prod.sql 文件是在部署应用到生产数 据库时使用的。在部署时数据库schema并不自动导出。

2.3. 创建新动作

若你熟知传统 的action-style. Web框架,你或许想知道在Java中如何来创建无状态action方法的简单Web页面。如果你输入:

seam new-action

则 Seam将弹出一些信息并为你的项目生成新的Facelets页面及Seam组件。

C:\Projects\jboss-seam>seam new-action
Buildfile: build.xml

validate-workspace:

validate-project:

action-input:
    [input] Enter the Seam component name
ping
    [input] Enter the local interface


 name [Ping]

    [input] Enter the bean class name [PingBean]

    [input] Enter the action method name [ping]

    [input] Enter the page name [ping]


setup-filters:

new-action:
     [echo] Creating a new stateless session bean component with an action method
     [copy] Copying 1 file to C:\Projects\helloworld\src\action\org\jboss\helloworld
     [copy] Copying 1 file to C:\Projects\helloworld\src\action\org\jboss\helloworld
     [copy] Copying 1 file to C:\Projects\helloworld\src\action\org\jboss\helloworld\test
     [copy] Copying 1 file to C:\Projects\helloworld\src\action\org\jboss\helloworld\test
     [copy] Copying 1 file to C:\Projects\helloworld\view
     [echo] Type 'seam restart' and go to http://localhost:8080/helloworld/ping.seam

BUILD SUCCESSFUL
Total time: 13 seconds
C:\Projects\jboss-seam>

新增Seam组件后,我们需要重启分解式目录部署(exploded directory deployment)。 输入seam restart ,或在Eclipse中已生成项目的build.xml 中 运行restart target就可完成。 另一种方式是在Eclipse中通过编辑resources/META-INF/application.xml 文 件来强制重启。请注意,在每次修改应用程序时并不需要重启JBoss。

试 着在浏览器中输入http://localhost:8080/helloworld/ping.seam 地 址并点击按钮,看看发生了什么。 在项目的src 目 录中可看到完成此动作的源代码。 试着在ping() 方 法中设置个断点,再次点击按钮,又发生了什么?

最后,在测试包中找到PingTest.xml 文件,并用Eclipse的TestNG插件来运行测试。 此外,还可用seam test 或生成的build文件中的test target来运行测试。

2.4. 创建有动作的表单 (form)

下一步就是来创建表单了。请输入:

seam new-form
C:\Projects\jboss-seam>seam new-form.
Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml

validate-workspace:

validate-project:

action-input:
    [input] Enter the Seam component name
hello
    [input] Enter the local interface name [Hello]

    [input] Enter the bean class name [HelloBean]

    [input] Enter the action method name [hello]

    [input] Enter the page name [hello]


setup-filters:

new-form. [echo] Creating a new stateful session bean component with an action method
     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
     [copy] Copying 1 file to C:\Projects\hello\view
     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello.seam

BUILD SUCCESSFUL
Total time: 5 seconds
C:\Projects\jboss-seam>

再次重启应用程序,并在浏览器中输入http://localhost:8080/helloworld/hello.seam 就可看到结 果了。 接着看下所生成的代码,并运行测试。试着给表单加入一些字段及Seam组件(记着在每次更改Java代码时重新部署)。

2.5. 从现有数据库生成应用 程序

在数据库中手工创建一些表。(如果你需要切换不同的数据库,只需再次运 行seam setup 即可。)现请输入:

seam generate-entities

接 着重新部署,并在浏览器中输入http://localhost:8080/helloworld 就 可看到结果了。 你可以试着浏览数据库,编辑现有的对象,并创建新的对象。如果你看下所生成的代码,你可能会对如此简单的代码感到惊讶。 让开发人员,尤其是那些不甘于受Seam-gen摆布的开发人员,简单地手工编写数据访问代码,是Seam的设计目标之一。

2.6. 将应用部署为EAR

最 后,我们想知道能否用标准的Java EE包来部署应用。首先,通过运行seam unexplode 来移走分解式目录(exploded directory)。 在命令行中输入seam deploy 或运行生成的Build脚本文件中 的deploy target就可完成EAR的部 署,用seam undeploy 命令或运行undeploy 目标可卸下EAR。

默认 情况下,应用程序会用dev profile 来部署,EAR将包含persistence-dev.xml import-dev.sql 文件,myproject-dev-ds.xml 文件也会被部 署。 通过输入以下的命令你就可以更改profile, 并可使用prod profile

seam -Dprofile=prod deploy

你 甚至可以给你的应用程序定义新的部署profile,只需在项目中加入合适的文件, 例如:persistence-staging.xml import-staging.sql myproject-staging-ds.xml — 并选择使用了-Dprofile=staging 名字的 profile。

2.7. Seam与增量热部署

将 Seam应用部署成exploded目录的好处是,你能在开发时得到增量热部署的支持。 你只需在components.xml 中添加这一行来启用Seam和Facelet中的debug模式即可:

<core:init debug="true"/>

这 样一来,重新部署以下文件时就不一定要完全地重启web应用了:

  • 任意Facelet页面

  • 任意pages.xml 文件

若想对Java代码进行变更, 就需要完全的应用重启。 (在JBoss中,对于EAR部署,这需要用touch命令改变顶层的部署描述文件:对于EAR部署,则是application.xml ,而对于WAR部署,则是web.xml 。)

但你真正想加快编辑/ 编译/测试的流程,Seam支持对JavaBean组件进行增量式重部署。 为了用上此功能,你必须把JavaBean组件部署到WEB-INF/dev 目录中,以便它们能被特殊的 Seam类加载器加载,而不是WAR或EAR类加载器。

请注意以下的限制:

  • 必须是JavaBean组件,而不能是EJB3 Beans(此限制正在解决中)

  • 实 体Bean不可热部署

  • 通过components.xml 部 署的组件可能无法热部署

  • WEB-INF/dev 之 外部署的任何类都无法访问可热部署的组件

  • 须启用Seam的debug模式

如 果你用Seam-gen创建WAR项目,增量热部署对于src/action目录下的类是直接可用的,但是对于EAR项目不行。

2.8. 在Jboss 4.0下使用Seam

Seam 2.0是针对JavaServer Faces 1.2开发的,所以我们推荐在JBoss 4.2下使用Seam,因为它包含了JSF 1.2参考实现。 然而仍然有办法在Jboss 4.0下使用Seam。需要两个步骤:安装启用了EJB3的Jboss 4.0版本并且把MyFaces替换为JSF1.2参考实现。 你完成这两个步骤后,Seam2.0就可以在JBoss 4.0下部署了。

2.8.1. 安 装JBoss 4.0

JBoss 4.0没有针对Seam的默认配置。想要运行Seam,你必须用JEMS 1.2安装器并且选择EJB3 profile。 如果没有EJB3支持Seam是不能正常运行的。JEMS安装器可以在这里下载:http://labs.jboss.com/jemsinstaller/downloads

2.8.2. 安装JSF 1.2 RI

JBoss 4.0的配置可以在server/default/deploy/jbossweb-tomcat55.sar 找 到。 你需要从jsf-libs 目录删除myfaces-api.jar myfaces-impl.jar 文件。 你还需要把jsf-api.jar jsf-impl.jar el-api.jar el-ri.jar 复制到那个目录下。你可以在Seam的 lib文件夹下找到这些JAR文件。EL JAR文件可以从Seam 1.2发行版中获取。

你还需要编辑conf/web.xml 文件,把myfaces-impl.jar 替换为jsf-impl.jar

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架..................................................................................................................................................................................1 Table of Contents........................................................................................................................................................................... 2 JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. Seam 入门.................................................................................................................................................................14 1.1. 试试看.......................................................................................................................................................................... 14 1.1.1. 在JBoss AS 上运行示例..................................................................................................................................14 1.1.2. 在Tomcat 服务器上运行示例.......................................................................................................................... 15 1.1.3. 运行测试........................................................................................................................................................... 15 1.2. 第一个例子:注册示例.............................................................................................................................................. 15 1.2.1. 了解代码........................................................................................................................................................... 16 1.2.2. 工作原理........................................................................................................................................................... 26 1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27 1.3.1. 理解代码........................................................................................................................................................... 27 1.3.2. 工作原理........................................................................................................................................................... 32 1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码........................................................................................................................................................... 33 1.4.2. 工作原理........................................................................................................................................................... 39 1.5. Seam 页面流:猜数字范例........................................................................................................................................ 40 1.5.1. 理解代码........................................................................................................................................................... 40 1.5.2. 工作原理........................................................................................................................................................... 45 1.6. 一个完整的Seam 应用程序:宾馆预订范例............................................................................................................ 45 1.6.1. 介绍................................................................................................................................................................... 46 1.6.2. 预订系统概况................................................................................................................................................... 48 1.6.3. 理解Seam 业务对话(Conversation)................................................................................................................. 48 1.6.4. Seam 的UI 控制库........................................................................................................................................... 55 1.6.5. Seam 调试页面................................................................................................................................................. 56 1.7. 一个使用Seam 和jBPM 的完整范例:DVD 商店...................................................................................................57 1.8. 一个使用Seam 工作空间管理(workspace management)的完整范例:Issue Tracker........................................59 1.9. 结合Seam 和Hibernate 的范例:Hibernate 预订系统............................................................................................. 60 1.10. 一个RESTful 的Seam 应用程序:Blog 范例......................................................................................................... 60 1.10.1. 使用“拉”风格的MVC................................................................................................................................... 61 1.10.2. 可收藏的搜索结果页面................................................................................................................................. 63 1.10.3. 在RESTful 应用程序中使用“推”风格("push"-style)的MVC................................................................65 1.11. 在JBoss 中用JSF 1.2 RI 运行Seam 的范例............................................................................................................68 Chapter 2. 用Seam-gen 起步......................................................................................................................................................69 2.1. 准备活动...................................................................................................................................................................... 69 2.2. 建立一个新的Eclipse 项目........................................................................................................................................ 69 2.3. 创建新动作.................................................................................................................................................................. 72 2.4. 创建有动作的表单(form)...................................................................................................................................... 73 2.5. 从现有数据库生成应用程序...................................................................................................................................... 74 2.6. 将应用部署为EAR..................................................................................................................................................... 75 2.7. Seam 与增量热部署.................................................................................................................................................... 75 3 / 347 2.8. 在Jboss 4.0 下使用Seam............................................................................................................................................76 2.8.1. 安装JBoss 4.0...................................................................................................................................................76 2.8.2. 安装JSF 1.2 RI................................................................................................................................................. 76 Chapter 3. 上下文相关的组件模型............................................................................................................................................76 3.1. Seam 上下文.................................................................................................................................................................76 3.1.1. Stateless context(无状态上下文)................................................................................................................. 77 3.1.2. Event context(事件上下文)..........................................................................................................................77 3.1.3. Page context(页面上下文)............................................................................................................................77 3.1.4. Conversation context(业务会话上下文)......................................................................................................77 3.1.5. Session context(Session 上下文)..................................................................................................................78 3.1.6. Business process context (业务流程上下文)..............................................................................................78 3.1.7. Application context(应用上下文).................................................................................................................78 3.1.8. Context variables(上下文变量)....................................................................................................................79 3.1.9. Context 搜索优先级..........................................................................................................................................79 3.1.10. 并发模型......................................................................................................................................................... 79 3.2. Seam 组件....................................................................................................................................................................80 3.2.1. 无状态Session Bean......................................................................................................................................... 80 3.2.2. 有状态Session Bean......................................................................................................................................... 80 3.2.3. 实体Bean.......................................................................................................................................................... 81 3.2.4. JavaBeans.......................................................................................................................................................... 81 3.2.5. 消息驱动Bean.................................................................................................................................................. 82 3.2.6. 拦截................................................................................................................................................................... 82 3.2.7. 组件名字........................................................................................................................................................... 82 3.2.8. 定义组件范围(Defining the Component Scope)......................................................................................... 83 3.2.9. 具有多个角色的组件(Components with multiple roles)............................................................................ 84 3.2.10. 内置组件......................................................................................................................................................... 84 3.3. 双向注入...................................................................................................................................................................... 85 3.4. Lifecycle methods(生命周期方法)......................................................................................................................... 87 3.5. 条件装载(Conditional installation)........................................................................................................................ 87 3.6. 日志...............................................................................................................................................................................88 3.7. Mutable 接口和@ReadOnly........................................................................................................................................89 3.8. Factory 和Manager 组件.............................................................................................................................................91 Chapter 4. 配置Seam 组件.........................................................................................................................................................93 4.1. 通过属性设置来配置组件.......................................................................................................................................... 93 4.2. 通过components.xml 来配置组件.............................................................................................................................93 4.3. 细粒度的配置文件...................................................................................................................................................... 97 4.4. 可配置的属性类型...................................................................................................................................................... 97 4.5. 使用XML 命名空间................................................................................................................................................... 98 Chapter 5. 事件、拦截器和异常处理..................................................................................................................................... 101 5.1. Seam 事件...................................................................................................................................................................101 5.1.1. 页面动作......................................................................................................................................................... 102 5.1.2. 组件驱动的事件............................................................................................................................................. 108 5.1.3. 上下文事件..................................................................................................................................................... 109 5.2. Seam 拦截器..............................................................................................................................................................110 5.3. 管理异常.....................................................................................................................................................................112 5.3.1. 异常和事务..................................................................................................................................................... 112 5.3.2. 激活Seam 异常处理...................................................................................................................................... 113 4 / 347 5.3.3. 使用注解处理异常......................................................................................................................................... 113 5.3.4. 用XML 处理异常.......................................................................................................................................... 114 5.3.5. 一些常见的异常............................................................................................................................................. 115 Chapter 6. 对话以及工作区管理..............................................................................................................................................116 6.1. Seam 的对话模型.......................................................................................................................................................116 6.2. 嵌套对话.....................................................................................................................................................................118 6.3. 使用GET 请求来开始一个对话............................................................................................................................... 118 6.4. 利用<s:link>以及<s:button>......................................................................................................................................119 6.5. 成功信息.................................................................................................................................................................... 121 6.6. 使用“显式”的对话id.................................................................................................................................................121 6.7. 工作区管理................................................................................................................................................................ 122 6.7.1. 工作区管理及JSF 导航................................................................................................................................. 122 6.7.2. 工作区管理和jPDL 页面流........................................................................................................................... 122 6.7.3. 对话转换器..................................................................................................................................................... 123 6.7.4. 对话列表......................................................................................................................................................... 124 6.7.5. 导航控件......................................................................................................................................................... 125 6.8. 对话组件和JSF 组件绑定........................................................................................................................................ 125 6.9. 对话组件的并发调用................................................................................................................................................ 126 6.9.1. RichFaces Ajax................................................................................................................................................ 127 Chapter 7. 页面流和业务流程..................................................................................................................................................128 7.1. Seam 中的页面流...................................................................................................................................................... 128 7.1.1. 两种导航模型................................................................................................................................................. 128 7.1.2. Seam 和后退按钮........................................................................................................................................... 131 7.2. 使用jPDL 页面流......................................................................................................................................................132 7.2.1. 安装页面流..................................................................................................................................................... 132 7.2.2. 开始页面流..................................................................................................................................................... 133 7.2.3. 页面节点和跳转............................................................................................................................................. 134 7.2.4. 流程控制......................................................................................................................................................... 135 7.2.5. 流程的结束..................................................................................................................................................... 135 7.2.6. 页面流组合..................................................................................................................................................... 135 7.3. Seam 中的业务流程管理.......................................................................................................................................... 136 7.4. 使用jPDL 业务流程定义..........................................................................................................................................137 7.4.1. 安装流程定义................................................................................................................................................. 137 7.4.2. 初始化Actor id............................................................................................................................................... 137 7.4.3. 启动一个业务流程......................................................................................................................................... 138 7.4.4. 任务分配......................................................................................................................................................... 138 7.4.5. 任务列表......................................................................................................................................................... 138 7.4.6. 执行一个任务................................................................................................................................................. 139 Chapter 8. Seam 和对象/关系映射...........................................................................................................................................140 8.1. 简介.............................................................................................................................................................................140 8.2. Seam 管理的事务...................................................................................................................................................... 140 8.2.1. 关闭Seam 管理的事务.................................................................................................................................. 141 8.2.2. 配置Seam 事务管理器.................................................................................................................................. 142 8.2.3. 事务同步......................................................................................................................................................... 142 8.3. Seam 管理的持久化上下文...................................................................................................................................... 142 8.3.1. 在Seam 管理的持久化上下文中使用JPA....................................................................................................143 8.3.2. 使用Seam 管理的Hibernate 会话................................................................................................................. 143 5 / 347 8.3.3. Seam 管理的持久化上下文和原子会话........................................................................................................ 144 8.4. 使用JPA “代理(delegate)”...................................................................................................................................145 8.5. 在EJB-QL/HQL 中使用EL......................................................................................................................................146 8.6. 使用Hibernate 过滤器.............................................................................................................................................. 146 Chapter 9. Seam 中的JSF 表单验证........................................................................................................................................147 Chapter 10. Groovy 集成.......................................................................................................................................................... 152 10.1. Groovy 简介............................................................................................................................................................. 152 10.2. 用Groovy 编写Seam 应用..................................................................................................................................... 152 10.2.1. 编写Groovy 组件.........................................................................................................................................152 10.2.2. seam-gen........................................................................................................................................................ 154 10.3. 部署.......................................................................................................................................................................... 154 10.3.1. 部署Groovy 代码.........................................................................................................................................155 10.3.2. 开发时部署本地.groovy 文件.......................................................................................................................155 10.3.3. seam-gen........................................................................................................................................................ 155 Chapter 11. Seam 应用程序框架..............................................................................................................................................155 11.1. 简介...........................................................................................................................................................................156 11.2. Home 对象................................................................................................................................................................157 11.3. Query 对象................................................................................................................................................................161 11.4. Controller 对象......................................................................................................................................................... 163 Chapter 12. SeamJBoss 规则.............................................................................................................................................. 164 12.1. 安装规则.................................................................................................................................................................. 164 12.2. 在Seam 组件中使用规则....................................................................................................................................... 165 12.3. 在jBPM 流程定义中使用规则...............................................................................................................................166 Chapter 13. 安全........................................................................................................................................................................168 13.1. 概述.......................................................................................................................................................................... 168 13.1.1. 哪种模式更适合我的应用程序呢?............................................................................................................168 13.2. 需求.......................................................................................................................................................................... 168 13.3. 取消安全.................................................................................................................................................................. 168 13.4. 验证.......................................................................................................................................................................... 169 13.4.1. 配置............................................................................................................................................................... 169 13.4.2. 编写验证方法............................................................................................................................................... 169 13.4.3. 编写登录表单............................................................................................................................................... 171 13.4.4. 简化配置- 概述..........................................................................................................................................172 13.4.5. 处理安全异常............................................................................................................................................... 172 13.4.6. 登录重定向................................................................................................................................................... 172 13.4.7. HTTP 验证.................................................................................................................................................... 173 13.4.8. 高级验证特性............................................................................................................................................... 174 13.5. 错误消息.................................................................................................................................................................. 174 13.6. 授权.......................................................................................................................................................................... 175 13.6.1. 核心概念....................................................................................................................................................... 175 13.6.2. 保护组件....................................................................................................................................................... 175 13.6.3. 用户界面中的安全....................................................................................................................................... 177 13.6.4. 保护页面....................................................................................................................................................... 178 13.6.5. 保护实体....................................................................................................................................................... 178 13.7. 编写安全规则.......................................................................................................................................................... 180 13.7.1. 许可概述....................................................................................................................................................... 180 13.7.2. 配置规则文件............................................................................................................................................... 180 6 / 347 13.7.3. 创建安全规则文件....................................................................................................................................... 181 13.8. SSL 安全...................................................................................................................................................................183 13.9. 实现Captcha 测试................................................................................................................................................... 183 13.9.1. 配置Captcha Servlet.....................................................................................................................................184 13.9.2. 添加Captcha 到页面.................................................................................................................................... 184 13.9.3. 定制Captcha 图片........................................................................................................................................ 184 Chapter 14. 国际化和主题........................................................................................................................................................185 14.1. 本地化...................................................................................................................................................................... 185 14.2. 标签.......................................................................................................................................................................... 186 14.2.1. 定义标签....................................................................................................................................................... 186 14.2.2. 标签显示....................................................................................................................................................... 187 14.2.3. Faces Messages..............................................................................................................................................187 14.3. 时区.......................................................................................................................................................................... 188 14.4. 主题.......................................................................................................................................................................... 188 14.5. 使用cookie 保存locale 和主题设置.......................................................................................................................189 Chapter 15. Seam Text...............................................................................................................................................................190 15.1. 基本格式化.............................................................................................................................................................. 190 15.2. 输入代码和有特殊字符的文本............................................................................................................................... 192 15.3. 链接.......................................................................................................................................................................... 193 15.4. 输入HTML.............................................................................................................................................................. 193 Chapter 16. iText PDF 生成...................................................................................................................................................... 193 16.1. 使用PDF 支持......................................................................................................................................................... 193 16.1.1. 创建一个文档............................................................................................................................................... 194 16.1.2. 基本的文本元素........................................................................................................................................... 194 16.1.3. 页眉和页脚................................................................................................................................................... 197 16.1.4. 章节............................................................................................................................................................... 198 16.1.5. 列表............................................................................................................................................................... 199 16.1.6. 表格............................................................................................................................................................... 200 16.1.7. 文档常量....................................................................................................................................................... 202 16.1.8. iText 配置...................................................................................................................................................... 202 16.2. 图表.......................................................................................................................................................................... 203 16.3. 柱状图编码.............................................................................................................................................................. 207 16.4. 更详细的文档.......................................................................................................................................................... 208 Chapter 17. 电子邮件................................................................................................................................................................208 17.1. 创建一条消息.......................................................................................................................................................... 208 17.1.1. 附件............................................................................................................................................................... 209 17.1.2. HTML/Text 交替部分..................................................................................................................................210 17.1.3. 多个收件人................................................................................................................................................... 211 17.1.4. 多条信息....................................................................................................................................................... 211 17.1.5. 模板................................................................................................................................................................211 17.1.6. 国际化........................................................................................................................................................... 212 17.1.7. 其它的标识头............................................................................................................................................... 212 17.2. 接收邮件.................................................................................................................................................................. 213 17.3. 配置.......................................................................................................................................................................... 213 17.3.1. mailSession..................................................................................................................................................214 17.4. Meldware.................................................................................................................................................................. 214 17.5. 标签.......................................................................................................................................................................... 215 7 / 347 Chapter 18. 异步和消息............................................................................................................................................................217 18.1. 异步.......................................................................................................................................................................... 217 18.1.1. 异步方法....................................................................................................................................................... 218 18.1.2. 包含Quartz Dispatcher 的异步方法.............................................................................................................220 18.1.3. 异步事件....................................................................................................................................................... 223 18.2. Seam 中的消息........................................................................................................................................................ 223 18.2.1. 配置............................................................................................................................................................... 223 18.2.2. 发送消息....................................................................................................................................................... 223 18.2.3. 利用消息驱动Bean 接收消息......................................................................................................................224 18.2.4. 在客户端接收消息....................................................................................................................................... 224 Chapter 19. 缓存........................................................................................................................................................................225 19.1. 在Seam 中使用JBossCache...................................................................................................................................225 19.2. 页片段缓存.............................................................................................................................................................. 226 Chapter 20. Web Services.......................................................................................................................................................... 227 20.1. 配置和打包.............................................................................................................................................................. 227 20.2. 对话的Web Services................................................................................................................................................228 20.2.1. 建议策略....................................................................................................................................................... 229 20.3. Web Servic 范例....................................................................................................................................................... 229 Chapter 21. Remoting................................................................................................................................................................230 21.1. 配置.......................................................................................................................................................................... 231 21.2. Seam 对象.................................................................................................................................................................231 21.2.1. Hello World 示例.......................................................................................................................................... 231 21.2.2. Seam.Component...........................................................................................................................................233 21.2.3. Seam.Remoting..............................................................................................................................................235 21.3. EL 表达式求值........................................................................................................................................................ 235 21.4. 客户端接口.............................................................................................................................................................. 235 21.5. 上下文...................................................................................................................................................................... 236 21.5.1. 设置和读取对话ID......................................................................................................................................236 21.5.2. 当前对话范围内的远程调用........................................................................................................................ 236 21.6. 批量请求.................................................................................................................................................................. 237 21.7. 使用数据类型.......................................................................................................................................................... 237 21.7.1. Primitives / Basic 类型.................................................................................................................................237 21.7.2. JavaBeans...................................................................................................................................................... 237 21.7.3. Date 和Time................................................................................................................................................. 238 21.7.4. Enums 枚举类型.......................................................................................................................................... 238 21.7.5. Collections 集合........................................................................................................................................... 238 21.8. 调试.......................................................................................................................................................................... 239 21.9. 加载消息.................................................................................................................................................................. 239 21.9.1. 修改信息....................................................................................................................................................... 239 21.9.2. 隐藏加载信息............................................................................................................................................... 239 21.9.3. 自定义加载指示器....................................................................................................................................... 240 21.10. 控制返回数据........................................................................................................................................................ 240 21.10.1. 一般字段的约束......................................................................................................................................... 241 21.10.2. 集合和映射的约束..................................................................................................................................... 241 21.10.3. 特定类型对象的约束................................................................................................................................. 241 21.10.4. 组合约束..................................................................................................................................................... 241 21.11. JMS 消息................................................................................................................................................................ 242 8 / 347 21.11.1. 配置..............................................................................................................................................................242 21.11.2. 订阅JMS 主题............................................................................................................................................ 242 21.11.3. 退订主题..................................................................................................................................................... 242 21.11.4. 调整轮询过程............................................................................................................................................. 242 Chapter 22. Seam 和Google 的Web 工具包(GWT)................................................................................................................243 22.1. 配置.......................................................................................................................................................................... 243 22.2. 准备你的组件.......................................................................................................................................................... 243 22.3. 将GWT 小组件接到Seam 组件............................................................................................................................. 244 22.4. GWT Ant Targets...................................................................................................................................................... 246 Chapter 23. Spring Framework 集成........................................................................................................................................ 247 23.1. 把Seam 组件注入Spring Bean 中.......................................................................................................................... 248 23.2. 将Spring Bean 注入到Seam 组件中...................................................................................................................... 249 23.3. 将Spring Bean 转换为Seam 组件.......................................................................................................................... 250 23.4. Seam 作用域的Spring Bean................................................................................................................................... 250 23.5. 使用Spring PlatformTransactionManagement........................................................................................................251 23.6. 在Spring 中使用Seam 管理的持久化上下文....................................................................................................... 251 23.7. 在Spring 中使用Seam 管理的Hibernate 会话......................................................................................................253 23.8. 作为Seam 组件的Spring 应用上下文................................................................................................................... 253 23.9. 使用Spring TaskExecutor 的@Asynchronous.........................................................................................................253 Chapter 24. Hibernate Search.................................................................................................................................................... 254 24.1. 简介.......................................................................................................................................................................... 254 24.2. 配置.......................................................................................................................................................................... 254 Note............................................................................................................................................................................255 Note............................................................................................................................................................................255 24.3. 用法.......................................................................................................................................................................... 256 Note............................................................................................................................................................................256 Caution.......................................................................................................................................................................257 Chapter 25. Seam 配置和Seam 应用程序打包........................................................................................................................258 25.1. Seam 基本配置........................................................................................................................................................ 258 25.1.1. 将SeamJSF 和servlet 容器集成.......................................................................................................... 258 25.1.2. 使用Facelets................................................................................................................................................. 258 25.1.3. Seam Resource Servlet.................................................................................................................................. 259 25.1.4. Seam Servlet 过滤器.....................................................................................................................................259 25.1.5. 将Seam 与你的EJB 容器集成.................................................................................................................... 262 25.1.6. 切记!........................................................................................................................................................... 263 25.2. 在Java EE 5 中配置Seam...................................................................................................................................... 264 25.2.1. 打包............................................................................................................................................................... 264 25.3. 在J2EE 中配置Seam..............................................................................................................................................265 25.3.1. 在Seam 中引导Hibernate........................................................................................................................... 266 25.3.2. 在Seam 中引导JPA.....................................................................................................................................266 25.3.3. 打包............................................................................................................................................................... 266 25.4. 在Java SE 中配置Seam,没有内嵌JBoss............................................................................................................267 25.5. 用嵌入式的JBoss 在Java SE 中配置Seam...........................................................................................................267 25.5.1. 安装嵌入式的JBoss.....................................................................................................................................268 25.5.2. 打包............................................................................................................................................................... 268 25.6. 在Seam 中配置jBPM.............................................................................................................................................269 25.6.1. 打包............................................................................................................................................................... 270 9 / 347 25.7. 在Portal 中配置Seam.............................................................................................................................................271 25.8. 在JBoss AS 中配置SFSB 和会话超时...................................................................................................................271 Chapter 26. Seam on OC4J........................................................................................................................................................272 26.1. jee5/booking 实例................................................................................................................................................... 272 26.1.1. 预订酒店实例的依赖包............................................................................................................................... 273 26.1.2. OC4J 需要的额外依赖包..............................................................................................................................273 26.1.3. 配置文件的改变........................................................................................................................................... 273 26.1.4. 构建jee5/booking 实例............................................................................................................................... 274 26.2. 部署Seam 应用程序到OC4J 中............................................................................................................................. 274 26.3. 将一个使用seam-gen 创建的应用程序部署到OC4J 中。.............................................................................. 275 26.3.1. seam-gen 之类的应用程序的OC4J 部署描述符........................................................................................ 280 Chapter 27. Seam 注解..............................................................................................................................................................281 27.1. 用于定义组件的注解.............................................................................................................................................. 281 27.2. 用于双向注入的注解.............................................................................................................................................. 283 27.3. 关于组件生命周期方法的注解............................................................................................................................... 286 27.4. 用于声明上下文的注解.......................................................................................................................................... 286 27.5. 用于在J2EE 环境中使用Seam JavaBean 组件的注解......................................................................................... 289 27.6. 用于异常的注解...................................................................................................................................................... 289 27.7. 用于Seam Remoting 的注解................................................................................................................................. 290 27.8. 用于Seam 拦截器(interceptor)的注解...............................................................................................................290 27.9. 用于异步(asynchronicity)的注解....................................................................................................................... 291 27.10. 用于JSF 的注解.................................................................................................................................................... 291 27.10.1. 和dataTable 一起使用的注解...................................................................................................................292 27.11. 用于数据绑定的元数据注解................................................................................................................................ 292 27.12. 用于封包(packing)的注解.................................................................................................................................. 293 27.13. 用于和Servlet 容器集成的注解............................................................................................................................293 Chapter 28. 内置Seam 组件.....................................................................................................................................................294 28.1. 上下文注入组件...................................................................................................................................................... 294 28.2. 工具组件.................................................................................................................................................................. 294 28.3. 组件的国际化和主题.............................................................................................................................................. 296 28.4. 控制对话组件.......................................................................................................................................................... 297 28.5. 与jBPM 相关的组件...............................................................................................................................................298 28.6. 与安全相关的组件.................................................................................................................................................. 300 28.7. 与JMS 相关的组件.................................................................................................................................................300 28.8. 与邮件相关的组件.................................................................................................................................................. 300 28.9. 基础组件.................................................................................................................................................................. 301 28.10. 杂项组件................................................................................................................................................................ 303 28.11. 特殊组件.................................................................................................................................................................303 Chapter 29. SeamJSF 控件..................................................................................................................................................305 29.1. 标签.......................................................................................................................................................................... 305 29.2. 注解.......................................................................................................................................................................... 319 Chapter 30. 表达式语言增强....................................................................................................................................................320 30.1. 参数方法绑定.......................................................................................................................................................... 320 30.1.1. 用法............................................................................................................................................................... 320 30.1.2. 限制............................................................................................................................................................... 321 30.2. 参数值绑定.............................................................................................................................................................. 321 30.3. 映射.......................................................................................................................................................................... 322 10 / 347 Chapter 31. 测试Seam 应用程序.....................................................................................................
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值