Skip to main content

TOTD # 77: Running Seam examples with GlassFish

Posted by arungupta on April 3, 2009 at 8:33 AM PDT
cellspacing="2">
href="http://docs.jboss.com/seam/latest/reference/en-US/html/Book-Preface.html"> style="border: 0px solid ; width: 353px; height: 125px;" alt=""
src="http://docs.jboss.com/seam/latest/reference/en-US/html/images/architecture.png">
Seam
is a full-stack
solution to assemble complex web applications using simple
annotated classes, a rich set of UI components, and very little XML. It
integrates Ajax and Business Process Modeling with several Java EE
technologies such as Java Server Faces (JSF), Java Persistence API
(JPA), and Enterprise Java Beans (EJB 3.0).



GlassFish is a
Java EE compliant application server so it's natural to pick GlassFish
as your deployment platform for Seam applications :)



This blog is going to show how Seam samples can be easily run on
GlassFish.

  1. Download Seam 2.1.1 GA from href="http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=163777&release_id=647861">here
    and unzip.
  2. Build "examples/jpa" sample as:


    style="text-align: left; background-color: rgb(204, 204, 255); width: 100%;"
    cellpadding="2" cellspacing="2">
    ~/tools/jboss-seam-2.1.1.GA/examples/jpa > style="font-weight: bold;">ant glassfish

    Buildfile: build.xml



    glassfish:



    initcopy:



    initpoms:

         [echo] Setting up dependencies

        [mkdir] Created dir:
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms

         [copy] Copying 1 file to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms

    [artifact:install] [INFO] Installing
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms/root.pom to . .
    .



    . . .



    init.war:



    war:

        
    [copy] Copying 27 files to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jpa/exploded-archives-glassfish/jboss-seam-jpa.war

        
    [copy] Copying 7 files to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jpa/exploded-archives-glassfish/jboss-seam-jpa.war/WEB-INF/lib



    noejb.war:

        
    [copy] Copying 18 files to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jpa/exploded-archives-glassfish/jboss-seam-jpa.war/WEB-INF/lib

        
    [copy] Copying 2 files to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jpa/exploded-archives-glassfish/jboss-seam-jpa.war

        
    [copy] Copying 4 files to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jpa/exploded-archives-glassfish/jboss-seam-jpa.war



    distributable.war:



    noejb.archive:

         
    [jar] Building jar:
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jpa/dist-glassfish/jboss-seam-jpa.war



    BUILD SUCCESSFUL

    Total time: 5 seconds
  3. Deploy the sample as:


    style="text-align: left; background-color: rgb(204, 204, 255); width: 100%;"
    cellpadding="2" cellspacing="2">
    ~/tools/jboss-seam-2.1.1.GA/examples/jpa > style="font-weight: bold;">~/tools/glassfish/v2.1/glassfish/bin/asadmin
    deploy dist-glassfish/jboss-seam-jpa.war

    Command deploy executed successfully.



    The app is now accessible at "http://localhost:8080/jboss-seam-jpa" and
    here are some of the captured screenshots:



    href="http://blogs.sun.com/arungupta/resource/images/seam211-gf2.1-jpa-login-screen.png"> style="border: 2px solid ; width: 700px; height: 606px;" alt=""
    src="http://blogs.sun.com/arungupta/resource/images/seam211-gf2.1-jpa-login-screen.png">



    href="http://blogs.sun.com/arungupta/resource/images/seam211-gf2.1-jpa-hotels-list.png"> style="border: 2px solid ; width: 700px; height: 613px;" alt=""
    src="http://blogs.sun.com/arungupta/resource/images/seam211-gf2.1-jpa-hotels-list.png">



    href="http://blogs.sun.com/arungupta/resource/images/seam211-gf2.1-jpa-hotel-details.png"> style="border: 2px solid ; width: 700px; height: 580px;" alt=""
    src="http://blogs.sun.com/arungupta/resource/images/seam211-gf2.1-jpa-hotel-details.png">



    Simple and easy!

  4. Build "examples/hibernate" as:


    style="text-align: left; background-color: rgb(204, 204, 255); width: 100%;"
    cellpadding="2" cellspacing="2">
    ~/tools/jboss-seam-2.1.1.GA/examples/hibernate
    >ant glassfish

    Buildfile: build.xml



    glassfish:



    initcopy:



    initpoms:

         [echo] Setting up dependencies

         [copy] Copying 1 file to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms

    [artifact:install]
    [INFO] Installing
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms/root.pom to
    /Users/arungupta/.m2/repository/org/jboss/seam/root/2.1.1.GA/root-2.1.1.GA.pom



     . . .



    distributable.war:



    noejb.archive:

         
    [jar] Building jar:
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/hibernate/dist-glassfish/jboss-seam-hibernate.war



    BUILD SUCCESSFUL

    Total time: 6 seconds


  5. Deploy the sample as:


    style="text-align: left; background-color: rgb(204, 204, 255); width: 100%;"
    cellpadding="2" cellspacing="2">
    ~/tools/jboss-seam-2.1.1.GA/examples/hibernate
    >~/tools/glassfish/v2.1/glassfish/bin/asadmin
    deploy dist-glassfish/jboss-seam-hibernate.war


    Command deploy executed successfully.



    The app is now accessible at
    "http://localhost:8080/jboss-seam-hibernate" and has exactly similar
    snapshots as shown in "jboss-seam-jpa" sample. Simple and easy, yet
    again!

  6. Build "examples/jee5/booking" and deploy as:


    style="text-align: left; background-color: rgb(204, 204, 255); width: 100%;"
    cellpadding="2" cellspacing="2">
    ~/tools/jboss-seam-2.1.1.GA/examples/jee5/booking
    >ant

    Buildfile: build.xml



    initcopy:



    initpoms:

         [echo] Setting up dependencies

         [copy] Copying 1 file to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms

    [artifact:install]
    [INFO] Installing
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms/root.pom to
    /Users/arungupta/.m2/repository/org/jboss/seam/root/2.1.1.GA/root-2.1.1.GA.pom

         [copy] Copying 1 file to
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/classes/poms



    . . .



    archive:

         
    [jar] Building jar:
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jee5/booking/dist/jboss-seam-jee5-booking.jar

         
    [jar] Building jar:
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jee5/booking/dist/jboss-seam-jee5-booking.war

         
    [jar] Building jar:
    /Users/arungupta/tools/jboss-seam-2.1.1.GA/examples/jee5/booking/dist/jboss-seam-jee5-booking.ear



    BUILD SUCCESSFUL

    Total time: 5 seconds

    ~/tools/jboss-seam-2.1.1.GA/examples/jee5/booking > style="font-weight: bold;">~/tools/glassfish/v2.1/glassfish/bin/asadmin
    deploy dist/jboss-seam-jee5-booking.ear

    Command deploy executed successfully.



    The application is now accessible at
    "http://localhost:8080/seam-jee5-booking". Wow, that's simple and easy
    as well!

