A visit to JUG Ukraine
By alexismp on juil. 23, 2008
The meeting was hosted at GlobalLogic (somewhat of a geek's paradise) and was pretty well attended given the last-minute organization. The presentation slides (in English) are here and the full photo album there.
The presentation started with a bit of a challenge as no one was using GlassFish (mainly WebLogic, WebpShere, Tomcat and some JBoss). Given the presentation + Q&A session lasted almost 2 hours, I think it's fair to say that the interest was great. There were many questions during and after the presentation. Here's the refined Q&A:
• OpenESB looks interesting (documentation, NetBeans graphical tooling, ...), but can I use BPEL4People with it?
Unfortunately IBM does not support JBI and to the best of my knowledge, there is no BPEL4People service engine. OpenESB and JavaCAPS do come with a WS-BPEL implementation though.
• What is the Hibernate/TopLink split? (me asking)
- Hibernate: 60%
- TopLink: 40%
• Is the 404 error in the admin console during your demo a bug or a feature ? ;)
It's certainly a bug. Fixed in GlassFish 2.1.
• Can I deploy OSGi bundles on GlassFish v3?
Well, GlassFish v3 is running on top of Felix by default so it can host any OSGi bundle. The question is rather how it can extend the features of GFv3. This is a nice picture to explain the additional metadata required.
• Can GlassFish run on the JRE (not the JDK)? This makes a difference for me in terms of re-distribution.
Provided you don't need to compile JSP's, GlassFish should run fine on top of the JRE, but this has not been extensively tested. Note that creating domains also requires the JDK (although that's not really runtime per say). I'll probably blog more on this, including the legal side to this (yes, you can redistribute the JDK).
• How does GlassFish manage the ClassPath when using JSR 199 (Java Compiler API) to compile JSP's?
The default JavaDoc for this API isn't really helpful. In general,
JavaCompiler.getTask(...) gives you the ability to pass a set of options, including a classpath. You may also find this testing API to be helpful in debugging compile issues. Finally, this link explains the performance benefits of using JDK 6's javac API in GlassFish. All is done dynamically now, all you need to do is use Java 6 to run GlassFish.
• Does GlassFish support distributed transactions between multiple JVMs?
Well, if you're talking about WS-Coordination and WS-AtomicTransaction, these are both implemented as part of the Metro Web Services tack which itself is part of GlassFish v2 and above. This enables distributed transactions even with .Net services.
• You claim that Grizzly has very good performance for serving both static and dynamic data. Do you have any benchmark results?
Yes. You probably want to start looking at this original post by Jean-François Arcand. It's a bit old but Grizzly and GlassFish only got better with time!
• How do you move from one version of GlassFish to another? Other products make this pretty painful.
We take compatibility very seriously. It's a company thing (think Java 1.0). With every copy of GlassFish we provide
bin/asupgrade which allows you to point to a source GlassFish domain, say GlassFish v1, and a target, say GlassFish v2. The tool will proceed to read the applications, resources, and configuration and recreate them in the target application server. You can achieve similar results with
bin/asadmin backup-domain and
bin/asadmin restore-domain within a single version of GlassFish.
• Have people started using GlassFish in production? Any more you could share?
Some people (like Wotif.com) have started in production using GlassFish v1. With the release of GlassFish v2 less than a year ago, we've seen a great level of deployments some (a fraction) of which are discussed by the users themselves on this blog: http://blogs.sun.com/stories.
• Does GlassFish suffer from the same memory leaks as Tomcat on redeploys?
We've fixed a couple of bug in GlassFish v2 which should make the redeployment of artifacts painless, including on Windows which had a tendency to lock deployed files.
So there you are, this is all the questions I could remember. If you have more, please comment here, I'll add them to the entry.