Arun Gupta, Miles to go ...

Arun Gupta is a technology enthusiast, a passionate runner, and a community guy who works for Sun Microsystems.
« Previous month (Mar 2008) | Main | Next page of month (Apr 2008) »

http://blogs.sun.com/arungupta/date/20080430 Wednesday April 30, 2008

OSX #8: Java SE 6 U5 on Mac OS X Leopard


Yesterday, Apple released Java SE version 1.6.0_05 for 64-bit Intel-based Mac OS X 10.5.2 or later. Download it here!

It's restricted to 64-bit machines and Charles is unhappy about it. Hopefully, they'll release a 32-bit version as well.

Type "sw_vers" in a terminal to check the Mac OS X version as shown below:

~ >sw_vers
ProductName:    Mac OS X
ProductVersion: 10.5.2
BuildVersion:   9C31
Alternatively, "About This Mac" in the Apple menu shows you the version as well as shown below:



Anyway, after verifying the system requirements, download 57MB bundle and install it following the standard instructions.


And now successfully installed:



It gets installed in "/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0" and shows the version number as:

/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin >./java -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13-120)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_05-b13-52, mixed mode)

The default Java version can be changed by using "Java Preferences" as shown below:
/Applications/Utilities/Java/Java Preferences.app/Contents/MacOS >./"Java Preferences"
The following window shows up:



Pick the version of your choice and that should get you going!

These are the days before JavaOne and all my demos on this machine have been tested using the default J2SE 5. But I'll play with the new release after JavaOne anyway :)

Do you know sign up for GlassFish Day is FREE and gives you access to JavaOne pavilion as well ? Do it now!

A complete archive of all Mac OS X tips on this blog are available here.

Technorati: osxtips mac leopard javase6 javase jdk

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080429 Tuesday April 29, 2008

JavaOne Adrenaline - 6:40 min / mile


It must be JavaOne adrenaline - This morning I ran 2 0.75 miles with 7:03 min pace and 2 0.5 miles with 6:40 min pace.

My typical speed is 8:30 min/mile and I've never exceeded 7:30 min pace ever. So this is really cool and exciting!

Follow Sun Bloggers on JavaOne 2008, Twitter Feeds and Facebook Group.

Community One is next Monday (5/5), register now!



Full speed ahead ...

Technorati: conf javaone javaone2008 running

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080428 Monday April 28, 2008

TOTD #32: Rails Deployment on GlassFish v3 from NetBeans IDE


Rails powered by the GlassFish Application Server explains all the benefits of using GlassFish for developing and deploying your Rails applications. If you are using NetBeans 6.1 builds then you can deploy your Rails application directly on GlassFish v3 from within NetBeans IDE. No longer you need to have different development and deployment options.

This blog explains how to install a bleeding-edge GlassFish v3 plugin and use it to deploy your Rails app natively on GlassFish (no WAR or anything :). Let's get started! Note, this plugin is bleeding edge and will soon be released on the Beta Update Center.

  1. Install "GlassFish v3 TP2" plugin in NetBeans 6.1
    1. In NetBeans 6.1 IDE, go to "Tools", "Plugins" and click on "Settings". The following window is shown:


    2. Click on "Add" and specify the URL of Bleeding Edge Update Center values as shown (copy from "http://deadlock.netbeans.org/hudson/job/javadoc-nbms/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz"):



      Click on "OK". The updated "Plugins" window looks like:




      Notice "Available Plugins" has changed from 58 to 140 as many more bleeding edge plugins are now available.
    3. Click on "Available Plugins" and search for "GlassFish" in the top-right corner text box as shown below:


    4. Select "GlassFish V3 JRuby Integration" and "GlassFish V3 JavaEE Integration" plugin and click on "Install" as shown below:



      Follow the instructions to install the plugin. The IDE needs to restart for successful plugin installation.
    5. In the restarted IDE,  go to "Services" tab, right-click on "Servers" and select "Add Server...". Select "GlassFish v3 TP2" as shown below:


    6. Select "Next >", accept the license agreement and click on "Download V3 Now..."



      Click on "Download V3 Now...". This downloads the latest GlassFish v3 TP2 build and installs in "/Users/arungupta/GlassFish_V3_TP2" directory. This is only an interim build, final TP2 build will be available soon! The following screen is shown once GlassFish v3 is installed:



      Click on "Finish". In 58 seconds, you downloaded and installed the entire GlassFish v3 app server, cool isn't it!
  2. Create a Rails app and deploy on GlassFish V3
    1. In NetBeans IDE, in the "Projects" tab, right-click and select "New Project...". Select "Ruby" in "Categories" and "Ruby on Rails Applications" in "Projects" as shown:



      Click on "Next".
    2. Now comes the cool part. Enter the application name and select the recently installed GlassFish v3 as shown:



      This is a brand new feature in the "GlassFish v3 TP2" plugin available only on "Bleeding Edge" Update Center. It'll soon replace the default GlassFish v3 plugin from the Beta Update Center.

      Click on "Finish" to take all other defaults.
    3. On the newly created project, right-click and select "Run" as shown:

    4. The default browser page "http://localhost:8080/" shows up. Change the URL to "http://localhost:8080/HelloRails" and the following page shows up:

