Bistro!
Alexis Moussine-Pouchkine's Weblog
public enum Topic { Java, GlassFish, Tools, Sun, InFrenchInZeText, SDPY }

20091111 mercredi novembre 11, 2009

Atmosphere jeudi, Devoxx lundi

Pas le temps de respirer, demain Jeudi Jean-François Arcand sera là au ParisJUG pour vous donner un cours de bon français et pour vous parler d'Atmosphere, le framework multi-serveur pour faire du Comet (AjaxPush). Il y sera également question de comparaison avec Servlet 3.0 (ne pas oublier de s'inscrire, il doit rester des places).

Lundi, direction Anvers pour la conférence Devoxx. J'y présente avec notre Antonio Goncalves national (enfin c'est surtout lui qui fait le gros du boulot!) une session de trois heures sur Java EE 6 (dont les JSR sont approuvées les unes après les autres ces jours-ci). Entre consolidation des slides, mise au point des démos, et ajouts de dernière minute, on n'est pas tout à fait près...

Avec servlet 3, managed beans, bean validation, etc... cette session ira clairement au delà du contenu du bouquin d'Antonio (pourtant déjà très riche). Reste la question du JSR 299 qui mérite une session à lui tout seul (difficile de ne faire qu'une intro, la technologie a un ticket d'entrée non négligeable). En tout cas je trouve la progression dans la douzaine de démos plutôt sympa (une idée d'Antonio).

Pour ce qui est du contenu GlassFish (keynote, sessions, etc...): les détails sont ici.

( nov. 11 2009, 11:24:55 AM CET ) Permalink Comments [1]

20091109 lundi novembre 09, 2009

La présentation du séminaire GlassFish

( nov. 09 2009, 03:02:00 PM CET ) Permalink Comments [0]

javax.annotation.ManagedBean

You might have hear or "managed beans" before, but chances are these will be new to you. These are not specific to JSF and not related to JMX in any way. Rather, Java EE 6 (well EJB 3.1 to be precise) specifies Managed Beans 1.0, or lightweight components.

Managed beans are plain old java objects whose life-cycle is governed by the container (allowing for creation and destruction callbacks) and supports resource injection (and of course can themselves be injected). To define a managed bean, you simply need to annotate a class with @java.annotation.ManagedBean. You can apply the existing (JSR 250) @PostConstruct and @PreDestroy annotations to methods in that bean and inject resources using @Resources (as well as with @EJB or @WebServiceRef). Here's a simple example :

@javax.annotation.ManagedBean
public class MessagesBean {
    @Resource
    TranslationBean localizer;

    @PostConstruct
    public void myInit() {
        System.out.println("*** Constructed!");
        // Do something useful
    }

    public String getTranslatedMessage(String message) {
        return localizer.translate(message);
    }
}