So we have deployed multiple Seam samples on GlassFish v2.1 - simple
and easy!



Here are some more useful pointers realted to Seam and GlassFish:

  • href="http://docs.jboss.org/seam/latest/reference/en-US/html/glassfish.html">Chapter
    39 of the href="http://docs.jboss.org/seam/latest/reference/en-US/html/index.html">Seam
    Community Documentation even describes how to deploy an
    application created using href="http://docs.jboss.org/seam/latest/reference/en-US/html/glassfish.html#d0e32240">seam-gen
    on GlassFish.
  • Dan Allen, the author of Manning's href="http://www.manning.com/dallen/">Seam in Action,
    presented a href="http://wikis.sun.com/display/TheAquarium/Seam+and+WebBeans">webinar
    at TheAquarium Online.
  • Several other href="http://blogs.sun.com/theaquarium/tags/seam">Seam
    entries @ TA.
  • href="http://code.google.com/p/seaminaction/wiki/DeployingToGlassFish">Deploying
    a seam-gen project to GlassFish ( href="http://www.mojavelinux.com/blog/archives/2008/10/deploying_a_seamgen_project_to_glassfish/">blog
    entry) - Here is a quote from the blog:



    GlassFish has a very
    sexy administrative console, but it also has a very sexy commandline
    tool known as asadmin. The asadmin tool gives you virtually unbounded
    control over the application server, including core tasks such as
    starting and stopping the application server, deploying and undeploying
    applications, and setting up database connection pools, amidst a
    plethora of other controls. You'll see that my modified seam-gen tool
    takes advantage of a handful of these commands.




    And another one ...



    GlassFish gives you
    efficiency through automation, which is undoubtedly the most effective
    way to become efficient. ... GlassFish volunteers itself to participate
    in a script and is the reason why I choose it as my preferred
    application server.
  • href="http://in.relation.to/Bloggers/JBossAS5AndGlassFishSupportAddedToSeamgen">GlassFish
    support added to seam-gen: It is certainly exciting to know
    that there are targets like "gf-deploy-datasource",
    "gf-deploy-hibernate", and "gf-prepare" available to Seam developers
    out-of-the-box.
  • href="http://weblogs.java.net/blog/caroljmcdonald/archive/2007/07/sample_applicat_1.html">Sample
    Application using JSF, Seam, and Java Persistence APIs on GlassFish
    - detailed step-by-step blog explaining how to run Seam applications on
    GlassFish

The other samples in the bundle (that I tried) rely upon non-Java EE
jars in the App Server's
classpath. A slight build file tweaking can bundle those jars in the
application itself and will allow to run them as well.



Are you deploying your Seam applications on GlassFish ?



Happy Seaming on GlassFish!



Please leave suggestions on other TOTD (Tip Of The Day) that
you'd like to see.
A complete archive of all the tips is available href="http://blogs.sun.com/arungupta/tags/totd">here.




Technorati: totd
seam href="http://technorati.com/tags/glassfish">glassfish
javaee
javaserverfaces
ejb href="http://technorati.com/tags/jpa">jpa

Related Topics >>