Now, NetBeans IDE and GlassFish v3 serves your need for a complete development and deployment platform for Ruby-on-Rails applications.

If any part of the tooling is not working or you have suggestions and improvement then please file bugs on IssueZilla ("serverplugins" component) and use "glassfish_v3" subcomponent. If any part of the runtime is not working, then please file bugs on Issue Tracker ("V3" component) and use "jruby" subcomponent.

Please leave suggestions on other TOTD (Tip Of The Day) that you'd like to see. A complete archive is available here.

Technorati: totd glassfish v3 netbeans rubyonrails

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080427 Sunday April 27, 2008

GlassFish events @ JavaOne 2008


Start counting in days now before the JavaOne frenzy begins! In the mean while, here is a quick summary of GlassFish related events:

Sunday (5/4) GlassFish Unconference (free registration)
Monday (5/5) GlassFish Day (free registration - also gives you free access to JavaOne Pavilion and General Sessions on Tuesday), Party @ Thirsy Bear in the evening (just show up)
Tuesday - Thursday
(5/6 - 5/8)
Talk to us @ Booth
Tuesday  (5/6), 7:30pm GlassFish Application Server: Open Source, Fast, Easy and Reliable (BOF-7900)
Tuesday - Friday
(5/6 - 5/9)
Attend sessions - A simple query shows 26 records and I'm sure there are some missing :)
Sunday - Friday
(5/4 - 5/9)
Mingle with GlassFish community all days

Latest updates always available at GlassFish wiki.

If you are a student, then you can attend the entire JavaOne completely free. So if you are a student and local to bay area, there is nothing to loose - only gain. Register now!

Also check out the following JavaOne and Community One and GlassFish Facebook groups.

Technorati: javaone conf glassfish glassfishday unconference community thirstybear javaone2008

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080425 Friday April 25, 2008

Welcome JWBlogs to Blogosphere!




Over the past 10 years JavaWorld.com is a great source for Java developers focusing on four areas - Java SE, Java EE, Java ME and Developer Tools. The 10 most recently published articles and tutorials can be easily subscribed.

As of yesterday they started a new blog platform - JWBlogs! The formal announcement in their newsletter said:

The goal of the JavaWorld blogs is to provide a daily mix of valuable reading from around the Java world. Some of the blogs we're starting out with are syndicated, while others are exclusive to JavaWorld.

I am delighted to be "picked" for the first iteration.

This means you'll hear a lot about GlassFish, NetBeans, JRuby, Metro, Groovy, jMaki and many other technologies in GlassFish ecosystem - now at JavaWorld as well. Of course, you can continue to read all the latest & greatest about GlassFish @ TheAquarium, Adoption Stories, GlassFish for Business and about NetBeans @ Planet NetBeans.

Subscribe to their aggregated feed and send feedback to jwblogs@javaworld.com.

Technorati: javaworld blogosphere jwblogs glassfish netbeans community

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080424 Thursday April 24, 2008

Roses from Frontyard - Digital Pictures


A rose, not only by any name, but in any shape or color will smell as sweet and also look as beautiful :)

Here are some pictures of roses from my front yard. The pictures were taken around 7pm yesterday and purposely shown in 640 x 480 size in order to provide visual pleasure! I've higher resolution pictures available as well, in case you are interested.

All the pictures below keep the flower in center of the frame. I'll try another set next week with Rule of Thirds.






















Technorati: photography digital d80 flowers roses

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080423 Wednesday April 23, 2008

TOTD #31: CRUD Application using Grails - Hosted on GlassFish and MySQL


TOTD #30 explained how to create CRUD application using Grails and hosted using in-built Jetty servlet engine and in-memory HSQLDB database. Jetty and HSQLDB are built into Grails and allows to start easily. You can also use GlassFish and MySQL for deploying your applications in production environment.

