Thursday Oct 20, 2011

Oracle Public Cloud - Java, Database, Social Network, Fusion CRM, Fusion HCM

The Oracle Public Cloud is a suite of Oracle Applications, Middleware and Database offerings delivered in a self-service, subscription-based, elastically scalable, reliable, highly available and secure manner. Oracle provides hosting, management, software updates, and world-class support for these offerings.

The Oracle Public Cloud includes the following services:
Why Oracle Public Cloud is a better offering than others ?
  • It can be used for enterprise business applications because of the complete (applications, database, middleware), open (based on standards), and flexible (cloud and on-premise deployment with the ability to move applications back-and-forth)
  • Applications are fully integrated and ready to use
  • New applications can be built using standards like Java EE and SQL without locking you into a framework
  • Based upon Exalogic and Exadata offering superior reliability, peformance, and elastic capacity
Read more details at Why Oracle ?.

Watch an interesting set of short introductory videos recorded on some of the services. The first one is an introduction on Oracle Public Cloud:

The next one explains the Oracle Java Cloud Service:

Read more about the Java Service at Reza's blog. See a live demo of the Java Service below:

Then the Oracle Database Cloud Service:

And finally the Oracle Social Network Cloud Service:

Read more details about Oracle Social Network Service. How do you get started ?
Here are some more links for you:
The service will be offered from the US-based data centers and then expanding to EMEA and APAC based upon demand.

Monday Oct 03, 2011

Java EE PaaS using GlassFish 4.0 - JavaOne 2011 Technical Keynote

The JavaOne 2011 Technical Keynote explained how a Java EE application can be easily deployed in a PaaS environment using GlassFish 4.0.

The Java EE application, built from scratch, allows conference organizers to publish details about their conference such as tracks, sessions, and speakers. It also allows attendees to register for the conference and prepare their schedule. The application is built as a typical 3-tier Java EE 6 application using JavaServer Faces (with PrimeFaces widgets) for the front-end, Enterprise JavaBeans for the middle tier business logic, and Java Persistence API for connectivity with the database.

Deploying this application to GlassFish 4.0 highlights the following points:

  • Dynamic Service Provisioning: The service dependencies are discovered by introspecting the application archive and the required services such as Java EE, Database, and Load Balancer are provisioned. These services may be provisioned as part of an application deployment as is the case here, or a deployment can use pre-provisioned services that could be shared by different apps.
  • Elasticity using Auto-scaling: The Java EE cluster is automatically resized to meet the growing demands using auto-scaling. The decision to dynamically grow or shrink is based upon metrics that are collected during the application flow.
  • Highly Available Cluster: The Java EE cluster is highly available with session failover capabilities.

GlassFish 4.0 is a release in development that will allow for PaaS environments in the native and virtualized mode. The native mode provisions all the services on a non-virtualized environment such as a laptop/desktop and easy-to-replicate development and debugging mode. The virtualized mode allows a PaaS administrator to provision all the services in a private or public cloud, in an IaaS-agnostic manner, and provides for scalable deployments by supporting Elasticity to scale up (vertically) or scale out (horizontally) and to scale down to meet the changing needs. The Service Provisioning and Elasticity functionalities can be automatically done by the system or allow for manual action.

Follow the instructions to deploy this application in the native mode:

  1. Download the sample application, unzip, and build as mvn package.
  2. Download platform-specific Load Balancer zip file (Windows, Mac, Ubuntu, Ubuntu-64).
  3. Download GlassFish 4.0 build b04 and unzip.
    1. Copy "" to the "glassfish3\glassfish\config" directory.
      1. On Unix machines, the Load Balancer is installed in the directory "/u01/glassfish". Make sure to create this directory and change directory ownership to your login id..
      2. On Windows machines, the Load Balancer is created in the "C:\glassfish" directory.
      3. Check that you are able ping your hostname, such as ping `hostname`
    2. Start the domain as: asadmin start-domain
    3. Enable PaaS Console as: asadmin enable paas-console
    4. Configure GlassFish for the native mode as: asadmin create-ims-config-native
    5. Create a template for load balancer as: asadmin create-template --indexes ServiceType=LB,VirtualizationType=Native LBNative
    6. Follow the instructions in the video below (starting at 5:24) to deploy the application using PaaS Console. Applications not using database functionality or not relying upon a SQL for the database initialization can be deployed using CLI as: asadmin --availabilityenabled=true <APP-NAME>.war

Enjoy the video below for a more detailed explanation of the installation steps, application flow, dynamic service provisioning, high availability and session failover, and auto-scaling using elasticity in the virtualized mode.


Send us feedback at the GlassFish Forums.

An active copy of this page is maintained at


Thursday Jun 02, 2011

