说明:因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 - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
seam_carving代码实现 图像缩放
Seam 是一种业级 企 Java 的应规用程序框架。它的灵感源自下列原 : 只有一种“工具” Seam为 应 业务业业 义 种统 组 你的 用程序中所有的 定 了一 一的 件模型。 Seam组件可能是 态义 关关 态 有状 的,包含与几...
seam in action seam in action seam in action seam in action seam in action seam in action seam in action
SeamCarving的C++实现代码,使用opencv库。包含完整项目工程及测试图像,可直接使用
seam资料seam资料seam资料seam资料seam资料seam资料seam资料seam资料
seam框架需要的所有jar包,支持seam ui组件
seam carving的相关代码实现
Jboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in ActionJboss Seam in Action
JBOSS_SEAM配置
这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB ... Seam组件可以同时作为一个Web Service进行调用,异步地从客户端JavaScript或者Google Web Toolkit,或者当然也可以直接从JSF调用。
seam级联菜单例子
Seam2.10安全API为你使用Seam开发的应用程序提供了大量与安全认证相关的特性,包含了以下几块: • 安全验证 - 一个可扩展的、基于JAAS的安全验证层,允许用户to authenticate against any security provider • ...
JBoss Seam JBoss Seam JBoss Seam
seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。
seam中的注解总结,包括三种JPA和seam自身的标签
seam下一代web开发框架
JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN
个人收集整理的最全面seam文档 包括seam_reference(中、英) richfaces jsf a4j 以及seam一些其他主要功能
seam介绍