说明:因seam 2.3不支持JSF 1.x,如果要在Jboss EAP 6中使用seam 2.2/Richfaces 3,需将org.jboss.seam.transaction.Transaction换为seam 2.3的(原因是Jboss JNDI命名规则改变)。
1. Maven 依赖
Seam BOM 的 pom 文件中包含了seam 2.3 的推荐依赖和版本,可以在 maven pom 文件中引用。用法如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>bom</artifactId >
<version>2.3.1.Final</version >
<type>pom</type >
<scope>import</ scope >
</dependency>
...
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
<type>ejb</type>
<dependency>
...
</dependencies>
2. 升级 XML Schema
2.1 升级 Seam Schema
涉及的文件有components.xml和page.xml。
除将版本号由“ 2.2 ”改为“ 2.3 ”外,注意 seam2.3 的 namespace 不同于 2.2 ,由“ jboss.com/products/seam/ ” 改成了“ jboss.org/schema/seam ”。
所有使用seam标签的xhtml页面也需要修改。
2.2 修改 Java EE 6 Schema
涉及的文件有:
1) persistence.xml
升级为 JPA2 。
<persistence xmlns="http://java.sun.com/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
2) application.xml
使用 Java EE 6 。
<application xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version ="6">
3) Web.xml
使用 servlet3.0 。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
4) faces-config.xml
<faces-config version="2.1"xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd">
3. 升级 Jave EE 6
Seam2.3 支持 Java EE 6 ,支持JSF2、JPA2 、 EJB3.1 和 Bean Validation。
3.1 升级JPA 2.0
Seam 2.3仅支持hibernate 4,JPA2.0 是向后兼容的,因此不必升级任何注解和类。
3.2 使用 Bean Validation 取代 Hibernate Validator
Bean Validation 是 Java EE 6 中的一个新技术标准( JSR-303 ), Hibernate Validator 4.x 是它的一个参考实现。要对原来的 hibernate 注解进行替换,如:
• org.hibernate.validator.Length 改为 javax.validation.constraint.Size
• org.hibernate.validator.NotNull 改为 javax.validation.constraint.NotNull
• org.hibernate.validator.Pattern 改为 javax.validation.constraint.Pattern
3.3 Facelets从 JSF 1 升级到 JSF 2
Seam 2.3仅支持JSF2, 页面中的 <head>/<body> 标签要转换为 <h:head>/<h:body> 。
Richfaces 升级为 4 (也可使用richfaces 3.3,参见后面链接)。
3.4 使用兼容的 JNDI
Java EE 6 定义新的JNDI语法规则。
components.xml 中的 jndi-pattern 需从“your_application/#{ejbName}/local ”,修改为“ java:app/ application-moule-name /#{ejbName} ”。
在components.xml中添加:
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam-2.3.1.Final/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam-2.3.1.Final/TimerServiceDispatcher"/>
注意: jndi-name要与Jboss启动时,日志中输出的名字一致,即seam包名要与使用的一致。
persistence.xml 中的 JNDI 数据源,如使用了Jboss 默认数据源,要由“ java:/DefaultDS ”改为“ java:jboss/datasources/DefaultDS”。
4. 部署到 Jboss EAP 6
4.1 部署 META-INF 目录或 WAR 的 WEB-INF 目录中新增 jboss-deployment-structure.xml 文件。 Seam2.3 的最小基本配置如下:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="org.dom4j" export="true" />
<module name="org.apache.commons.collections" export="true" />
<module name="javax.faces.api" export="true" /> <!-- keep there only if you use JSF
as view technology -->
</dependencies>
</deployment>
</jboss-deployment-structure>
4.2 升级 Datasource
以前的数据源文件 ( *-ds.xml) 是简单的 xml 文件,现在可以使用Iron-Jacamar ( Iron-Jacamar 是 Jboss 的 JCA 项目)文件,将其放到EAR 的 META-INF 目录或 WAR 的 WEB-INF 目录中。
Iron-Jacamar 文件样例:
<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema">
<datasource jndi-name="java:/jboss/seamdiscsDatasource"
enabled="true" use-java-context="true" pool-name="seamdiscs">
<connection-url>jdbc:hsqldb:.</connection-url>
<driver>org.hsqldb.jdbcDriver</driver>
<security>
<user-name>sa</user-name>
<password></password>
</security>
</datasource>
</datasources>
Iron-Jacamar文件已过期,推荐在standalone.xml/domain.xml中配置数据源。
4.3 EAP 6不再支持jboss-app.xml文件,删除即可。
5. 测试框架的变化
使用 Arquillian 取代了嵌入式 Jboss ,使用 JunitSeamTest 替代 SeamTest ,使用 DBJUnitSeamTest 替代 DBUnitSeamTest 进行 DBUnit 测试。由于使用 TestNG 和 Arquillian 有断言问题,因此首选 Junit 测试框架。
相关推荐
2.3 CDI(Contexts and Dependency Injection) Seam 2.0引入了CDI,这是Java EE 6中的一个重要组成部分,它提供了一种统一的依赖注入机制,简化了对象的生命周期管理和依赖管理。 2.4 JPA集成 Seam 2.0与JPA的集成...
### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java ...
##### 2.3 Seam与jBPM:待办事项示例 - **理解代码**:该部分介绍了一个结合Seam与jBPM(Java Business Process Model)实现的待办事项管理应用,涉及流程设计、任务分配等。 - **工作原理**:通过Seam与jBPM的集成...
#### 2.2 第二部分:Seam基础 - **第3章:Seam生命周期**:深入探讨 Seam 生命周期的概念及其对应用程序的影响。 - **第4章:组件和上下文**:讲解 Seam 中组件和上下文的基本概念,以及它们如何协作来实现业务逻辑...
**JBoss Seam 学习资源概述** JBoss Seam 是一个开源的应用程序框架,它整合了JavaServer Faces (JSF)、Enterprise JavaBeans (EJB)、Java Persistence API (JPA) 和其他Java EE技术,旨在简化开发过程,提高开发...
5. **删除/添加接缝**:沿着找到的接缝,按照能量从低到高或从高到低的顺序,删除或添加像素。在删除像素时,需要注意保持相邻像素的连续性,避免出现空洞。在添加像素时,可以采用插值方法,如最近邻插值或双线性...
在垂直方向上,拉链的每一像素与上一行的像素相对应,而在水平方向上,拉链则由图像的一边延伸到另一边。 3. **删除或添加拉链**: 要缩小图像,就删除这些低能量的像素行或列;相反,要扩大图像,则在拉链路径上...
MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam carving”的技术,这是一种动态图像调整大小的方法,它可以在不改变图像整体视觉效果的情况下,增加或减少图像的宽度和...
这种状态管理机制覆盖了从页面级别到整个对话过程,极大地简化了状态管理的复杂度。 ##### 4. 扩展的上下文 Seam扩展了Java Servlet规范中的上下文模型,引入了对话上下文和业务流程上下文的概念。这些上下文扩展...
3. **注入(Injection)**: Seam支持依赖注入,可以将一个组件的实例自动注入到其他组件中,无需手动创建对象或管理依赖关系。 4. **导航和流程控制(Navigation and Flow Control)**: Seam提供了强大的导航机制,...
"为Seam做好准备"这个标题暗示我们即将探讨的是关于Seam框架的入门与准备工作。Seam是一个Java EE集成框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Enterprise JavaBeans(EJB)3.0以及其他...
Seam框架是一个全面的Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)以及许多其他Java EE技术,为开发者提供了强大的组件模型和丰富的功能,旨在简化...
这是一个全面的Seam应用案例,涵盖了从前端界面到后端服务的所有方面。 1. **系统概况**:整体介绍了系统的架构设计和主要功能模块。 2. **理解Seam业务(Conversation)**:重点讲述了Seam如何管理用户会话,保持...
Seam是一个Java EE框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Inversion of Control(IoC)和Enterprise JavaBeans(EJB)等技术融合在一起,为开发复杂的Web应用程序提供了便利。在Seam框架...
《Seam in Action》是一本专门探讨Seam框架的书籍,该书分为中文和英文两个版本,对于初学者和有经验的开发者来说都是一个宝贵的资源。Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、...
首先,安装 Seam 插件涉及到下载 JBossTools。在 Eclipse 3.4.2 中,你可以通过 Help -> Software Updates -> Available Software -> Manage Sites 来添加新的软件源。下载 JBossTools-3.0.3.GA.zip,并通过 Archive...
- **部署为EAR包**: 演示了如何将Seam应用打包并部署到生产环境。 - **热部署**: 介绍Seam支持的热部署特性,有助于提升开发效率。 #### 三、上下文相关的组件模型 ##### Seam上下文层次 - **无状态上下文**:...