EJB 3.1, on y arrive !

Cela va mainteant faire 4 jours que GlassFish v3 prelude est sorti. Pour accompagner sa sortie, une vingtaine de présentations ont été faites sur GlassFish (via la chaine TheAquarium, sur Ustream.TV), mais aussi sur Java EE 6 et NetBeans 6.5.

Je viens d'en regarder quelques unes, et celle qui a le plus retenu mon attention est sans aucun doute la présentation des EJB 3.1, qui vient avec son lot d'améliorations et de nouvelles fonctionnalités qui méritent de s'y attarder :-)

On retrouve parmis ces fonctionnalités :
  • Les singletons
  • Une meilleure gestion des timers
  • Les noms JNDI globaux
  • Les Session Beans "sans interface"

Les singletons

Les singletons sont des beans qui ont la particularité de n'être instanciés qu'une seule et unique fois tout au long de la vie de notre application. Cette instance sera ensuite partagée entre les différents clients l'utilisant.

@Singleton
public class MySingleton {

    private int sharedValue;

    public int getSharedValue() {
        return (sharedValue);
    }

}

Dans cet exemple de code, notre bean MySingleton sera instancié une seule et unique fois, et chaque appel de méthode fera appel à la même instance, ce qui nous permettra, par exemple, de partager des données (comme la variable sharedValue de notre exemple).

Une meilleure gestion des timers

EJB 3.1 introduit également une nouvelle gestion des timers, qui se rapproche de la gestions des crons Unix : on peut spécifier des tâches à exécuter de manière très précise. Ces timers seront alors automatiquement créés et démarrés.

Voici un exemple, lançant une tâche tous les jours à 8 heures :
@Stateless
public class MyBean implements MyInterface {

    @Schedule(hour="8")
    void myTask() {
    }

}

Les noms JNDI globaux

Il s'agit sûrement d'une des plus grosses lacunes de la spécification EJB 3 qui se trouve ici comblée : l'absence de standardisation des noms JNDI associés aux Session Bean, ce qui entraînait des pertes de portabilité entre les différents serveurs d'application.

Par exemple, sous GlassFish, le nom par défaut d'un Session Bean est le nom complet de l'interface métier de notre bean (com.aperigeek.ejb.MyInterface). Sous JBoss, le nom est <nom du jar>/<nom du bean>/<visibilité>, ce qui donnerais par exemple aperigeek/MyBean/remote. Les noms sont donc très dépendants du serveur d'application.

La nouvelle spécification EJB 3.1 spécifie des noms standards à respecter lors du binding des beans : java:global[/<app-name>]/<module-name>/<ejb-name>, ce qui pourrait donner : java:global/aperigeek/aperigeek-ejb/MyBean. Cette fonctionnalité permet d'assurer la portabilité d'une application entre différents serveurs d'applications.

Les Session Beans "sans interface"

Dernière fonctionnalité dans la série des simplifications de la spécification : la possibilité de définir un Session Bean dans une seule classe, sans passer par une interface métier exposant les différentes méthodes.

@Stateless
public class MyBean {

    public void myMethod() {
    }

}

Dans ce cas de figure, toutes les méthodes publiques deviennent visibles.
@Stateless
public class MyOtherBean {

    @EJB
    private MyBean myBean;

    public void myOtherMethod() {
        myBean.myMethod();
    }

}



La nouvelle version des EJB, la version 3.1, apporte encore quelques améliorations à la version 3.0. L'optique de cette nouvelle version reste essentiellement la même : simplifier l'utilisation des EJBs. On retrouve quand même quelques nouvelles fonctionnalités intéressantes, comme les singletons ou les timers.

Toutes ces nouvelles fonctionnalités sont d'ores et déjà testables grâce à GlassFish v3 prelude, qui sert d'implémentation de référence à cette spécification.

Permalink  |  Commentaires (0)

Rédaction estivale

Une fois n'est pas coutume, je vais parler de moi.

Comme ceux qui me suivent fréquemment ont pu le constater, mon rythme de rédaction s'est énormément ralenti ces derniers temps, principalement depuis le début du mois de juin. Je vais essayer d'en expliquer les raisons et de rassurer certains de mes lecteurs pour la suite. La raison pour laquelle je ne blogue plus beaucoup ces derniers temps est presque évidente.