Such a class can then be deployed within a WAR, an EJB-JAR or an ACC-JAR and can be injected within another Managed Bean, a servlet, an EJB or a JSF Managed Bean using a simple @Resource MessagesBean bean; statement. Life-cycle and injection in itself is nice but it gets even better with interceptors which can also be applied to managed beans (no longer to just EJB's) :

@Interceptors(LogInterceptor.class)
@javax.annotation.ManagedBean
public class MessagesBean {
     ...
}

Whether Managed Beans will be used directly by application developers or mostly for building higher level abstractions such as EJB's (transactional managed beans in a sense), JAX-WS endpoints (SOAP-enabled managed beans) or JSR 299 is yet to be defined. You decide.

You can of course try all of the above in GlassFish v3.

( nov. 09 2009, 09:19:56 AM CET ) Permalink Comments [1]

20091106 vendredi novembre 06, 2009

IzPack and GlassFish v2.1.1

My friend Julien announces that IzPack 4.3.2 has just been released.
As a cherry on the cake, he also refreshed the GlassFish v2 IzPack installer to v2.1.1 which was just release a few days ago. Thanks Julien!

( nov. 06 2009, 02:42:16 PM CET ) Permalink Comments [0]

20091103 mardi novembre 03, 2009

Webinar GlassFish - aujourd'hui à 16h

La présentation en ligne GlassFish est toujours prévue pour aujourd'hui (mardi 3 novembre) à 16h00 (heure de Paris, amis francophones du monde entier vous êtes les bienvenus!). Il n'est pas trop tard pour s'inscrire.

Jérôme Dochez (l'architecte de GlassFish) et Didier Burkhalter (la cheville ouvrière de nombreux projets GlassFish en entreprise) seront là pour m'aider à répondre au question pendant et après la présentation qui sera relativement courte (environ 30 minutes). A tout à l'heure.

( nov. 03 2009, 08:26:21 AM CET ) Permalink Comments [0]

20091031 samedi octobre 31, 2009

Bug hunting and FishCAT'ing

If anything, the traffic on the "issues" GlassFish mailing list should be a hint on the stabilization work going on before v3 is declared final later this year.

At the same time the FishCAT team is also busy testing the latest releases.

( oct. 31 2009, 11:29:33 PM CET ) Permalink Comments [1]

20091029 jeudi octobre 29, 2009

GlassFish v2.1.1 est là

Je ne sais pas si c'est pour fêter la sortie de GlassFish v2.1.1, mais Oracle vient de publier des nouvelles largement rassurantes sur GlassFish dans une nouvelle FAQ sur l'avenir de plusieurs produits Sun dans l'eco-système Oracle une fois l'acquisition finalisée. Il y est entre autre question de continuer un support actif à la communauté et aux clients GlassFish ainsi que d'alignements technologiques entre GlassFish Enterprise et Weblogic. Pour qui connaît les deux offres, je pense que cela apparaîtra assez naturel.

On notera qu'aujourd'hui déjà GlassFish utilise EclipseLink (l'implémentation de référence de JPA) alors que WebLogic 10g et 11g utilisent de multiples technologies de GlassFish comme en témoigne ces pages de modifications apportées par Oracle.

Quoi qu'il en soit, comme je le disais en début de billet, c'est la version 2.1.1 qui est rendue aujourd'hui disponible en même temps que Sun GlassFish Communication Server 2.0 (Sailfin 2.0), l'offre de serveur d'application Telco (SIP, Diameter, etc...) développée avec Ericsson. En attendant la version 3 en décembre, voici donc une version pour tous les clients actuels de GlassFish qui attendent avant tout des évolutions mineures (pour eux, plus de 200 bugs corrigés ce n'est pas mineur) pour leurs systèmes en production plus que des nouveautés comme v3 en apportera. Rarement l'équipe GlassFish aura été aussi sollicitée.

GlassFish 2.1.1 est une mise à jour de la version la plus largement déployée de GlassFish en production (niveau d'API Java EE 5). On y trouve de nouvelles versions de composants importants (Java MQ 4.4 / Jersey 1.0.3 / JSF 1.2_13 / Grizzly 1.0.30 / Metro 1.1.6), le support de AIX 6 et de mod_jk ainsi qu'une nouvelle option de partage de charge (par connexion) dans l'ORB. Enfin, le méchanisme de gestion de groupe Shoal propose des améliorations des node agents pour une meilleure détection (plus rapide, plus fiable) des noeuds d'un cluster. Bien entendu cette version continue de proposer une extreme simplicité pour la mise en place d'un cluster et les outils de gestion production GlassFish Enterprise Manager.

Téléchargement de GlassFish 2.1.1 ici: https://glassfish.dev.java.net/downloads/v2.1.1-final.html et n'oubliez pas le séminaire en ligne GlassFish de la semaine prochaine.

( oct. 29 2009, 08:39:57 AM CET ) Permalink Comments [3]

20091028 mercredi octobre 28, 2009

Oracle's take on GlassFish

On don't think this will quite stop people from asking (me and others on the team) the same question, but this new FAQ from Oracle certainly has some positive information on GlassFish's future. The blogosphere and twitosphere have been quite active on that news today...

( oct. 28 2009, 11:55:28 PM CET ) Permalink Comments [2]

Séminaire en ligne GlassFish la semaine prochaine

Avec l'activité autour de GlassFish (sortie imminente de v2.1.1, v3 dans quelques semaines avec Java EE 6) et le succès du livre blanc, il nous a semblé opportun d'organiser un séminaire en ligne pour faire le point sur l'avancement du projet et pour répondre à vos questions. Ce sera donc le

Mardi le 3 novembre 2009 (dans une semaine) à 16h00

Le format est classique: 45 minutes de présentation et le reste de questions/réponses. N'oubliez pas de vous inscrire pour obtenir les détails (URL et mot de passe).

( oct. 28 2009, 09:47:46 AM CET ) Permalink Comments [1]

20091007 mercredi octobre 07, 2009

Recent GlassFish endorsements

Servlet 3.0 (JSR 315) support in Maia
How to install and use JRebel with Glassfish and Eclipse IDE
ColdFusion - Installation, deployment, and platforms
New Java-monitor probe for Glassfish users.
I think I also saw something recently on either EHCache or TerraCotta as well...

( oct. 07 2009, 03:20:06 PM CEST ) Permalink Comments [0]

Attending and presenting at Java2Days this week in Sofia

I'll be attending the Java2Days conference at the end of this week in Sofia, Bulgaria.

The conference is quite geared towards server-side Java with Spring and Java EE getting great coverage with SpringSource employees and Java EE expert group member Reza Rahman.

My first talk on Thursday is on GlassFish v3 while the second is on portability of J2EE/JavaEE applications (lessons learned while migrating customer applications to GlassFish). Should be fun!

( oct. 07 2009, 10:13:50 AM CEST ) Permalink Comments [0]

20091005 lundi octobre 05, 2009

Using the EJBContainer API with or without Maven (but with GlassFish v3)

Updated this blog on October 28th as you no longer need to have a full GlassFish install to test EJBs
The typical way to start GlassFish is to use $asadmin start-domain but you could also start it using java -jar modules/glassfish.jar. Both start a standalone instance of GlassFish. The following paragraphs discuss GlassFish Embedded (i.e. start it using an API).

There are at least two ways to start GlassFish in embedded mode: using org.glassfish.api.embedded.Server and associated classes but also using the (now standard in EJB 3.1) EJBContainer.createEJBContainer() API. Let me describe here the latter one and reserve the more general embedded case for a later blog entry.

The goal is to write something like as simple as this to test your EJB :

    EJBContainer c = EJBContainer.createEJBContainer(); // new in EJB 3.1!
    Context ic = c.getContext();
    SimpleEjb ejb = (SimpleEjb) ic.lookup("java:global/sample/SimpleEjb");
    ejb.sayHello();

EJB's found in the classpath of the running code above will automatically be deployed and made available via lookups.

Calls to EJBContainer.createEJBContainer() are likely to be made from your tests. If you're making those calls by constructing yourself the execution classpath, then you simply need to add glassfish/lib/embedded/glassfish-embedded-static-shell.jar, an empty jar with a Class-Path: listing the required jars and that is part of the GlassFish distro. In fact, if you're using recent builds of NetBeans 6.8 (and the soon-to-be-released beta), the IDE does this for you when GlassFish is the target server. If you are using Maven, it's a bit trickier.

To use EJBContainer.createEJBContainer() from Maven tests, you'll need to add the following dependency to your POM (updated to promoted b70):

     <groupId>org.glassfish.extras</groupId>
     <artifactId>glassfish-embedded-all</artifactId>
     <version>3.0-b70</version>
     <scope>test</scope>

You could restrict this to a smaller set of GlassFish artifacts but for non-trivial tests (if you use JPA for instance), you would start to have a fairly long list of dependencies so the above sounds like a reasonable thing to do. This will require Maven to download the GlassFish All-in-one JAR file (40MB or so). The reason I wrote it would be trickier with maven is that you need to pass a property during the createEJBContainer() call indicating the location of a GlassFish v3 install. The above Java code would need to read something like this:

     Map p = new HashMap();
     p.put ("org.glassfish.ejb.embedded.glassfish.installation.root",
           "/path/to/glassfish"); // include trailing "/glassfish"
     ec = EJBContainer.createEJBContainer(p);

As of build 69 (maybe 70?), this is no longer needed - i.e. you can simply have glassfish-embedded-all.jar as a dependency or simply in your classpath. A full install of GlassFish is no longer required (although it may be interesting if you want to use JDBC configurations). Read this blog by Thomas for another interesting approach: Nice follow-up blog here: http://ctpjava.blogspot.com/2009/10/unit-testing-ejbs-and-jpa-with.html

Starting the appserver this way (with or without Maven) exercises the actual GlassFish code, not another implementation or a customized fork. There are some limitations to what you can run and in particular port configuration is ignored (not listening on any) and only local EJB interfaces are available (the spec only requires EJB 3.1 lite support). On the other hand, JPA calls are very much possible.

This should all work with v3 promoted build 66 (I just tested this with promoted build 70, see above simplification). Adam Bien beat me to covering that topic, but I hope you get some additional info here. In my case the start-up, setup, deploy and shutdown of GlassFish Embedded are worth about 6 seconds. Note that there is no OSGi involved here.

For a complete working example with JPA calls, check out this sample code.
The EJB 3.1 specification has a chapter (#22) on "Embeddable Usage". Check it out for further details about EJBContainer.

( oct. 05 2009, 05:40:10 PM CEST ) Permalink Comments [5]

20090928 lundi septembre 28, 2009

"Le futur de Java" ce jeudi à l'OpenWorldForum

Ce jeudi, vous êtes conviés à venir à l'Open World Forum qui se tient à Paris (Eurosites George V dans le 8ème) et en particulier à la series de courtes sessions autour de Java.

Avec l'imminence du rachat par Oracle de Sun, un point sur Java semblait intéressant et utile. Au programme, le chemin parcouru par Java SE depuis sa mise en Open Source et les avancées prochaines de JDK7, une table ronde sur les langages dynamiques sur la JVM (Groovy, Scala, Fan, et Clojure, ou Jython, JRuby et PHP?), et enfin un point sur Java EE 6 et son implémentation de référence GlassFish v3. Notre Guillaume Laforge sera de la partie pour la table ronde.

Ce sera bref (1h30 au total), mais une occasion concrète de faire le point sur les travaux en cours et sur ce que le futur proche nous réserve.

• Programme: http://openworldforum.org/program/floss-java.
• Enregistrement, c'est ici: http://openworldforum.org/Register.

( sept. 28 2009, 09:02:24 AM CEST ) Permalink Comments [1]

20090918 vendredi septembre 18, 2009

GlassFish tip: customize directory listings

With GlassFish being a very capable HTTP server out of the bowser (thank you Grizzly!), it was time for v3 to offer the ability to configure directory listings. It is now possible to have pages listing files per NAME (default), SIZE, or LAST_MODIFIED.

Configuration can be done inside web.xml (in the form of an additional init-param to the DefaultServlet servlet called sortedBy). This would hold true for a given application and support dynamic reloading (no full redeploy, no restart to take changes into account).

You might find it more convenient to have it be part of default-web.xml (located in domains/domain1/config/). Of course that would require restarting the container. In both cases, the listing should be explicitly allowed or else the user will see a 404 Not Found error. Here's an example to configure the listing presentation in either config files :

  <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>listings</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>sortedBy</param-name>
     <param-value>LAST_MODIFIED</param-value>

    </init-param>  
    <load-on-startup>1</load-on-startup>
  </servlet>

Of course there's also the XSLT approach to have yet more control over the presentation. Check the use of localXsltFile and globalXsltFile in the default-web.xml file itself.

( sept. 18 2009, 04:03:15 AM CEST ) Permalink Comments [0]

20090917 jeudi septembre 17, 2009

Thoughts on REST-*

OK, I really need more than 140 characters for this one (plus it's been a while since I blogged opinions).
Of course, this is personal opinion, not my company's.

Many people have reacted to JBoss' solo launch of REST-*. What I'm concerned about is the approach, not the technology and specifications (I'm probably not the best person to comment on that part).

For one, having rest-star.org redirect to a jboss.org web site is a "bad thing" (tm). JBoss being the only participant is also not giving the underlying technical effort a lot of chance to become a commonly accepted standard, and that's a pity.

Over on twitter, my colleague Jason sent me this sensible analysis which also questions the approach taken while finding some merits to the technical parts.

Mighty Roy is simply bashing and swinging at the proposal calling for . But then not many people get his blessing from day one.

Rickard Oberg is pointing out that JBoss has a interesting track record in terms driving the project (too bad the last paragraph on his affiliation to JBoss is actually taking some credit off of that assertion).

Contrary to what Haikal says, JBoss is not late to REST with their very decent JAX-RS implementation and their participation in the standardization effort. In fact, I'm not convinced by the SpringSource excuse (SpringMVC legacy) for not implementing this API.

Getting beyond all this criticism, it's rare enough to have people offer to do actual work to demolish it like Anne Thomas is doing. I've been with Sun for too long to throw away the baby with the bath water..

If someone wants to contribute standards, OASIS, W3C, or IETF is where it should happen. Granted you'll be better off starting from some specification or even better yet from a successful implementation (and you may end up not being able to call it REST-anything), but declaring REST-* to the world and making it a one company thing sounds like a marketing mistake to me.

( sept. 17 2009, 11:32:29 PM CEST ) Permalink Comments [2]


GlassFish Podcast
Get GlassFish V3
Support GlassFish Enterprise

Today's Page Hits: 142




bea conference glassfish groovy ips java javaee javafx javaone javazone jug mysql netbeans openesb openoffice opensource paris performance podcast presentation sdpy spring sun swing techdays tips updatecenter v3 webservices wsit
Links