12 Replies Latest reply on Aug 23, 2011 6:21 PM by Shane Bryzak

    Seam 2 or 3

    Farouk Alhassan Newbie

      We are just beginning a new project and plan on using Java EE 6 platform and related frameworks. Also for consistency, We want to use JBoss Frameworks, appliations and servers wherever possible. Obviously, that means Seam for our web framework. Since Seam 3 is not yet ready and we can't sit around waiting (green light already given) am wondering what is the best approach to take. Should we go to seam 2 and later upgrade when its all stable done and fully tested or should we start with Seam 3 and fight along as it is being released.


      Each option has its good side and bad side which are obvious but one main concern is how backwards compatible Seam 3 will be and how much effort it is to get up and running with seam 3 (No documentattion found yet).


      Any feedbacks welcomed.

        • 1. Re: Seam 2 or 3
          Pete Muir Master

          IMO you sum up the options and pros/cons very well :-) I take it you read this?

          • 2. Re: Seam 2 or 3
            Farouk Alhassan Newbie

            yes I read that and the comments but can't find anything/guide on using the seam 3.0.0 alpha 2 release.

            • 3. Re: Seam 2 or 3
              Nessus You Newbie

              Same concern here. I also would like to kick off a new project development harnessing the power and simplicity of Seam. Need inside and/or experience guidance. Kindest regards.

              • 4. Re: Seam 2 or 3
                Nicklas Karlsson Master

                I've started prototyping on an application with the stack



                • JBoss AS 6 (M3 currently)

                • Weld (Seam 3)

                • EJB 3.1 (WAR)

                • Bean Validation

                • JPA 2 (Hibernate)

                • Envers

                • JSF 2

                • ICEfaces 2 (ish)



                for development starting after the summer vacation and production use to start at the beginning of next year (pharmaceutical industry). There are still some gotchas with the AS integration and EJB + WAR combo but probably nothing that can't be fixed if Pete pulls some all-nighters ;-)

                • 5. Re: Seam 2 or 3
                  Nessus You Newbie

                  Will follow you, Nicklas. Seems we can grow up with Seam.


                  while would you break it down for me?





                  1. JBoss AS 6 (M3 currently) - also my choice

                  2. Weld (Seam 3) - fundamental support of interceptors/CDI

                  3. EJB 3.1 (WAR) - by newing a Web Project?

                  4. Bean Validation  - by annotation?

                  5. JPA 2 (Hibernate) - by configuration?

                  6. Envers - will pick it up along with the development

                  7. JSF 2 - if not applicable in WAP/WML, how can I harness the in-/out-jection of JSF?

                  8. ICEfaces 2 (ish) - for administration pages, will also pick it up later.



                  I also need





                  1. Quartz

                  2. iText to generate PDF/Excel reports

                  • 6. Re: Seam 2 or 3
                    Nessus You Newbie

                    Besides, Nicklas, I want to know how do you create a skeleton project using Weld like as a Seam 2 project using seam-gen.


                    Also I feel a bit scared to compose a build.xml from the scratch.


                    Would you like to help show how you set up your environment and prepare all the required prerequisites before starting to implement the entity beans, business logics and page renderings. Thank you sincerely as I understand it's tedious and time consuming.

                    • 7. Re: Seam 2 or 3
                      Nicklas Karlsson Master

                      I'm a maven-n00b myself and the archetypes will probably do a better job once they're finished but I downloaded M3 and started a new Maven project in m2eclipse. I also tossed the hibernate-envers.jar in the server common lib to simplify the dep-tree in my project. Then I picked together my pom.xml to something like


                      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
                           <modelVersion>4.0.0</modelVersion>
                           <groupId>fi.nik</groupId>
                           <artifactId>EE6</artifactId>
                           <version>1.0.0-SNAPSHOT</version>
                           <packaging>war</packaging>
                      
                           <properties>
                                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                                <arquillian.version>1.0.0.Alpha2</arquillian.version>
                                <icefaces.version>2.0-A3</icefaces.version>
                                <hibernate.version>3.5.1-Final</hibernate.version>
                           </properties>
                      
                           <pluginRepositories>
                                <pluginRepository>
                                     <id>jfrog</id>
                                     <url>http://repo.jfrog.org/artifactory/plugins-releases/</url>
                                </pluginRepository>
                                <pluginRepository>
                                     <id>maven plugins</id>
                                     <url>http://maven-annotation-plugin.googlecode.com/svn/trunk/mavenrepo/</url>
                                </pluginRepository>
                           </pluginRepositories>
                      
                           <dependencies>
                                <dependency>
                                     <groupId>org.jboss.spec</groupId>
                                     <artifactId>jboss-javaee-6.0</artifactId>
                                     <version>1.0.0.Beta4</version>
                                     <type>pom</type>
                                     <scope>provided</scope>
                                </dependency>
                                <dependency>
                                     <groupId>junit</groupId>
                                     <artifactId>junit</artifactId>
                                     <version>4.8.1</version>
                                     <scope>test</scope>
                                </dependency>
                                <dependency>
                                     <groupId>org.dbunit</groupId>
                                     <artifactId>dbunit</artifactId>
                                     <version>2.4.7</version>
                                     <scope>test</scope>
                                </dependency>
                                <dependency>
                                     <groupId>org.hibernate</groupId>
                                     <artifactId>hibernate-envers</artifactId>
                                     <version>${hibernate.version}</version>
                                     <scope>provided</scope>
                                </dependency>
                                <dependency>
                                     <groupId>org.icefaces</groupId>
                                     <artifactId>icefaces</artifactId>
                                     <version>${icefaces.version}</version>
                                </dependency>
                                <dependency>
                                     <groupId>org.icefaces</groupId>
                                     <artifactId>icepush</artifactId>
                                     <version>${icefaces.version}</version>
                                </dependency>
                                <dependency>
                                     <groupId>org.jboss.arquillian</groupId>
                                     <artifactId>arquillian-junit</artifactId>
                                     <version>${arquillian.version}</version>
                                     <scope>test</scope>
                                </dependency>
                           </dependencies>
                      
                           <build>
                                <plugins>
                                     <plugin>
                                          <groupId>org.apache.maven.plugins</groupId>
                                          <artifactId>maven-compiler-plugin</artifactId>
                                          <version>2.3.1</version>
                                          <configuration>
                                               <source>1.6</source>
                                               <target>1.6</target>
                                               <compilerArgument>-proc:none</compilerArgument>
                                          </configuration>
                                     </plugin>
                                     <plugin>
                                          <groupId>org.bsc.maven</groupId>
                                          <artifactId>maven-processor-plugin</artifactId>
                                          <version>1.3.5</version>
                                          <executions>
                                               <execution>
                                                    <id>process</id>
                                                    <goals>
                                                         <goal>process</goal>
                                                    </goals>
                                                    <phase>generate-sources</phase>
                                                    <configuration>
                                                         <outputDirectory>target/metamodel</outputDirectory>
                                                    </configuration>
                                               </execution>
                                          </executions>
                                          <dependencies>
                                               <dependency>
                                                    <groupId>org.hibernate</groupId>
                                                    <artifactId>hibernate-jpamodelgen</artifactId>
                                                    <version>1.0.0.Final</version>
                                               </dependency>
                                          </dependencies>
                                     </plugin>
                                     <plugin>
                                          <groupId>org.codehaus.mojo</groupId>
                                          <artifactId>build-helper-maven-plugin</artifactId>
                                          <version>1.3</version>
                                          <executions>
                                               <execution>
                                                    <id>add-source</id>
                                                    <phase>generate-sources</phase>
                                                    <goals>
                                                         <goal>add-source</goal>
                                                    </goals>
                                                    <configuration>
                                                         <sources>
                                                              <source>target/metamodel</source>
                                                         </sources>
                                                    </configuration>
                                               </execution>
                                          </executions>
                                          <dependencies>
                                               <dependency>
                                                    <groupId>org.hibernate</groupId>
                                                    <artifactId>hibernate-jpamodelgen</artifactId>
                                                    <version>1.0.0.Final</version>
                                               </dependency>
                                          </dependencies>
                                     </plugin>
                                </plugins>
                           </build>
                      
                           <profiles>
                                <profile>
                                     <id>weld</id>
                                     <dependencies>
                                          <dependency>
                                               <groupId>org.jboss.arquillian.container</groupId>
                                               <artifactId>arquillian-weld-embedded</artifactId>
                                               <version>${arquillian.version}</version>
                                          </dependency>
                                     </dependencies>
                                </profile>
                                <profile>
                                     <id>jbossas-local-60</id>
                                     <dependencies>
                                          <dependency>
                                               <groupId>org.jboss.arquillian.container</groupId>
                                               <artifactId>arquillian-jbossas-local-60</artifactId>
                                               <version>1.0.0.Alpha2</version>
                                          </dependency>
                                          <dependency>
                                               <groupId>org.jboss.jbossas</groupId>
                                               <artifactId>jboss-server-manager</artifactId>
                                               <version>1.0.3.GA</version>
                                          </dependency>
                                          <dependency>
                                               <groupId>org.jboss.jbossas</groupId>
                                               <artifactId>jboss-as-client</artifactId>
                                               <version>6.0.0.20100429-M3</version>
                                               <type>pom</type>
                                          </dependency>
                                     </dependencies>
                                </profile>
                           </profiles>
                      
                      </project>
                      



                      This should cover most of the technologies.


                      I installed the ICEfaces 2.0-A3 in the local repo as their snapshot repo wasn't updated yet.


                      If anyone have improvements, please share your knowledge as I'm learning, too...

                      • 8. Re: Seam 2 or 3
                        Mojahedul Hoque Abul Hasanat Newbie
                        I just did a small project with Seam 3 on JBoss 6 in the last two months. JEE6 really gets it right and Seam 3 is on the right track. But I strongly feel Seam 3 is not ready for production use yet. There are serious issues in Weld. I was burned with concurrency and conversation timeout issues. Using the latest release of Weld solved some issues, but it's still broken in some places. And JBoss 6 is definitely not production quality for any serious project.

                        I am a long time Spring + Hibernate user and just fell in love with Seam. Now learning Seam 2. It's not as shiny as 3, but it's still lightyears ahead of anything else. JSF 1.2 is a pain, but Seam fixes most of it.
                        • 9. Re: Seam 2 or 3
                          Sebastian Sachtleben Novice

                          if you dont need pdf, excel etc. export then: seam 3 > seam 2. But you are right the conversations are a bit tricky and not perfect yet.


                          I'm using seam 3 already since two months in production without any problems.

                          • 10. Re: Seam 2 or 3
                            Jason Porter Master

                            Mojahedul Hoque Abul Hasanat wrote on Aug 21, 2011 03:20:


                            I just did a small project with Seam 3 on JBoss 6 in the last two months. JEE6 really gets it right and Seam 3 is on the right track. But I strongly feel Seam 3 is not ready for production use yet. There are serious issues in Weld. I was burned with concurrency and conversation timeout issues. Using the latest release of Weld solved some issues, but it's still broken in some places. And JBoss 6 is definitely not production quality for any serious project.

                            I am a long time Spring + Hibernate user and just fell in love with Seam. Now learning Seam 2. It's not as shiny as 3, but it's still lightyears ahead of anything else. JSF 1.2 is a pain, but Seam fixes most of it.


                            Love to hear specific problems you're having. Seam 3 isn't ready for production doesn't help us very much. We need concrete examples of what you're having problems with.

                            • 11. Re: Seam 2 or 3
                              Alexandr Areshchanka Newbie

                              Jason Porter wrote on Aug 22, 2011 14:37:



                              Mojahedul Hoque Abul Hasanat wrote on Aug 21, 2011 03:20:


                              I just did a small project with Seam 3 on JBoss 6 in the last two months. JEE6 really gets it right and Seam 3 is on the right track. But I strongly feel Seam 3 is not ready for production use yet. There are serious issues in Weld. I was burned with concurrency and conversation timeout issues. Using the latest release of Weld solved some issues, but it's still broken in some places. And JBoss 6 is definitely not production quality for any serious project.

                              I am a long time Spring + Hibernate user and just fell in love with Seam. Now learning Seam 2. It's not as shiny as 3, but it's still lightyears ahead of anything else. JSF 1.2 is a pain, but Seam fixes most of it.


                              Love to hear specific problems you're having. Seam 3 isn't ready for production doesn't help us very much. We need concrete examples of what you're having problems with.


                              Just take a look at you jira and forum posts, so many issues are arised and speed of fixing is so slow...

                              • 12. Re: Seam 2 or 3
                                Shane Bryzak Master

                                Alexandr Areshchanka wrote on Aug 23, 2011 13:54:


                                Just take a look at you jira and forum posts, so many issues are arised and speed of fixing is so slow...


                                We went through exactly the same thing with Seam 1.  As Seam 3 is essentially a new project, it's going to take some unavoidable time to reach maturity.  There are already a number of people using it in production though without any issues. 


                                I'd also like to point out that With Seam 3 especially, it is more a community project than ever before and we strongly encourage users to participate in making Seam better by fixing bugs and improving documentation.  This is almost trivial to do now that have moved the codebase to GitHub.