Cloud Computing Expo, New York City Java Meetup, SELF, Greenville JUG: Java EE 6 & GlassFish next week

Java EE 6 & GlassFish is swimming to New York City and South Carolina next week. Here is the schedule:

Running your Java EE 6 applications in the Cloud - Tuesday, Jun 7, 6:25pm
Schedule, Register

Learn Java EE 6 in a NetBeans-driven session
- Wednesday, Jun 8, 6:30pm

Java EE 6: More power with less code using NetBeans and GlassFish - Thursday, Jun 9, 6:30pm onwards

Java EE 6 Hackathon using NetBeans and GlassFish - Sunday Jun 12, 2011
Schedule (PDF), Venue, Register!

Where will I see you ? Or run with you ? :-)

Tuesday Feb 15, 2011

JFokus 2011 Day 3 Trip Report - JDuchess, Future Java Developer, Java EE/Cloud, Icebar

JFokus 2011 ended after spending 2600 man hours educating 1100+ developers. (Day 2 and 1 reports)

I gave a talk on "Running your Java EE 6 applications in the Cloud". The talk explained the key benefits of Java EE 6 and then explained how this application can be deployed on Amazon, Joyent, Rightscale, and Azure. The talk also explained how Java EE 7 is going to evolve to become a cloud-enabled platform. The slides are now available:

The minimal presence of women in Java conferences is intriguing. JDuchess are trying to solve that problem by bringing more women in Java and connecting them.

I met three of them earlier today and here are top three ways you can help them:
  • Raise awareness about the program by sharing this with others.
  • Help other women get into Java technology by educating them.
  • Participate/speak at conferences and connect with other women.

Are you a woman reading this blog and work in the Java technology ? Sign up today and help spread the effort and make your voice heard!

I also attended Bruno and Sven's talk on the "The Future Java Developer". They both touched some of the key points on embracing open source, remote working, freedom from hardware/software (ability to deploy in cloud), programming for multiple devices, revised costing model for SaaS/PaaS/IaaS, working in global teams, agile development, speech-to-code, and many others. The specific suggestions were:

  • Deploy applications in the cloud
  • Work with distributed teams from different cultures
  • Create architectures looking for simplicity
  • Think of services
  • Become a polyglot programmer

Their complete slides are available here.

One of my colleagues (Tomas Nilsson) here is getting ready for a marathon. He was kind enough to take me out on a run in sub-zero Stockholm downtown (yes, it was some 16F). I've always felt that running gives a unique perspective to view a city and I was not disappointed today at all, especially Tomas did a great job explaining the key vista points. Now our GPS watches could not find the satellite for the first 20 mins but here is our running map:

Good luck Tomas, you'll do well, happy running!

The evening was enjoyable as well in the world's first permanent ice bar, appropriately called as Icebar Stockholm. No matter what the temperature is outside, the inside temperature is always maintained at -5C year around. The entire interior including the glasses are made from clear ice from a local river. You have to wear a cape to protect yourself from the cold temperature and also to protect the interiors. You've to make a reservation as the attendance is restricted but this is a must stop if you are visiting Stockholm.

Here are some pictures from Day 3:

And the complete album is now available at:

Thank you Mattias for running a wonderful show and providing an opportunity to participate in my very first JFokus and now looking forward to participate in JFokus 2012!

And after being out for 8 days ... so ready to go home now :-)

Technorati: conf jfokus javaee6 glassfish cloud sweden stockholm

Saturday Feb 12, 2011

JavaGruppen's Fifth Annual Arskonference 2011 - Trip Report

Børkop is a small town (about 100 km2 and low five-figure population) in the southeast part of Denmark. There are many more smaller towns but this is probably the smallest town to host a technology conference. There were about 30 attendees so that gave a good chance to have some 1-1 discussions. And the airport for this town is Billund which is the headquarter for the fift largest toy manufacturers in the world - LEGO. Do you know of any other smaller towns hosting a conference ? :-)

Anyway, Javagruppen is the annual conference of Danish JUG and its fifth edition was held in Børkop during last couple of days. And the theme was "Java, A cloudy affair". There were talks on Java EE 6, jClouds, Arquillian, GridGain, Spring, Azure and several others. It was nice meeting Aslak Knutsen (Arquillian), Adrian Cole (jClouds), and David Chou (Azure). I gave some suggestions to Adrian and David (Java wishlist for Windows Azure) about simplifing Java development in their environments and hopefully it should get better. The speaker dinner gave the opportunity to engage with the board members and many thanks to Soren for picking me from the airport.

