Author: manaRH
Date: 2012-09-02 06:12:10 -0400 (Sun, 02 Sep 2012)
New Revision: 15099
Removed:
branches/community/Seam_2_3/examples-ee6/update_process.txt
Modified:
branches/community/Seam_2_3/distribution/src/main/assembly/seam23migration.txt
Log:
updated migration text
Modified: branches/community/Seam_2_3/distribution/src/main/assembly/seam23migration.txt
===================================================================
---
branches/community/Seam_2_3/distribution/src/main/assembly/seam23migration.txt 2012-09-01
17:20:42 UTC (rev 15098)
+++
branches/community/Seam_2_3/distribution/src/main/assembly/seam23migration.txt 2012-09-02
10:12:10 UTC (rev 15099)
@@ -4,8 +4,8 @@
of. This process should not be too painful - if you get stuck, just refer back
to the updated Seam examples.
-This migration guide assumes you are using Seam 2.0, if you are migrating from
-Seam 1.2, see the seam2migration guide as well.
+This migration guide assumes you are using Seam 2.2, if you are migrating from
+Seam 1.2 or 2.0, see the seam2migration.txt and seam21migration.txt guide as well.
Testing
@@ -13,39 +13,135 @@
SeamTest and JBoss Embedded is legacy components and have many limitations and we
doesn't support it now.
We now bring Arquillian as a replacement of JBoss Embedded and integration testing
-is provided by org.jboss.seam.mock.JUnitSeamTest. More in reference documentation guide.
+is provided by org.jboss.seam.mock.JUnitSeamTest, dbunit testing is provided by
org.jboss.seam.mock.DBJUnitSeamTest.
+More due some issues with TestNG in Arquillian, we use JUnit as prefered test framework.
Migration to Junit and
+Arquillian goes in the following steps:
+1. Add @RunWith(Arquillian.class) annotation to your test class.
+2. Your test class should extend JUnitSeamTest instead of SeamTest.
+3. Add a helper class for instance like
+examples/booking/booking-tests/src/test/java/org/jboss/seam/example/booking/test/Deployments.java
+4. Add a method like public static org.jboss.shrinkwrap.api.Archive<?>
createDeployment(){} for creating deployment
+archive for Arquillian environment with annotations
+@Deployment(name="<your_test_name>") and @OverProtocol("Servlet
3.0")
+5. Add arquillian.xml file into root of your classpath for running test(s). The file
content should specify path to
+remote or managed container and some specific options for JVM or Arquillian. Example of
arquillian file is at
+examples/booking/booking-tests/src/test/resources-integration/arquillian.xml.
+More details in Seam reference documentation guide in chapter 37. Testing Seam
applications.
Schemas
----------------
+
XML schemas for validation Files that use the Seam 2.2 XSDs should be updated to refer to
the 2.3 XSDs. Current Schemas URL is
www.jboss.org/schema/seam/<schema>-2.3.xsd.
-Bean Validation
+Bean Validation instead of Hibernate Validator
------------------
+
You need to migrate from org.hibernate.validator.* validator annotations to
java.validation.constraint.* equivalent
for instance:
org.hibernate.validator.Length to java.validation.constraint.Size,
org.hibernate.validator.NotNull to java.validation.constraint.NotNull,
org.hibernate.validator.Pattern to java.validation.constraint.Pattern.
+JSF 1 to JSF 2 Facelets
+------------------
+Configuration file faces-config.xml is not required to be in your application, if you
anyway would like to have it,
+change version to 2.1.
+
+All your application JSF templates should use only facelets technology.
+
+Here it is required to convert <head>/<body> tags to
<h:head><h:body>
+
+
+Java EE 6 upgrade
+-----------------
+
+Seam 2.3 can integrate with the major upgrades in Java EE (from 5 to 6). You can use
persistence with JPA 2, EJB 3.1 and
+Bean Validation.
+
+Using JPA 2 requires to change version to 2.0 in your persistence.xml file. Version in
application.xml should be 6.
+Migration of web.xml file is in changing version to 3.0.
+
+Examples of changed headers with versions are the following.
+
+persistence.xml:
+<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">
+
+application.xml:
+<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">
+
+web.xml:
+<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">
+
+Further JNDI string creation changed due Java EE 6 JNDI portable syntax, and you have to
change all JNDI strings from
+<your_application>/#{ejbName}/local to
java:app/<application-module-name>/#{ejbName} like
+ for instance in WEB-INF/components.xml change jndiPattern from:
seam-mail/#{ejbName}/local to java:app/seam-mail-ejb/#{ejbName}
+
+JBoss AS 7.1 deployment
+--------------------------
+
+If you using for development or testing default datasource in JBoss AS 7.1, change jndi
string in your persistence.xml
+from java:/DefaultDS to java:jboss/datasources/ExampleDS.
+
+JBoss AS 7 has got refactored classloading and specific classloading of bundled or
provided libraries can be managed in
+jboss-deployment-structure.xml, which should be placed in META-INF directory of your
application. Minimal content for
+Seam 2.3 based application is:
+<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>
+More details are described in JBoss AS 7 documentation.
+
+
+
Dependency changes (Maven)
--------------------------
The "provided" platform is now JBoss AS 7.1.x, therefore all Java EE
dependencies included
-in AS 7 are now marked as provided.
+in AS 7 are now marked as provided. Seam uses JBoss Java EE BOM files through Seam BOM
file for declaring dependencies.
+You should add import of org.jboss.seam:bom only and then just use the dependency
groupId:artifactId[:scope] wherever in
+your maven project.
-Seam UI tags
---------------------------
-We use Richfaces CDK for generation of Seam UI taglib, unfortunately Richfaces CDK 4
doesn't support to create custom tags for converter or validator:
-Affected seam tags are:
- convertEntity
- convertEnum
- convertAtomicBoolean
- convertAtomicInteger
- convertAtomicLong
- validateFormattedText
-There can be used standard JSF 2 tags like f:converter or f:validator for the simulating
the old behaviour of s:convert* or s:validate* tags.
-
+<dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.seam</groupId>
+ <artifactId>bom</artifactId>
+ <version>2.3.0.CR1</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>
+
+
+
Deleted: branches/community/Seam_2_3/examples-ee6/update_process.txt
===================================================================
--- branches/community/Seam_2_3/examples-ee6/update_process.txt 2012-09-01 17:20:42 UTC
(rev 15098)
+++ branches/community/Seam_2_3/examples-ee6/update_process.txt 2012-09-02 10:12:10 UTC
(rev 15099)
@@ -1,222 +0,0 @@
-In each test class
-==================
-Add @RunWith(Arquillian.class) annotation to the class
-import org.jboss.arquillian.junit.Arquillian;
-extends JUnitSeamTest
-Change all @Test annotation from TestNG to JUnit
-
-Add the method:
- @Deployment(name="<project>Test")
- @OverProtocol("Servlet 3.0")
- public static Archive<?> createDeployment()
- {
- EnterpriseArchive er = Deployments.<project>Deployment();
- WebArchive web = er.getAsType(WebArchive.class,
"<project>-web.war");
-
- web.addClasses(<testName>.class);
-
- return er;
- }
-
-
-In source folder of *-tests
-===========================
-Create a Deployments class with the content:
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.importer.ZipImporter;
-import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
-
-import java.io.File;
-
-public class Deployments {
- public static EnterpriseArchive <project>Deployment() {
- return ShrinkWrap.create(ZipImporter.class,
"seam-<project>.ear").importFrom(new
File("../<project>-ear/target/seam-<project>.ear"))
- .as(EnterpriseArchive.class);
- }
-}
-
-
-Arquillian.xml
-==============
-Add arquillian.xml in folder resource-integration. Contents of arquillian.xml:
-
-<?xml version="1.0" encoding="UTF-8"?>
-<arquillian
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xmlns="http://jboss.org/schema/arquillian"
-
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
-
- <engine>
- <property name="deploymentExportPath">target/</property>
- </engine>
-
- <container qualifier="jboss" default="true">
- <configuration>
- <property name="javaVmArguments">-Xmx1024m
-XX:MaxPermSize=512m</property>
- <property
name="jbossHome">target/jboss-as-${version.jbossas7}</property>
- </configuration>
- </container>
-</arquillian>
-
-
-
-
-In *-tests.pom
-===============
-add hibernate-validator
-<example.context.path>seam-<module-name></example.context.path>
-
-
-plugins should be:
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>selenium-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>failsafe-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
-
-
-
-In faces-config.xml
-===================
-
-Remove:
- <!-- Facelets support -->
- <application>
- <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
- </application>
-
-Upgrade version to 2.1
-
-In jboss-deployment-structure.xml
-=================================
-Remove exclusion
-Remove slot attributes
-Include <module name="org.antlr" export="true"/>
-
-In web.xml
-==========
-Migrate version from 2.5 to 3.0
-
-In all xhtml pages
-===================
-Convert
- <head><body>and<html> tags to
<h:head><h:body>and<h:html>
- with <(/?)head> <$1h:head>
- with <(/?)body> <$1h:body>
- with <(/?)html> <$1h:html>
-
-
-
-in persistence.xml
-change from <non-jta-data-source>java:/DefaultDS</non-jta-data-source> to
<non-jta-data-source>java:jboss/datasources/ExampleDS</non-jta-data-source>
-
-in *-web.pom
-============
-
- <jndiPattern>([^/]*)?/\#\{ejbName\}/local</jndiPattern>
- replace with <jndiPattern>java:app/$1/#{ejbName}</jndiPattern>
- go from: seam-mail/#{ejbName}/local
- <jndiPattern>java:app/seam-mail-ejb/#{ejbName}</jndiPattern>
-
- remove:
- <exclusions>
- <exclusion>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xpp3</groupId>
- <artifactId>xpp3_min</artifactId>
- </exclusion>
- </exclusions>
-
-add:
- <dependency>
- <groupId>org.hibernate.javax.persistence</groupId>
- <artifactId>hibernate-jpa-2.0-api</artifactId>
- <scope>provided</scope>
- </dependency>
-
-add the rest as:
-
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.el</groupId>
- <artifactId>jboss-el</artifactId>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.richfaces.ui</groupId>
- <artifactId>richfaces-components-ui</artifactId>
- </dependency>
- <dependency>
- <groupId>org.richfaces.core</groupId>
- <artifactId>richfaces-core-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.richfaces.core</groupId>
- <artifactId>richfaces-core-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.spec.javax.faces</groupId>
- <artifactId>jboss-jsf-api_2.0_spec</artifactId>
- <scope>provided</scope>
- </dependency>
-
- Get rid of <activation> on <id>jbossas51</id>
-
- remove maven dependency plugin
- <!--<plugin>-->
- <!--<groupId>org.apache.maven.plugins</groupId>-->
- <!--<artifactId>maven-dependency-plugin</artifactId>-->
- <!--<executions>-->
- <!--<execution>-->
- <!--<id>unpack</id>-->
- <!--<phase>package</phase>-->
- <!--<goals>-->
- <!--<goal>unpack</goal>-->
- <!--</goals>-->
- <!--<configuration>-->
- <!--<artifactItems>-->
- <!--<artifactItem>-->
-
<!--<groupId>org.jboss.seam.examples</groupId>-->
-
<!--<artifactId>groovybooking-web</artifactId>-->
- <!--<type>war</type>-->
- <!--<overWrite>true</overWrite>-->
-
<!--<outputDirectory>${project.build.directory}/${project.build.finalName}-exploded/${project.build.finalName}.war</outputDirectory>-->
- <!--</artifactItem>-->
- <!--</artifactItems>-->
- <!--</configuration>-->
- <!--</execution>-->
- <!--</executions>-->
- <!--</plugin>-->
-
-In *-ejb.pom
-===========
-All hibernate dependencies will need to be listed as 'provided'
-
-
-In src/main/resources/persistence.xml
-==================
-Change <jta-data-source>java:/icefaces-bookingDatasource</jta-data-source>
to
-<non-jta-data-source>java:jboss/datasources/ExampleDS</non-jta-data-source>
-Run tests with:
-mvn -Darquillian=jbossas-managed-7 clean test integration-test