`

从Seam2.2升级到2.3

    博客分类:
  • JSF
阅读更多

Migration from 2.2 to 2.3

 

说明:因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 测试框架。

升级步骤参见 seam 文档

 

Seam 2.3.1.Final Reference Guide

Jboss EAP 6 Migration Guide

RichFaces 3.3.3 and JSF 2.0

Migrate the Seam 2.2 Booking Example to JBoss EAP 6

分享到:
评论

相关推荐

    jboss-seam2.0文档

    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 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java ...

    jboss seam 教程

    ##### 2.3 Seam与jBPM:待办事项示例 - **理解代码**:该部分介绍了一个结合Seam与jBPM(Java Business Process Model)实现的待办事项管理应用,涉及流程设计、任务分配等。 - **工作原理**:通过Seam与jBPM的集成...

    seam_in_action

    #### 2.2 第二部分:Seam基础 - **第3章:Seam生命周期**:深入探讨 Seam 生命周期的概念及其对应用程序的影响。 - **第4章:组件和上下文**:讲解 Seam 中组件和上下文的基本概念,以及它们如何协作来实现业务逻辑...

    jboss seam 学习资料,seam in action和官方手册

    **JBoss Seam 学习资源概述** JBoss Seam 是一个开源的应用程序框架,它整合了JavaServer Faces (JSF)、Enterprise JavaBeans (EJB)、Java Persistence API (JPA) 和其他Java EE技术,旨在简化开发过程,提高开发...

    Seam Carving的C++实现代码

    5. **删除/添加接缝**:沿着找到的接缝,按照能量从低到高或从高到低的顺序,删除或添加像素。在删除像素时,需要注意保持相邻像素的连续性,避免出现空洞。在添加像素时,可以采用插值方法,如最近邻插值或双线性...

    seam_carving 代码实现 seam

    在垂直方向上,拉链的每一像素与上一行的像素相对应,而在水平方向上,拉链则由图像的一边延伸到另一边。 3. **删除或添加拉链**: 要缩小图像,就删除这些低能量的像素行或列;相反,要扩大图像,则在拉链路径上...

    MATLAB_Seam_Carving_seamcarving_

    MATLAB_Seam_Carving_seamcarving_ 是一个与图像处理相关的项目,主要涉及到一种称为“seam carving”的技术,这是一种动态图像调整大小的方法,它可以在不改变图像整体视觉效果的情况下,增加或减少图像的宽度和...

    Seam框架文档简述

    这种状态管理机制覆盖了从页面级别到整个对话过程,极大地简化了状态管理的复杂度。 ##### 4. 扩展的上下文 Seam扩展了Java Servlet规范中的上下文模型,引入了对话上下文和业务流程上下文的概念。这些上下文扩展...

    JBOSS SEAM组件中文手册

    3. **注入(Injection)**: Seam支持依赖注入,可以将一个组件的实例自动注入到其他组件中,无需手动创建对象或管理依赖关系。 4. **导航和流程控制(Navigation and Flow Control)**: Seam提供了强大的导航机制,...

    为Seam做好准备

    "为Seam做好准备"这个标题暗示我们即将探讨的是关于Seam框架的入门与准备工作。Seam是一个Java EE集成框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Enterprise JavaBeans(EJB)3.0以及其他...

    seam需要的jar包

    Seam框架是一个全面的Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB、CDI(Contexts and Dependency Injection)以及许多其他Java EE技术,为开发者提供了强大的组件模型和丰富的功能,旨在简化...

    Jboss Seam中文版

    这是一个全面的Seam应用案例,涵盖了从前端界面到后端服务的所有方面。 1. **系统概况**:整体介绍了系统的架构设计和主要功能模块。 2. **理解Seam业务(Conversation)**:重点讲述了Seam如何管理用户会话,保持...

    seam的注解和标签

    Seam是一个Java EE框架,它将JavaServer Faces(JSF)、Java Persistence API(JPA)、Inversion of Control(IoC)和Enterprise JavaBeans(EJB)等技术融合在一起,为开发复杂的Web应用程序提供了便利。在Seam框架...

    seam in action 中文 english

    《Seam in Action》是一本专门探讨Seam框架的书籍,该书分为中文和英文两个版本,对于初学者和有经验的开发者来说都是一个宝贵的资源。Seam是一个强大的Java EE框架,它集成了多种技术,如JavaServer Faces (JSF)、...

    seam插件下载地址及安装过程

    首先,安装 Seam 插件涉及到下载 JBossTools。在 Eclipse 3.4.2 中,你可以通过 Help -&gt; Software Updates -&gt; Available Software -&gt; Manage Sites 来添加新的软件源。下载 JBossTools-3.0.3.GA.zip,并通过 Archive...

    seam参考手册中文版

    - **部署为EAR包**: 演示了如何将Seam应用打包并部署到生产环境。 - **热部署**: 介绍Seam支持的热部署特性,有助于提升开发效率。 #### 三、上下文相关的组件模型 ##### Seam上下文层次 - **无状态上下文**:...

Global site tag (gtag.js) - Google Analytics