This blog entry walks you through the steps of deploying a Grails application on GlassFish and MySQL.

  1. If MySQL is already installed, then download GlassFish v2 UR1. Otherwise you can also Download GlassFish v2 UR1 and MySQL co-bundle from usual Download Page (instructions).
  2. Configure MySQL database
    1. Download MySQL Connector/J 5.1.6 from here.
    2. Extract the bundle and copy "mysql-connector-java-5.1.6-bin.jar" to the "lib" directory of Grails application.
    3. Start MySQL database as:

      ~/testbed/grails-1.0.2/samples/crud >sudo /usr/local/mysql/bin/mysqld_safe --user root --console
      Starting mysqld daemon with databases from /usr/local/mysql/data
    4. Create database by giving the following command:

      ~/testbed/grails-1.0.2/samples/crud >/usr/local/mysql/bin/mysqladmin create crudProd --user root
  3. Configure the Application
    1. Edit "grails-app/conf/DataSource.groovy" to specify MySQL configuration. The updated file looks like (changes highlighted in bold):

      dataSource {
              pooled = false
              driverClassName = "com.mysql.jdbc.Driver"
              username = "root"
              password = ""
              dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
      }
      hibernate {
          cache.use_second_level_cache=true
          cache.use_query_cache=true
          cache.provider_class='org.hibernate.cache.EhCacheProvider'
      }
      // environment specific settings
      environments {
              development {
                      dataSource {
                              dbCreate = "create-drop" // one of 'create', 'create-drop','update'
                              url = "jdbc:hsqldb:mem:devDB"
                      }
              }
              test {
                      dataSource {
                              dbCreate = "update"
                              url = "jdbc:hsqldb:mem:testDb"
                      }
              }
              production {
                      dataSource {
                              dbCreate = "update"
                              url = "jdbc:mysql://localhost/crudProd"
                      }
              }
      }

    2. Being in production, it's recommended to use InnoDB tables instead of MyISAM tables. This can be easily specified by using the dialect as explained here. More details about the contents of "DataSource.groovy" can be found here.
    3. Create a WAR by giving the following command:

      ~/testbed/grails-1.0.2/samples/crud >grails war

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/War.groovy
      Environment set to production
         [delete] Deleting: /Users/arungupta/.grails/1.0.2/projects/crud/resources/web.xml
         [delete] Deleting directory /Users/arungupta/.grails/1.0.2/projects/crud/classes
      . . .
      [propertyfile] Updating property file: /Users/arungupta/testbed/grails-1.0.2/samples/crud/staging/WEB-INF/classes/application.properties
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/staging/WEB-INF/plugins
           [copy] Warning: /Users/arungupta/testbed/grails-1.0.2/samples/crud/plugins not found.
            [jar] Building jar: /Users/arungupta/testbed/grails-1.0.2/samples/crud/crud-0.1.war
         [delete] Deleting directory /Users/arungupta/testbed/grails-1.0.2/samples/crud/staging
      Done creating WAR /Users/arungupta/testbed/grails-1.0.2/samples/crud/crud-0.1.war
  4. Deploy the WAR file as:

    ~/testbed/grails-1.0.2/samples/crud >~/testbed/glassfish/v3/p2b9/glassfish/bin/asadmin deploy crud-0.1.war
    crud-0.1 deployed successfully
    Command deploy executed successfully.

    The application is now accessible at "http://localhost:8080/crud-0.1" and looks like:


  5. READ - Click on "StateController" and the following page is shown:

  6. CREATE - Click on "New State" and enter the values as shown below:



    and click on "Create" to see the following page:

  7. UPDATE & DELETE - You can click on "Edit" or "Delete" to perform U or D of CRUD or click on "State List" to view the updated list.

Please leave suggestions on other TOTD that you'd like to see. A complete archive is available here.


Technorati: groovy grails glassfish mysql scripting netbeans

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080422 Tuesday April 22, 2008

TOTD #30: CRUD Application using Grails - Hosted on Jetty and HSQLDB


After a simple Grails application, let's create a CRUD application. Such an application allows to perform basic database operations to read table rows from the database, create new rows, and edit and delete existing rows. This blog shows how such an application can be created using Grails, hosted on built-in Jetty servlet engine and use in-memory HSQLDB database for persistence.