I gave a presentation on "Running your Java EE 6 Applications in the Cloud". Fortunately the previous presenter finished early so I got a few extra minutes of talking about Java EE 6 simplicity and ease-of-use. There were cheers for GlassFish web-based administration console using RESTful APIs for all of administration, management, and monitoring - parphrasing "that's how an application server should be in order to run in the cloud". NetBeans deploy-on-save and session preservation features were well appreciated, as always! Anyway, screencast #37 shows complete Java EE 6 development using NetBeans and screencast #36 do the same for Eclipse. The talk explained how a simple Java EE 6 application can be easily deployed on Amazon, Rightscale, Azure, and Joyent clouds. And also shared thoughts on how Java EE 7 is going to evolve to support the PaaS paradigm.

Check out the slides:

I also clarified on a lunch discussion that JBoss 6 is Web Profile compliant only, is not even a commercially supported product at this time with no timelines. Use this matrix to help you decide the Java EE 6 deployment platform. With GlasFish 3.1 coming out later this month, the choice is going to be obvious!

UPDATE: Some feedback received afterwards:

Super cool presenter - very inspiring and of course a superb technician. Would enjoy to hear Arun on other Java EE / GF subjects too!

Probably won't use neither NetBeans nor Glassfish in the future but seeing the technologies in action was interesting none the less. The speaker was obviously highly intelligent and very good at his job. Enjoyed the presentation.

Here are some pictures from the event:

The hotel venue, Comwell Kellers Park, was located in Denmark country side and shorelined the bay of North Sea in Vejle Ford. The hotel had several spas with varying range of temperatures. There was a cold water spa inside and a hot tub outside looking at the bay. And then there was sauna, spa for the feet, and couple of other spas as well. The fitness center had a nice view of the bay as well. This is winter season here so it was really cold, for me at least. Looking at the amount of trees surrounding this neighborhood, I can only imagine the lush green in spring. However I managed to get couple of good runs around the neighborhood.

I also managed to recruit a jduchess member :-) If you are a women working in Java technology, then consider joining as well! They'll be having a breakfast at JFokus, its sold out but you can still meet them afterwards.

Check out the complete set of pictures:

Next stop, JFokus and Vaadin Meetup. The snowstorm in Stockholm has now settled and so looking forward to see some beautiful sights!

Technorati: conf javagruppen denmark vejle glassfish javaee6 cloud

Monday Feb 07, 2011

TOTD #155: Run GlassFish in Windows Azure

David Chou blogged about Run Java with GlassFish in Windows Azure ... super! I've been thinking of trying this for sometime and was quite stoked when an initial introduction from Doris and a nudge from me expedited a task pending since past few months. Thanks a lot David for blogging the steps and answering my multiple emails (about 70+ over the past few days :) to help fine tune these steps for the GlassFish community.