C'est la fin de l'année scolaire

Les étudiants sont partis en stage, alors que le mien ne commence que début août. Je suis en quelque sorte en vacances. Mon blog est nourri principalement d'échanges avec les gens que je côtoie tous les jours à SUPINFO, avec les élèves. Depuis la fin du mois de juin, le nombre de personnes avec lesquelles je discute "Java" à fortement diminué. D'où une baisse des questions qui nécessitent une réponse. D'où une baisse du nombre d'articles sur ce blog.

Mon stage commence précisément le 4 août. Mon rôle sera de préparer les PEFF (Peut-être futurs formateurs, comme dirait Mauricio) afin qu'ils soient capables de dispenser des cours dès le mois d'octobre. Ce "stage" s'est révélé très intéressant l'an dernier, notamment grâce à une intervention de Alexis Moussine-Pouchkine sur GlassFish. J'espère que celui de cette année le sera tout autant. Entouré de geeks du Java, de geeks tout court, j'espère pouvoir reprendre mes échanges sur le monde Java, pouvoir reprendre plus activement la rédaction de ce blog.


En attendant le début du mois d'août, d'ici deux semaines, je ne bloguerais quasiment pas. Pour ceux qui cherchent désespérément de la lecture, je peux vous conseiller pour l'été :

Permalink  |  Commentaires (0)

Changement de serveur

Si vous lisez ces quelques lignes, c'est que je ne me serais planté nulle part. Ou du moins que mes erreurs ne sont pas critiques.

La résiliation de l'abonnement Internet étant en cours, mon blog, qui était jusqu'à présent hébergé chez moi, avait devant lui des jours qui lui étaient comptés.

C'est pour cela que j'ai migré mon installation de Roller vers un nouveau serveur, loué pour l'été (voire plus...) chez OVH (un Kimsufi, qui me suffit pour l'instant).

A première vue tout marche, j'essayerais de réparer les éventuels défauts dans les jours à venir... En attendant, bonne lecture :)

Permalink  |  Commentaires (0)

Nouveau thème pour mon blog

Et oui Keitboor, Matt t'a dénoncé ! Il m'a avoué ce que tu pensais de mon ancien thème. Et je te l'accorde, il n'était pas très esthétique.

Mais maintenant, ce n'est plus le cas !

J'ai décidé d'abandonner Basic, le thème par défaut de Roller, et d'en utiliser un plus frais, unqualified, un des nombreux thèmes proposés par freeCSStemplates.org.

En espérant qu'il vous plaise à vous aussi (vous, mes quelques lecteurs).

Permalink  |  Commentaires (1)

Ouverture de mon blog

Et voilà.

Ça devait bien arriver un jour où l'autre... Mon blog est ouvert. Je vais moi aussi essayer de contribuer à l'immensité d'Internet, de rajouter quelques kilo-octets dans les caches de Google.

Mais il y a une question que ceux qui me connaissent doivent se poser :

Pourquoi aujourd'hui ?

Pourquoi aujourd'hui et pas un autre jour ? Qu'est ce qui à fait, dans ma vie, pour que j'ouvre mon blog aujourd'hui ?

En effet, aujourd'hui est un jour plutôt commun. Il ne s'est rien passé, apparement, pour que je me décide à "bloguer".

Mais il y a bien eu un évènement. Et oui, Matt est arrivé derrière moi en regardant mon écran. Comme la plupart du temps ces derniers jours, j'étais en train de coder pour Roller (une plate-forme de blog écrite en Java), et je faisais quelques tests sur un "viv's blog" virtuel. Et j'ai eu droit à la réflexion suivante :
Quoi, y a un viv's blog et je suis pas au courant ? Mais LOL.
Matt

Aussitôt dit, aussitôt fait. Un viv's blog est monté (vous êtes en train de le lire), et Matt n'est toujours pas au courant. Je me demande dans combien de temps il l'apprendra :)

Permalink  |  Commentaires (0)