A follow-up entry will show how this application can be deployed in production mode on GlassFish and using MySQL database.

  1. Create a Grails application
    1. After Grails download and configuration, create a new application "crud" as:

      ~/testbed/grails-1.0.2/samples >grails create-app crud

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateApp.groovy
      Environment set to development
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/src
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/src/java
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/src/groovy
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/controllers
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/services
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/domain
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/taglib
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/utils
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/views
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/views/layouts
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/i18n
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/conf
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/test
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/unit
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/integration
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/scripts
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/js
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/css
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/images
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/META-INF
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/lib
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/conf/spring
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/conf/hibernate
      [propertyfile] Creating new property file: /Users/arungupta/testbed/grails-1.0.2/samples/crud/application.properties
           [copy] Copying 2 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud
           [copy] Copying 2 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/WEB-INF
           [copy] Copying 5 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/WEB-INF/tld
           [copy] Copying 87 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app
           [copy] Copying 17 files to /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud
      [propertyfile] Updating property file: /Users/arungupta/testbed/grails-1.0.2/samples/crud/application.properties
      Created Grails Application at /Users/arungupta/testbed/grails-1.0.2/samples/crud
    2. In your project directory, create a domain class as:

      ~/testbed/grails-1.0.2/samples/crud >grails create-domain-class state

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateDomainClass.groovy
      Environment set to development
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/domain
      Created  for State
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/integration
      Created Tests for State

      This creates "State.groovy" class in "grails-app/domain" directory and looks like:

      class State {

      }

      Add two fields to store state name and the corresponding abbreviation as shown below:

      class State {
              String name
              String abbrev
      }
    3. Change "grails-app/conf/BootStrap.groovy" class to initialize the domain with sample data as shown below:

      class BootStrap {

           def init = { servletContext ->
                new State(name:"California", abbrev:"CA").save()
                new State(name:"New York", abbrev:"NY").save()
                new State(name:"Texas", abbrev:"TX").save()
                new State(name:"Wisconsin", abbrev:"WI").save()
           }
           def destroy = {
           }
    4. Create a new controller as:

      ~/testbed/grails-1.0.2/samples/crud >grails create-controller state

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateController.groovy
      Environment set to development
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/controllers
      Created Controller for State
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/crud/grails-app/views/state
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/crud/test/integration
      Created ControllerTests for State

      This generates "grails-app/controllers/StateController.groovy" with the following content:

      class StateController {

          def index = { }
      }

      Replace it with to define a scaffold:

      class StateController {

          def scaffold = State
      }
  2. Start the application using built-in Jetty Servlet engine and in-memory HSQLDB database as shown below:

    ~/testbed/grails-1.0.2/samples/crud >grails run-app

    Welcome to Grails 1.0.2 - http://grails.org/
    Licensed under Apache Standard License 2.0
    Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

    Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/crud
    Note: No plugin scripts found
    Running script /Users/arungupta/testbed/grails-1.0.2/scripts/RunApp.groovy
    Environment set to development
    Running Grails application..
    2008-04-18 17:26:29.962::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
    2008-04-18 17:26:29.075::INFO:  jetty-6.1.4
    2008-04-18 17:26:29.155::INFO:  No Transaction manager found - if your webapp requires one, please configure one.
    2008-04-18 17:26:30.886:/crud:INFO:  Set web app root system property: 'crud' = [/Users/arungupta/testbed/grails-1.0.2/samples/crud/web-app/]
    2008-04-18 17:26:30.886:/crud:INFO:  Initializing Log4J from [file:/Users/arungupta/.grails/1.0.2/projects/crud/resources/log4j.properties]
    2008-04-18 17:26:30.945:/crud:INFO:  Initializing Spring root WebApplicationContext
    [0] spring.GrailsWebApplicationContext Refreshing org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@848dfb: display name [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@848dfb]; startup date [Fri Apr 18 17:26:32 PDT 2008]; parent: org.springframework.web.context.support.XmlWebApplicationContext@cddcc3
    [1] spring.GrailsWebApplicationContext Bean factory for application context [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@848dfb]: org.springframework.beans.factory.support.DefaultListableBeanFactory@11f136
    2008-04-18 17:26:34.655:/crud:INFO:  Initializing Spring FrameworkServlet 'grails'
    2008-04-18 17:26:35.716::INFO:  Started SelectChannelConnector@0.0.0.0:8080
    Server running. Browse to http://localhost:8080/crud

    The application is now accessible at "http://localhost:8080/crud" and looks like:



  3. READ - Click on "StateController" and the following page is shown:



  4. CREATE - Click on "New State" and enter the values as shown below:



    and click on "Create" to see the following page:



  5. UPDATE & DELETE - You can click on "Edit" or "Delete" to perform U or D of CRUD or click on "State List" to view the updated list as shown below:

Please leave suggestions on other TOTD that you'd like to see. A complete archive is available here.

Technorati: groovy grails glassfish jetty hsqldb scripting crud

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080421 Monday April 21, 2008

JRuby and GlassFish v2 - Another successful deployment @ WorldxChange Communication NZ


From proof-of-concept to production in 8 weeks, WorldxChange Communication NZ's online billing system is another succes story of JRuby and GlassFish v2. The portal is designed solely using NetBeans 6.1 IDE.

Here are some of the quotes from the completed questionnaire:

From my perspective, the main advantage was that I could deploy my JRuby project war file directly to Glassfish, allowing me to develop and test our online ViewBill portal using a production grade, scalable web server.

From a geek perspective, we love that Glassfish combined with JRuby and allowed us to integrate many different disparate systems to create a seamless interface for our customers to use.

started using the Glassfish v3 gem for final testing of new code releases and to check functionality prior to production deployment.

I do not believe that I could have developed this project any faster using different toolsets or technologies and have been massively impressed with the combination of Glassfish and JRuby.

Read more details here.

Rails powered by the GlassFish Application Server explains why to use GlassFish for powering your Rails applications.

You can find all all about JRuby and GlassFish efforts on the GlassFish wiki or JRuby wiki.

Technorati: glassfish netbeans rubyonrails jruby ruby stories

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

JavaOne 2008 - 2 weeks away!




JavaOne 2008 is 2 weeks away, gosh!

Everything around is oriented accordingly starting from slides, messaging, demos, rehearsals, booth duties, shwags, parties, after dark events, customer meetings (some old friends too ;-) and lots of other stuff. It's full gear already and now full speed ahead!

Here are some links for you to get started:
In my 9th consecutive JavaOne, am involved in several activities on different days. I'll post my schedule soon and also post my pick of sessions soon.

In the meanwhile, make sure you register for GlassFish Day!

Technorati: conf javaone glassfish glassfishday c1 communityone javaone2008

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080415 Tuesday April 15, 2008

jMaki Webtop on GlassFish - Ajax World Keynote Video


jMaki Webtop is a light-weight Mashup Framework based on jMaki widgets. The webtop was demonstrated at Ajax World East 2008 keynote. The key features are:

  • Simple & easy to use (runs in browser)
  • Extensible (add your own widgets & gadgets)
  • Manageable (create users)
  • Persistent (Google Gears on the client, Database on the server)
  • Shared (read-only views can be shared with other users)
A 30-minute video of the Ajax World keynote session is available here and shows webtop in action :) The keynote deployed the webtop as a WAR file on GlassFish. A live PHP version of webtop is available at jmaki.com/webtop.