This Tip Of The Day (TOTD) will provide detailed steps for running GlassFish in Azure. Lets get started!

  1. Request a free 30-day Windows Azure Pass (or click here). It took me about 15 days between the request and issue of this pass so plan accordingly.
  2. Download and Install the softwares
    1. Download and Install Visual Studio Express.
      1. Install Virtual Clone Drive such that Visual Studio ISO image can be mounted and then installed.
    2. Download and Install Azure SDK and Tools.

      "VCloudService.exe" is the plug-in for Visual Studio and provides integration of Azure tools to Visual Studio. The SDK provides out-of-Visual Studio help so you could do things on the CLI or test the project using Compute and Storage emulator (more on this later).
    3. Install IIS 7.0 on Windows Vista following these instructions.
    4. Make sure to enable "World Wide Web Services", "Application Development Features", ".NET Extensiblity" and "ASP.NET" in Control Panel as shown:

    5. Download JDK 1.6 (latest update) for Windows and install it on a Windows machine.
    6. Download GlassFish 3.1 b40.
  3. Upload installation files to Azure Blob Storage - Upload the GlassFish zip file and JDK installation zip to Azure Blob Storage service. These images will then be used by the Compute Cloud to install JDK and GlassFish during the image initialization.
    1. Using Azure Management Console, create a New Storage Account as shown:

    2. The typical convention is to create multiple containers in Blob Storage and load your application into "apps" container and JDK installer into "java" container. There are several tools that allow you to manage the Azure Storage service such as Neudesic's Azure Storage Explorer and Cerebrata's Cloud Storage Studio. I prefer Cloud Storage Studio because it gave me a nice debug error message when the local Windows machine date/time were too much out of sync with the storage server. However once the error was identified and fixed, Azure Storage Explorer worked as well.

      Note for creating a new account in either of these tools, create a new "Storage Account" using "Azure Management Console", and use "Primary access key" and "Account Name" for account credentials

      This is the same access key specified in the project configuration later. I used GlassFish 3.1 build 40 and installed JDK locally on my machine, made a zip, and then uploaded in the storage. Another option is to silent install JDK.

      Here are snapshots from Azure Storage Explorer after the files are uploaded to Azure Blob Storage:

      Make sure to select "HTTPS" check box when the connection is created. And now Cloud Storage Studio snapshot ...

  4. Create the Visual Studio project
    1. Start Visual Studio using Administrator privileges. This will ensure that service package created later can be deployed to Azure Compute Emulator (used for testing in the local environment) from within the IDE.
    2. Select "File", "New Project ..." and create a cloud-based project by selecting/entering the values as shown:

      and click on "OK".
    3. Create a new worker role as:

      Select "Worker Role", click ">", edit the name to "GlassFishWorker", and click on "OK".
    4. Extract (from Mario Kosmiska's article) and copy the following files:
      • lib\\ICSharpCode.SharpZipLib.dll
      • Run.cmd
      • Launch.ps1

        from "JettyWorkerRole" to this newly created solution. The updated directory structure looks like:

    5. Make sure to save "Launch.ps1" and "Run.cmd" using "Save As...", "Save with encoding" and selecting "Western European (Windows) - Codepage 1252" instead of the default "UTF-8".
    6. Change the properties of the copied files such that these files are copied to output directories for compilation and packaging. In Solution Explorer, right-click on each file and select "Properties" and change the value from "Do not copy" to "Copy always" as shown below:

    7. Edit "Launch.ps1", keep the two pre-defined functions as is and change the text as shown below:

      $connection_string =
      # JDK
      $jdk = ''
      download_from_storage 'java' $jdk $connection_string (Get-Location).Path
      unzip ((Get-Location).Path + "\\" + $jdk) (Get-Location).Path
      # GlassFish
      $glassfish = ''
      download_from_storage 'apps' $glassfish $connection_string (Get-Location).Path
      unzip ((Get-Location).Path + "\\" + $glassfish) (Get-Location).Path
      # Launch GlassFish
      .\\jdk1.6.0_23\\bin\\java `-jar
      .\\glassfish3\\glassfish\\modules\\admin-cli.jar start-domain --verbose

      "" is the name of zipped directory JDK 6 installation uploaded to Azure Blob Storage and similarly "" is name of the zip file for your GlassFish 3.1. The latest build of GlassFish 3.1 can always be downloaded from here.
    8. Edit "ServiceDefinition.csdef" to change the service definition and add the following fragment:
         <Task commandLine="Run.cmd" executionContext="limited"taskType="background" />
         <InputEndpoint name="Http_Listener_1" protocol="tcp" port="80" localPort="8080" />
         <InputEndpoint name="Http_Listener_2" protocol="tcp" port="8181" localPort="8181" />
         <InputEndpoint name="Http_Listener_3" protocol="tcp" port="4848" localPort="4848" />
         <InputEndpoint name="JMX_Connector_Port" protocol="tcp" port="8686" localPort="8686" />
         <InputEndpoint name="Remote_Debug_Port" protocol="tcp" port="9009" localPort="9009" />
      as shown below:

      Notice the external "port" for "Http_Listener_1" is 80 and "localPort" is 8080. This ensures that public requests can be received without specifying the port number (80 being the default) and then internally it is routed to port 8080 which is where GlassFish is running anyway. For all others, the same port is exposed.
  5. Deploy the project from Visual Studio, complete steps are described here and the relevant ones are captured below:
    1. Create a new Hosted Service using Azure Management Console by clicking on "New Hosted Service" and entering the details as shown below:

      and click on "OK". If you recall, we set the external port to be 80 and redirecting to local port 8080. With this setup, your requests will be received at "" or "" and redirected to GlassFish 3.1 b40 running on the provisioned instance. Choose the service name carefully as that becomes the URL of your deployed service.
    2. In Solution Explorer, right-click on the project and choose "Publish ..."

      The default operating system provisioned is "Windows Server 2008 SP2" and can be configured by editing "osFamily" and "osVersion" attributes in ServiceConfiguration.csdef. For example changing "osFamily" to "2" will use "Windows Server 2008 R2".
    3. Specify the Credentials as shown below:

      and click on "OK".
    4. Click on "Copy the full path" and then copy the certificate to "Management Certificates" section of the Management Portal.
    5. Select the "production" environment as shown below:

      and click on "OK".
      1. Optionally, you can configure Remote Desktop Connection in case you want to look at the provisioned system later. Here is how the configuration looks like:

        More details about the configuration are described here. Some clarifications on this step ...
        1. The password must contain a mix of lower-case letters, upper-case letters, and numbers or symbols otherwise will not accept it. Just a red icon appears to the right with no indication of the error message.
        2. Certificate Export
          1. After the certificate is created, click on "View ...", "Details" tab, "Copy to file ..." button to copy the generated certificate to a file. This certificate need to be imported in Management Portal.
          2. Make sure to select "Yes, export the private key".
          3. Select "Delete the private key if the export is successful".
        3. Upload this certificate to Management Portal (before publishing the project) as explained in "To upload a certificate using the management portal" here.

          How I could not get this configured successfully and kept getting the error:
          There was no endpoint listening at
          that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
    6. The "Windows Azure Activity Log" displays log as the project is deployed to Azure. The following is displayed once the project is successfully deployed:

      Now you can access the "Website URL" to see:

      And web-based Admin Console is seen as:

This GlassFish instance is the default installation. What would you like to do with it - hack it, break it, deploy apps to it, something else ? :-) I can just right-click in my Visual Studio project and deploy this instance again!

Once again, many many thanks to David Chou for helping me through these steps!

Some TODOs for the future blog entries ...

  1. Create a Java EE 6 application using NetBeans and remote deploy it to this instance.
  2. Try out this installation locally using Azure Compute Emulator and Storage Emulator.
  3. Try debugging Launch.ps1 scripts using Power Shell.
  4. Use JPA to access data in SQL Azure.
  5. Debug SOAPAction error in Remote Desktop Connection.
  6. Windows Azure VM Role feature for JDK installation.
  7. Is ServiceConfiguration extensible ? I'd love to have an attribute in this file take care of JDK/GlassFish installation.
  8. GlassFish 3.1 clustering integrated with Azure Clustering and Load Balancing.

Which one are you going to author ? :-)

Technorati: totd glassfish javaee6 microsoft windows azure cloud

Friday Oct 15, 2010

Java EE 6 & GlassFish @ Silicon Valley Code Camp 2010 Trip Report - Slides Now Available

What's common between 350 Mountain Mike's Pizza, 920 Erik's Deli Sandwiches, 29 huge jugs of Peet's Coffee, and 194 geek sessions ?

It takes 1876 developers, hackers, architects, technology honchos etc to consume all of them over a weekend :-)

Yes, we are talking about Silicon Valley Code Camp 5.0!

This is a for the developer community, by the developer community, and to the developer community event focused on Agile, Cloud, HTML5, Google Developer Tools & Platforms, Java, Web services, and many other topics. The code camp website shows attendance records from the previous years as:

A slightly updated view of this data is:

As you can see, there is steady year/year growth in the number of sessions, registration, and attendance. This year specifically has seen about 60% growth on registrations and 80% on the actual attendance. The ratio between registered/attended was also steady for the first few years and has also gone higher this year. This event has truly grown organically over the past years and is the second biggest conference, with Java focus, in the USA after JavaOne! Oracle certainly was a platinum sponsor of this conference. Are there any other bigger conferences that I don't know of ? ;-)

It would be interesting to revisit this pattern if the event starts charging a nominal (may be optional) fees from all the attendees. However the main website highlights three points:

  • by/for the developer community
  • always free
  • never occur during work hours

GlassFish team presented several sessions at the Code Camp:

  1. Java EE 6: Doing More with Less
  2. Java EE 6 Tooling
  3. Introduction to JAX-RS
  4. Servlets 3.0: Asynchronous, Extensible, Easy-to-use
  5. OSGi and Java EE in GlassFish
  6. Running your Java EE 6 applications in the Cloud

I could not deliver #5 due to a conflict but slides from all the sessions are now available:

Here are some key pointers for you:

Check out the complete list of sessions by Oracle at the Code Camp. Please enter session evaluations at (make sure you are logged in and then click the link at the end of the session you attended that says 'Evaluate').

The Android App was pretty useful, did not try the iPhone App. I wonder if there was a session on "How I created the Android/iPhone App" :-)

Personally, this was my fourth code camp (2009, 2008, 2007) and I enjoyed meeting the local geek community. I could barely spend Saturday morning at the code camp and delivered two of my sessions but its always fun to meet the usual suspects. Many thanks to Peter Kellner, Van Riper, Tammy Baker, Kevin Nilson, other organizers, and many other volunteers for running a great show!

Couple of suggestions for next year ...

  • Expose the RESTful API for the code camp registration/session/speaker/etc data and organize a competition on the best created app. May be a panel with different attendees who attempted to build this application ?
  • Make sure the speakers are not running across the campus between their back-to-back talks. 

Check out some of the pictures:

And the complete photo album:

Looking forward to Silicon Valley Code Camp 6.0 next year!

Technorati: conf svcc javaee6 glassfish netbeans eclipse intellij cloud osgi servlets restful

Friday Oct 08, 2010

Java2Days 2010 Trip Report

Java2Days 2010 in Sofia, Bulgaria was my first trip to Eastern Europe. I spent more time flying than actually in the city because of personal reasons but enjoyed the conference. There were approx 500 attendees but this being the only major conference in this part of the world, its only bound to grow.

The Day 1 conference started late and some initial speakers took extra time and thus by lunch time there was an hour long gap. My talk on "Running your Java EE applications in the Cloud" was bumped to end of the day in order to get back in track. Yes, the conference did get back on track but I lost a significant chunk of audience because of further delays by other speakers after lunch. Anyway the slides are available:

The talk explained

  • Oracle's definition of Cloud and talked about Exalogic Elastic Compute Cloud, a.k.a "Cloud in a box"
  • Light-weight ness, extensibility, and simplicity/ease-of-use of Java EE 6
  • How to run Java EE 6 on Amazon, RightScale, Elastra, and Joyent
  • Comparison of multi-cloud vendors
  • What Java EE currently offers for the Cloud and what's coming in Java EE 7

The other talk demonstrated how NetBeans provide extensive tooling around Java EE 6 & GlassFish. The slides-free talk showed how NetBeans makes you a lazy, aka productive, programmer and showed the wizards, code completion, integrated javadocs etc for Java Server Faces 2 (JSF), Context & Dependency Injection (CDI), Java Persistence API 2 (JPA), Servlets 3.0, Enterprise Java Beans 3.1 (EJB), and Java API for RESTful Web Services (JAX-RS). The complete sample application build during the talk can be downloaded here. Here is a review from one of the attendees:

No ivory tower or Chinese slides. Just NetBeans, Glassfish and the developer! I hope that more and more people think now that Java and Java EE in particular is much better than the various strange combinations like RoR, PHP or some other awkward framework that promises developer heaven.

Check out screencast #30 to view the complete set of Java EE 6 Netbeans tooling. Java EE 6 tooling is also available in Eclipse and can be seen in the screencast #31.

The speakers' dinner to a local BBQ was one of the highlights. Enjoyed Rakia, local food, beautiful performances by local dancers, and then learning some basic steps with them. I wonder how many other conferences are going to provide a speakers's dinner event like that ;-)

Enjoyed meeting Andrew Lombardi, Reza Rehman, Vassil Popovski, Damon Edwards, Eugene Ciurana, Geroge Reese, James Ward, Werner Keil, other speakers, and of course Alexis!

Many thanks to Emo, Yoana, Iva, Evo, Bobby, and rest of the Java2Days team. Their warm "airport to airport" hospitality started at the Sofia airport where Emo came to receive some of us and went all the way back to the airport when Evo ensured that I'm checked in at the airport. Looking forward to participate again next year!

Some travel tips to Bulgaria ...

  • Bulgaria is not part of EU yet and does not accept Euros so make sure to withdraw some local currency from the ATM machines.
  • Any spirits/alcohol/wine from the duty free needs to be checked in if you are flying through EU.
  • Taxi drivers take local currency only, no credit cards.
  • 1 Bulgarian Lev is apporx $0.75.
  • Language will likely be an issue but with a local team member this was well taken care for us.
  • Make sure to try out some Rakia, it's 40% alcohol made with either grape, apricot, and plums.
  • I was told to not run on the streets because there were drug addicts in at least the part of city where we were staying.
  • Sofia is not a small city and the traffic can be intense during peak hours so plan accordingly.

And finally some pictures ...

And the complete album:

Next stop is Silicon Valley Code Camp which starts in about 3 more hours. This is the 5th anniversary of the conference and 4th mine (2009, 2008, 2007). With about 3000 registered attendees, this is going to be quite a conference. If half of the registered attendees show up, then this is going to be the biggest US conference after JavaOne!

Technorati: conf java2days sofia bulgaria glassfish javaee6 cloud netbeans

Saturday Aug 21, 2010

IndicThreads Cloud Computing 2010 Trip Report had their inaugural conference on Upcoming Technology on Aug 20/21 in the city of Pune, India. As the name says, the goal of this conference is to talk about upcoming technologies and Cloud Computing was the chosen topic this time. Harshad & Sangeeta Oak - the driving forces behind Rightrix and this conference made it clear that this conference is not intended to be a training and the aim is to present the latest happening in the cloud world and get the attendees thinking. BTW, Harshad is also an Oracle ACE Director and a Java Champion. The theme of the conference was easily summarized in "Learn, Discuss, Debate, Argue".

Please provide feedback for the sessions at

I gave a session on "Running your Java EE 6 applications in the Cloud" and the slides are available below:

I continue to stick to my philosophy of "Code is king" and showed several code samples & screen snapshots. Several attendees told me afterwards that they liked the session because it was well grounded.

The conference had a single track which gives you the ability to attend all the sessions, and there were several of them. Here are my brief notes from some of the sessions I attended. All the slides from different sessions are given below:

And now some notes ...

Cloud computing - making the right choice by Kalpak Shah

  • Why cloud ?
    • No capital expenditure, only operational expenses
    • Reduced IT administration
    • Elasticity - Fast & inherent scale up/down
    • Commoditization of IT - Only storage, only content delivery, only messaging
    • Automation using APIs
    • Pay-as-you-go for tools & ecosystem
    • Reduced time to market, focus on core competency
  • Explained the concept of Iaas, PaaS, SaaS, and then Storage-as-a-Service (yet another SaaS)
    • Consideration for IaaS
      • Combine Support & Infrastructure - Amazon is cheap for infrastructure, costly for support
      • Cores are much slower on Amazon, faster on Rackspace
      • Good matrix for comparing IaaS vendors
    • Comparing PaaS & SaaS vendors
      • Development language & available skill sets
      • Ease of deployment & maintenance
      • Size of vendor & ecosystem maturity
      • Tools, monitoring, connectors, adaptors
      • Maturity of API & bindings available
      • Does vendor allow private cloud integration ?
  • Ways to Cloudify
    • Public clouds - Large datacenters, provide many services (CPU, storage, CDN, databases, etc), can try it, but comes with security, latency & bandwidth issues
    • Private clouds Normal on-premise databcenters with cloud with all usual benefits of elasticity, self-service, pay-asyou-go, programmabilty, offerings from VMWare, IBM, Microsoft, Eucalyptus
    • Hybrid clouds SaaS Virtual desktops for training Cloud storage for backup etc
  • Interesting private cloud platforms
    • Eucalyptus - Open-source IaaS cloud computing platform, compatbile with AWS enabling almost seamless movement with AWS, Extremely flexible and easy to administer
    • VMWare vCloud - Take the private cloud image, drag/drop on the public cloud and it just works. Platform is consistent & mature and it just works
    • Appistry - Application platform for private, public, and hybrid clouds
    • Rackspace - OpenStack compute and OpenStack storage
    • VMOps
  • Azure
    • Cloud services operating system
    • Provide services across the entire cloud stack - IaaS, PaaS, SaaS
    • Development, service hosting & management
    • Integrated with exisitng on -premises environment
    • Private cloud integration
    • Reliance is using Azure for some of their projects

Architecture Challenges in Cloud Computing by Prabodh Navare

  • Design for auto-scaling, high performance, failover, data portability, pay-as-you-go
  • Vertical scalability - write algorithms that are efficient
  • Horizontal scalability - Have the applications as simple/replicable as possible
  • Options for private cloud in open Source - Eucalyptus, Ubuntu enterprise Cloud, Open nebula, Nimbus, redhat

Getting started with jClouds by Vikas Hazrati

  • Fog, Deltacloud - Ruby-based multicloud library
  • Libcloud - Python-based
  • Dasein uses jclouds as their base API
  • jClouds easy to start
    • Simple interface (Map object)
    • OSS
    • Runtime portability
    • Java & Clojure
    • Unit testability across clouds
    • High performance because of NIO
  • Blobstore (atmos, azure, rackspace, s3)
  • Compute (vcloud, ec2, gogrid, ibmdev, rackspace, rimu)
  • Not 100% but pragmatic portability, dig in with extensions
  • Integration with Apache VFS to see the listing of Blobstore

Preparing data for your cloud by Narinder Kumar

  • Advantages of Non-relational DBMS
    • Scalability
    • Replication / Availability (less feature set but more performant)
    • Performance
    • Deployment flexibility
    • Modeling flexibility
  • Disadvantages
    • Lack of transactional support
    • Data integrity is app's responsibility
    • Data duplication is app dependent
    • Eventual consistent
    • No standardization
    • New technology
  • RDBMS & Cloud
    • MySQL, Oracle, PostgreSQL, DB2, SQL Server are cloud-capable RBDMS
    • Microsoft SQL Services and AWS RDS are cloud native RDBMS
  • SQL Azure is built on SQL Server and so very intuitive.
  • Non-relational DBMS
    • Key value stores - Amazon Dynamo (not for public consumption), S3, Project Voldemort, Redis, Scalaris, MemCacheDB, Tokyo Tyrant
    • Document stores - CouchDB, mongoDB, riak, Amazon SimpleDB
    • Column stores - Google Column Store, Cassandra, HBase, Hypertable
    • Graph stores

Day 2 had interesting sessions on Azure by Janakiram M from Microsoft, EC2 by Simone Burnozzi from Amazon and multi-tenancy by Vikas from Inphina.

The Unconference at the end of Day 1 had some interesting topics like Cloud Standards, how Cloud can help fight massive scale diseases, and what a Java stack needs to provide in the cloud.

Over all, I had a great time, enjoyed some great conversations with Dhananjay Nene, Vikas Hazrati, Narinder Kumar, Rohit Naik, Navin Kabra, Manju, Amarpal Singh, and several others. I hope more attendees can join us for an impromptu social gathering in the evening. Anyway, looking forward to participate in the future Upcoming Technology conferences and others hosted by IndicThreads.

Here are some pics from the event:

And the complete album:

Technorati: conf indicthreads cloud india pune

Thursday Jun 24, 2010

TOTD #141: Running GlassFish 3.1 on Ubuntu 10.04 AMI on Amazon EC2

GlassFish 3.1 Milestone 2 was released this week, download the zip file.

TOTD #138 provide simple instructions to get you started with Milestone 1 and you can follow similar steps to get started with Milestone 2 as well. A more detailed blog on the new functionality (SSH Provisioning and Dynamic App Deployment) is coming as well.

In order to test the newly added clustering capabilities of GlassFish 3.1, I decided to run Milestone 2 build on a Ubuntu 10.04 instance on Amazon EC2. My host operating system is Mac OS X and even though the steps are defined at multiple locations (mentioned below) but complete set of steps were missing. This Tip Of The Day (TOTD) shows how get started with running a GlassFish 3.1 build on Ubuntu 10.04 instance on Amazon EC2.

This TOTD consulted the following blogs:

Twitterverse was very helpful and Divyen helped smoothen the rough edges!

Lets get started!

  1. In your home directory, create a new ".ec2" directory.
  2. Generate SSH Key & X.509 certificates
    1. Generate X.509 certificates key
      1. Go to your AWS account and click on "Security Credentials".
      2. In "Access Credentials" section, click on "X.509 Certificates" and click on "Create a new Certificate". Make sure to download the private key file and X.509 certificate in ".ec2" directory as "cert-xxxxxx.pem" and "pk-xxxxxxx.pem".
    2. SSH key - Public AMIs can be accessed using an ssh key. Give the following command in ".ec2" directory:
      ec2-add-keypair ec2-keypair > ec2-keypair.pem

      This will generate the SSH key in the file "ec2-keypair.pem".
  3. EC2 API Tools
    1. Download Amazon EC2 API Tools from here and unzip them in ".ec2" directory.
    2. Move "lib" and "bin" directory from the extracted directory to ".ec2" directory.
  4. Create ".ec2.profile" file in ".ec2" directory and add the contents:
    export EC2_HOME=~/.ec2
    export PATH=$PATH:$EC2_HOME/bin
    export EC2_PRIVATE_KEY=`ls $EC2_HOME/pk-\*.pem`
    export EC2_CERT=`ls $EC2_HOME/cert-\*.pem`
    export EC2_URL=

    The last line sets the default zone to US-West-1. The AMI id used later is from this region. Source this file by giving the following command in ".ec2" directory:
    source ".ec2.profile"
  5. On your firewall, authorize port 22 for SSH and 8080 for HTTP access for GlassFish on your firewall as:
    ec2-authorize default -p 22
    ec2-authorize default -p 8080
  6. Run the instance as:
    ec2-run-instances ami-c597c680 -k ec2-keypair
  7. Obtain the public IP address of Ubuntu instance as:
    INSTANCE        i-XXXXXXXX      ami-c597c680       running ec2-keypair     0               m1.small        2010-06-24T16:23:44+0000        us-west-1a      aki-XXXXXXXX    monitoring-disabled      XX-XX-XX-XX   XX-XX-XX-XX

    The address "" is the public IP address and will be used for ssh next.
  8. SSH to the ready Ubuntu instance as:
    ssh -i ec2-keypair.pem

  9. Install JDK 6 on Ubuntu
    1. Add the Ubuntu partner repository as:
      sudo add-apt-repository "deb lucid partner"
    2. Update the list of packages as:
      sudo apt-get update
    3. Install JDK 6 as:
      sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk
    4. Make sure the recently added JDK is at the top of JVM search order by giving the command:
      sudo update-java-alternatives -s java-6-sun
      This command adds "/usr/lib/jvm/java-6-sun" to the top of "/etc/jvm" file.
  10. Install "unzip" package as:
    sudo apt-get install unzip
  11. Download & start GlassFish 3.1
    1. Download GlassFish 3.1 Milestone 2 as:
    2. Unzip the downloaded zip file as:
    3. Start GlassFish as:
      ./glassfishv3/glassfish/bin/asadmin start-domain --verbose
    4. And now your default web page is accessible at "".
  12. Finally terminate the instance as:
    ec2-terminate-instances  i-XXXXXXXX

How are you using GlassFish in the cloud ?

Technorati: totd glassfish ubuntu amazon ec2 cloud osxtips


profile image
Arun Gupta is a technology enthusiast, a passionate runner, author, and a community guy who works for Oracle Corp.

Java EE 7 Samples

Stay Connected


« July 2016