You can download the entire source code from the subversion repository and run it yourself.

Technorati: conf ajaxworld newyork glassfish jmaki

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080414 Monday April 14, 2008

GlassFish @ Silicon Valley Web Developer JUG - Tomorrow (Apr 15, 2008)


Project GlassFish: On a mission to please Developers is the topic of talk at Silicon Valley Web Developer JUG tomorrow (Apr 15, 2008).

Hear all about GlassFish v2, it's exciting set of features such as Metro, High Availability, Clustering, Grizzly, Scripting, SIP container, Tools integration (such as NetBeans and Eclipse) and many others that together deliver a compact and high-fidelity Java EE Application server. You'll also learn about GlassFish v3 and how, through modularization and embedability, it enables support for non-Java EE containers such as Rails, Phobos and others.

Read more details about agenda and food here. The food is served @ 6:30 and is consumed quickly ;)

Register here to be part of give-away drawing (advanced registration required) otherwise just show up @ 6:30pm!

Technorati: conf glassfish v3 svjug webjug

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

Rails and Java EE integration - Native Rails on GlassFish v3


The last part of this tri-series blog (Part 1, Part 2) will show how a Rails application can be deployed on GlassFish - without the need of Goldspike, Warbler or any other gem or plugin. Yes, that's a native Rails app deployment on GlassFish v3.

GlassFish v3 is next version of GlassFish v2 and the focus is modularization, enablement of non-Java EE containers and modularity - download b09.

Rails powered by GlassFish provides all the details on why GlassFish provides an industry-grade and functionally-rich Application Server.

Now detailed steps:

  1. Using JRuby 1.1 (installed with Rails), create a Rails app "railsee3" as:

    ~/testbed/jruby-1.1/samples/rails >../../bin/jruby -S rails railsee3
          create 
          create  app/controllers
          create  app/helpers
          create  app/models
          . . .
          create  log/production.log
          create  log/development.log
          create  log/test.log
  2. Add Servlet descriptors
    1. Create a new directory "WEB-INF", and a new file "web.xml" in that directory using the following contents:

      <!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
      <web-app>
              <servlet>
                      <servlet-name>HelloServlet</servlet-name>
                      <servlet-class>server.HelloServlet</servlet-class>
              </servlet>
              <servlet-mapping>
                      <servlet-name>HelloServlet</servlet-name>
                      <url-pattern>/hello</url-pattern>
              </servlet-mapping>
      </web-app>
    2. Create a new file "sun-web.xml" in "WEB-INF" using the following contents:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software
      /appserver/dtds/sun-web-app_2_5-0.dtd">
      <sun-web-app error-url="">
        <context-root>/servlet</context-root>
        <class-loader delegate="true"/>
      </sun-web-app>
    3. Create a new directory "WEB-INF/lib".
  3. Create and Copy Servlet
    1. Create a Java library with Servlet code as explained in bullet #5 here.
    2. Copy "HelloServlet.jar" from "dist" directory of NetBeans project to "WEB-INF/lib" directory.
  4. Configure JRuby-on-Rails in GlassFish - Edit "config/asenv.conf" in GlassFish directory and specify JRUBY_HOME as the last line:

    JRUBY_HOME="/Users/arungupta/testbed/jruby-1.1"

  5. Deploy the Rails application as:

  6. ~/testbed/jruby-1.1/samples/rails >~/testbed/glassfish/v3/p2b9/glassfish/bin/asadmin deploy --force=true railsee3
    railsee3 deployed successfully
    Command deploy executed successfully.
  7. The bundled Servlet is now accessible at "http://localhost:8080/servlet/hello". The default browser output looks like:



    And passing a parameter to the URL as "http://localhost:8080/railsee3/hello?name=Arun" shows the output as:


With this, your Java EE Servlet is now bundled with your Rails application deployed on GlassFish v3.

Now, lets add Controller and View to Rails application and invoke this servlet from there to show complete integration with Rails.
  1. Create a new Controller and View as

    ~/testbed/jruby-1.1/samples/rails/railsee3 >../../../bin/jruby script/generate controller home index
    JRuby limited openssl loaded. gem install jruby-openssl for full support.
    http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
          exists  app/controllers/
          exists  app/helpers/
          create  app/views/home
          exists  test/functional/
          create  app/controllers/home_controller.rb
          create  test/functional/home_controller_test.rb
          create  app/helpers/home_helper.rb
          create  app/views/home/index.html.erb
  2. Change the generated controller in "app/controllers/home_controller.rb" to:

    class HomeController < ApplicationController

    include Java

      def index
            url = java.net.URL.new("http://localhost:8080/servlet/hello");
            conn = url.open_connection;
            reader = java.io.BufferedReader.new(java.io.InputStreamReader.new(conn.get_input_stream));
            @servlet_output = "";
            input_line = reader.read_line;
            while input_line != nil
                    @servlet_output << input_line;
                    input_line = reader.read_line;
            end
            reader.close;
      end
    end
  3. Change the generated view in "app/views/home/index.rhtml.erb" to:

    <h1>Home#index</h1>
    <p>Find me in app/views/home/index.html.erb</p>

    <%= @servlet_output %>
  4. Re-deploy the Rails application as shown in bullet # 5 above and "http://localhost:8080/railsee3/home/index" shows the output as shown:

So this blog explained how a Rails application can be deployed on GlassFish v3 without the need of any gems like Warbler or plugin like Goldspike - total native deployment!

In summary, the tri-part blog showed the deployment models for a Rails application on GlassFish. Each model showed how a Java EE 5 Servlet can be co-bundled with Rails application and invoked from Rails view:
Technorati: rubyonrails netbeans glassfish v3 javaee5 servlets jruby ruby warbler

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080411 Friday April 11, 2008

Getting Started with Grails on GlassFish


This blog has published good amount of content on how Ruby-on-Rails applications can be deployed on GlassFish. Grails is another popular MVC-based framework that leverages the Groovy language. Basically, Grails : Groovy :: Rails : Ruby.

Starting today, I plan to start publishing content on Grails and talk about how GlassFish v3 is turning out to be a home for several scripting languages - Ruby/JRuby/Rails, JavaScript/Phobos, Groovy/Grails and more to be added.

This blog shows how to get started with Grails and deploy a simple application on GlassFish v3. Lets go!

  1. Download Grails 1.0.2 (docs, release notes, other builds) and unzip.

    ~/testbed/grails-1.0.2 >export GRAILS_HOME=`pwd`
    ~/testbed/grails-1.0.2 >export PATH=$GRAILS_HOME/bin:$PATH

    On MacOS 10.5, I had to manually set the executable permissions using "chmod +x grails" and then saw the following:

    ~/testbed/grails-1.0.2 >grails

    Welcome to Grails 1.0.2 - http://grails.org/
    Licensed under Apache Standard License 2.0
    Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

    No script name specified. Use 'grails help' for more info

  2. Create & Deploy a Grails HelloWorld:
    1. Create a Grails app "helloworld" as:

      ~/testbed/grails-1.0.2/samples >grails create-app helloworld

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateApp.groovy
      Environment set to development
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/src
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/src/java
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/src/groovy
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/controllers
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/services
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/domain
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/taglib
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/utils
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/views
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/views/layouts
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/i18n
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/conf
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/test
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/test/unit
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/test/integration
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/scripts
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/js
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/css
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/images
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/META-INF
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/lib
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/conf/spring
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/conf/hibernate
      [propertyfile] Creating new property file: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/application.properties
           [copy] Copying 2 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
           [copy] Copying 2 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/WEB-INF
           [copy] Copying 5 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/WEB-INF/tld
           [copy] Copying 87 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app
           [copy] Copying 17 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
      [propertyfile] Updating property file: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/application.properties
      Created Grails Application at /Users/arungupta/testbed/grails-1.0.2/samples/helloworld

      The top-level directory structure is:

      total 56
      drwxr-xr-x  14 arungupta  arungupta   476 Apr 10 10:44 .
      drwxr-xr-x   3 arungupta  arungupta   102 Apr 10 10:44 ..
      -rw-r--r--   1 arungupta  arungupta  5911 Apr 10 10:44 .classpath
      -rw-r--r--   1 arungupta  arungupta   553 Apr 10 10:44 .project
      -rw-r--r--   1 arungupta  arungupta   115 Apr 10 10:44 application.properties
      -rw-r--r--   1 arungupta  arungupta  1464 Apr 10 10:44 build.xml
      drwxr-xr-x  10 arungupta  arungupta   340 Apr 10 10:44 grails-app
      -rw-r--r--   1 arungupta  arungupta  1805 Apr 10 10:44 helloworld.launch
      -rw-r--r--   1 arungupta  arungupta  2287 Apr 10 10:44 helloworld.tmproj
      drwxr-xr-x   2 arungupta  arungupta    68 Apr 10 10:44 lib
      drwxr-xr-x   2 arungupta  arungupta    68 Apr 10 10:44 scripts
      drwxr-xr-x   4 arungupta  arungupta   136 Apr 10 10:44 src
      drwxr-xr-x   4 arungupta  arungupta   136 Apr 10 10:44 test
      drwxr-xr-x   8 arungupta  arungupta   272 Apr 10 10:44 web-app

      This directory is created using Convention over Configuation and the purpose of each directory is explained here.
    2. The app can be started as:

      ~/testbed/grails-1.0.2/samples/helloworld >grails run-app

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/RunApp.groovy
      Environment set to development
          [mkdir] Created dir: /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
        [groovyc] Compiling 6 source files to /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
          [mkdir] Created dir: /Users/arungupta/.grails/1.0.2/projects/helloworld/resources/grails-app/i18n
      [native2ascii] Converting 10 files from /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/i18n to /Users/arungupta/.grails/1.0.2/projects/helloworld/resources/grails-app/i18n
           [copy] Copying 1 file to /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
           [copy] Copying 1 file to /Users/arungupta/.grails/1.0.2/projects/helloworld/resources
           [copy] Copying 1 file to /Users/arungupta/.grails/1.0.2/projects/helloworld
      Running Grails application..
      2008-04-10 10:47:51.501::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
      2008-04-10 10:47:51.603::INFO:  jetty-6.1.4
      2008-04-10 10:47:51.755::INFO:  No Transaction manager found - if your webapp requires one, please configure one.
      2008-04-10 10:47:52.503:/helloworld:INFO:  Set web app root system property: 'helloworld' = [/Users/arungupta/testbed/grails-1.0.2/samples/helloworld/web-app/]
      2008-04-10 10:47:52.503:/helloworld:INFO:  Initializing Log4J from [file:/Users/arungupta/.grails/1.0.2/projects/helloworld/resources/log4j.properties]
      2008-04-10 10:47:52.582:/helloworld:INFO:  Initializing Spring root WebApplicationContext
      [0] spring.GrailsWebApplicationContext Refreshing org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@dccb42: display name [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@dccb42]; startup date [Thu Apr 10 10:47:53 PDT 2008]; parent: org.springframework.web.context.support.XmlWebApplicationContext@188af2
      [0] spring.GrailsWebApplicationContext Bean factory for application context [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@dccb42]: org.springframework.beans.factory.support.DefaultListableBeanFactory@413ebc
      2008-04-10 10:47:55.602:/helloworld:INFO:  Initializing Spring FrameworkServlet 'grails'
      2008-04-10 10:47:55.652::INFO:  Started SelectChannelConnector@0.0.0.0:8080
      Server running. Browse to http://localhost:8080/helloworld
      2008-04-10 10:48:15.133:/helloworld:INFO:  GSP servlet initialized

      The output in the browser looks like:


      Jetty is used as the development environment server but soon GlassFish v3 can be used, stay tuned on that!

      Anyway, the WAR format is used for deployment. Lets see how this app can be easily deployed as a WAR file on GlassFish v3.
  3. Download GlassFish v3 Preview 2 b08 and unzip.
  4. Create and Deploy WAR
    1. GlassFish certainly supports WAR-based deployment of Grails apps but direct deployment (aka native or directory-based deployment) of Grails applications will be supported soon as well. Anyway, for now, create a WAR file of the application as:

      ~/testbed/grails-1.0.2/samples/helloworld >grails war

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/War.groovy
      Environment set to production
         [delete] Deleting: /Users/arungupta/.grails/1.0.2/projects/helloworld/resources/web.xml
         [delete] Deleting directory /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
         [delete] Deleting directory /Users/arungupta/.grails/1.0.2/projects/helloworld/resources
          [mkdir] Created dir: /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
        [groovyc] Compiling 6 source files to /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
          [mkdir] Created dir: /Users/arungupta/.grails/1.0.2/projects/helloworld/resources/grails-app/i18n
      [native2ascii] Converting 10 files from /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/i18n to /Users/arungupta/.grails/1.0.2/projects/helloworld/resources/grails-app/i18n
           [copy] Copying 1 file to /Users/arungupta/.grails/1.0.2/projects/helloworld/classes
           [copy] Copying 1 file to /Users/arungupta/.grails/1.0.2/projects/helloworld/resources
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging
           [copy] Copying 93 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging
           [copy] Copied 19 empty directories to 1 empty directory under /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging
           [copy] Copying 12 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/grails-app
           [copy] Copying 26 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/classes
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/spring
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/classes
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/templates/scaffolding
           [copy] Copying 6 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/templates/scaffolding
           [copy] Copying 49 files to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/lib
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF
         [delete] Deleting: /Users/arungupta/.grails/1.0.2/projects/helloworld/resources/web.xml
           [copy] Warning: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/plugins not found.
      [propertyfile] Updating property file: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/classes/application.properties
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging/WEB-INF/plugins
           [copy] Warning: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/plugins not found.
            [jar] Building jar: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/helloworld-0.1.war
         [delete] Deleting directory /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/staging
      Done creating WAR /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/helloworld-0.1.war

      The create WAR file is 18,012,069 bytes.
    2. Start the GlassFish container as:

      ~/testbed/glassfish/v3/p2-b08/glassfish >bin/startserv --verbose
      Apr 10, 2008 11:03:28 AM com.sun.enterprise.admin.launcher.GFLauncherLogger info
      INFO: JVM invocation command line:
      /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/bin/java
      -cp
      /Users/arungupta/testbed/glassfish/v3/p2-b08/glassfish/modules/glassfish-10.0-SNAPSHOT.jar
      . . .
      INFO: Listening on port 8080
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.services.impl.GrizzlyEmbeddedHttpConfigurator configureSSL
      WARNING: HTTP listener on port: 8181 is secured, but SSL configuration is not found!
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
      INFO: Listening on port 8181
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.services.impl.GrizzlyProxy start
      INFO: Listening on port 4848
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter setContextRoot
      INFO: Admin Console Adapter: context root: /admin
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.server.AppServerStartup run
      INFO: com.sun.enterprise.v3.services.impl.GrizzlyService@b24c9a startup done in 681 ms
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.services.impl.ApplicationLoaderService postConstruct
      INFO: loader service postConstruct started at 1207850609785
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.server.AppServerStartup run
      INFO: Application Loader startup done in 717 ms
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.server.AppServerStartup run
      INFO: Glassfish v3 started in 717 ms
      Apr 10, 2008 11:03:29 AM com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter ready
      INFO: AdminConsoleAdapter is ready ...
    3. Deploy the WAR file as:

      ~/testbed/grails-1.0.2/samples/helloworld >~/testbed/glassfish/v3/p2-b08/glassfish/bin/asadmin deploy helloworld-0.1.war
      helloworld-0.1 deployed successfully
      properties=(name=helloworld-0.1)
      Command deploy executed successfully.

      The output in the browser now looks like:


  5. Add Controller and Re-deploy
    1. Create a new controller as:

      C~/testbed/grails-1.0.2/samples/helloworld >grails create-controller hello

      Welcome to Grails 1.0.2 - http://grails.org/
      Licensed under Apache Standard License 2.0
      Grails home is set to: /Users/arungupta/testbed/grails-1.0.2

      Base Directory: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld
      Note: No plugin scripts found
      Running script /Users/arungupta/testbed/grails-1.0.2/scripts/CreateController.groovy
      Environment set to development
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/controllers
      Created Controller for Hello
          [mkdir] Created dir: /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/grails-app/views/hello
           [copy] Copying 1 file to /Users/arungupta/testbed/grails-1.0.2/samples/helloworld/test/integration
      Created ControllerTests for Hello

      and change the controller as shown:

      ~/testbed/grails-1.0.2/samples/helloworld >vi grails-app/controllers/HelloController.groovy

      class HelloController {

             def world = {
                      render "Hello World!"
              }
          //def index = { }
      }
    2. Re-create & re-deploy the WAR as described in bullet # 4. And now "http://localhost:8080/helloworld-0.1" shows the output as shown:



      and clicking on "HelloController" shows the output as:



      The same view is also available at "http://localhost:8080/helloworld-0.1/hello/world" as shown below:


So we deployed a simple Grails application as a WAR on GlassFish v3. Here are some tasks that we are working on:
  • Deploy Grails app on GlassFish v3 using "grails" command (in development environment)
  • Deploy Grails app directly on GlassFish v3 without creating a WAR (in production environment)
  • Seamless integration with NetBeans to provide direct development/deployment to GlassFish
And there is much more, stay tuned!

If you have questions, ask them at GlassFish forum or Users Alias.

Technorati: groovy grails glassfish v3 scripting netbeans

del.icio.us | furl | simpy | slashdot | technorati | digg |
|

http://blogs.sun.com/arungupta/date/20080410 Thursday April 10, 2008

Kenya sings for India - Pangea Day, May 10, 2008



Learn more about Pangea Day - 4 hours, 24 films and a new way to see the world!

Technorati: kenya india youtube nationalanthem janaganamana pangeaday

del.icio.us | furl | simpy | slashdot | technorati | digg |
|
« Previous month (Mar 2008) | Main | Next page of month (Apr 2008) »

Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.