Archive

Articles taggués ‘EJB’

Livre: Real World Java EE Patterns

CouvertureTout commence par une présentation des changements et des nouvelles possibilités apportées par Java EE 5 (EJB 3.0, JPA 1.0…) et Java EE 6 (EJB 3.1, JSF 2.0…).

Puis l’auteur reprend un à un les Core J2EE patterns pour les mettre au goût du jour: Façade, Data Access Object, Transfert Object… Certains deviennent inutiles, d’autres sont transformés, d’autres tirent partie des nouveautés pour faire leur apparition. Les patterns concernant la couche présentation sont toutefois éludés.

J2EE 1.4 était synonyme de lourdeur et de développements rébarbatifs. Ici, toute complexité, tout code superflu est traqué, avec en ligne de mire une architecture simple et du code concis donc maintenable.

Le livre fait la part belle à la pratique en proposant une méthode de migration de J2EE 1.4 vers Java EE 5 et de nombreux exemples de code (DAO générique, connecteur JCA générique…).

Categories: Java EE, Web Services - SOA Tags: , , , ,

Journée « L’Open Source SUN à l’honneur » – suite : GlassFish v3 Prelude

GlassFish est le serveur d’applications Open Source de Sun. La version v2 de GlassFish a été lancée en avril 2008. La version Entreprise Server v3, quant à elle, est prévue pour le début 2009. Cette version (Prelude) implémente certains composants Java EE 6.

GlassFish v3 Prelude se veut modulaire (architecturé autour d’un cœur OSCGi), léger, rapide et extensible (HK2).

Grâce à la modularité, GlassFish permet de supporter d’autres langages, en plus de Java, comme JRuby on Rails, Grails, etc. Un autre résultat de la modularité est le fait de n’embarquer dans GlassFish que les technologies nécessaires pour votre développement. Par exemple, si vous ne faites pas d’EJB vous ne serez pas obligé d’embarquer dans votre serveur d’applications un container pour cette technologie.

GlassFish permet un déploiement automatique et incrémental des applications Web. En effet, grâce à la sérialisation des sessions par le serveur, les données de la session sont sauvegardées et intactes. Ce qui permet, lors des phases de test d’un use case un peu long, de reprendre son déroulement dans l’état où il était avant toute modification et redéploiement.

GlassFish offre un mode embarqué (« GlassFish embedded »). Ce mode embarqué  est un mini conteneur intégrable et pilotable via une API Java. Le serveur se compose à la demande selon les composants que vous voulez embarquer.  Le code ci-dessous montre la simplicité d’utilisation du mode embarqué.

GlassFish glassfish = new GlassFish();
glassfish.minimallyConfigure(8080);
GFApplication app = glassfish.deploy(new File("sample.war"));
...
app.undeploy();
glassfish.stop();

En conclusion, GlassFish v3 Prelude offre un avant-goût de Java EE 6. Cette version permettra de tester certains composants de Java EE 6 comme :

  • JAX-RS 1.0 pour le développement de services REST
  • EJB 3.1
  • JSF 2.0 dont les spécifications ne sont pas encore terminées
  • Servlet 3.0 prévue pour bientôt.

Un « UpdateCenter » intégré permet d’installer facilement les modules, comme par exemple les toutes dernières versions « preview » des spécifications Java EE 6. L’administration du serveur peut maintenant être pilotée en REST sur le port d’administration. Il est à noter que GlassFish est intégré aux deux IDE : NetBean et Eclipse.

Categories: Java EE Tags: , ,

Journée « L’Open Source SUN à l’honneur » : stratégie logicielle Open Source de Java à GlassFish et au-delà

Le but de ce billet est de donner un aperçu des nouveautés de Java EE 6 annoncées lors de la journée « L’Open Source SUN à l’honneur » qui s’est tenue à Paris le 12 décembre 2008.

La spécification Java EE 6 est prévue pour mi-2009.  Elle se veut résolument tournée vers la simplicité de développement.  Hormis la programmation orientée POJO grâce aux annotations, déjà présente dans JEE 5, Java EE 6 introduit la notion de profils. Un profil correspond à des sous-ensembles de spécifications répondant à un « use-case » précisément identifié, et pouvant donner lieu à une certification de compatibilité. Par exemple, le profil Web contiendrait le minimum de technologies nécessaires pour développer une application Web : Servlet 3.0, JSP 2.1, JSR-45, EL 1.2, JSTL 1.2, JSF 2.0, EJB Lite 3.1, JTA 1.1, JPA 2.0, JSR-250.  Les technologies JAX-RS 1.1 et Web Beans 1.0 sont encours de discussion.

En plus des profils, Java EE 6 introduit l’élagage (pruning) qui consiste à rendre certaines technologies optionnelles : les technologies élaguées sont rendues optionnelles dans la prochaine « release » et un état élagué est noté dans la Javadoc. Ainsi, les technologies JAX RPC, EJB Entity Bean, JAXR et JSR-88 seront élaguées, et donc probablement optionnelles dans la prochaine sortie de JavaEE 6.

La dernière nouveauté de Java EE 6 est l’extensibilité. L’extensibilité permet d’ajouter de nouveaux frameworks à son application (en déposant des fichiers jar dans un répertoire précis) sans se soucier d’apporter des modifications au fichier web.xml.

Ci-dessous est donnée une liste (non exhaustive) des nouveautés apportées à certaines technologies Java EE 6, présentées lors de la journée.

Nouveautés Servlet 3.0 :

  • Les Servlets deviennent faciles à développer grâce aux annotations. Avec les annotations, vous pouvez écrire vos Servlets sous forme de POJOs. Les annotations @Webservlet, @ServletFilter et @WebServletContextListener sont utilisées pour déclarer une Servlet, un filtre et un listener.
  • Toute classe annotée présente dans /WEB-INF/classes ou dans un jar de /WEB-INF/lib est automatiquement découverte et prise en compte. Le descripteur web.xml devient alors facultatif.
  • Le fichier de configuration web.xml devient modulaire en utilisant des fichiers fragments web-fragment.xml.
  • Une API pour un enregistrement dynamique des Servlets
  • Traitement asynchrone des Servlets (@WebServlet(asyncSupported=true)). Pour rentrer en mode asynchrone, il faut utiliser la méthode ServletRequest.startAsync(). Cette méthode renvoie un objet AsycContext qui permet de contrôler le mode asynchrone.
@WebServlet(urlMappings="/foo")
public class MyServlet extends HttpServlet {
     @Get
     public void handleGet(HttpServletRequest request, HttpServletResponse response) {
                ....
     }
}

Nouveautés EJB3.1 :

  • Il n’est plus nécessaire d’implémenter une interface locale pour écrire des Sessions Beans.
  • L’ajout d’un Singleton Bean qui correspond bien évidemment au classique Design Pattern Singleton dans un conteneur.
  • Une nouvelle annotation fait son apparition : @Schedule. Avec cette annotation, il est maintenant possible d’activer un scheduler similaire à la Crontab sous Unix.
  • Les méthodes des Sessions Beans peuvent désormais être appelées de façon asynchrone en utilisant l’annotation @Asynchronous. Lorsqu’un client appelle une méthode asynchrone, le container redonne aussitôt la main au client et continue l’appel de cette méthode asynchrone dans un autre thread.
  • Pour faciliter le déploiement, il est maintenant possible de déployer des composants EJB 3.1 dans une archive WAR. On peut désormais appeler des EJB directement dans un container de Servlets comme Tomcat. Tout tient dans une archive WAR.
  • Un nom JNDI global pour accéder aux Beans (Par exemple, java:global/com/od/HelloWorld).
  • Introduction de la notion EJB embarqué: il est possible de déclarer et de lancer programatiquement un conteneur EJB léger. Cela rend possible l’utilisation des EJB dans n’importe quel environnement («EJBs everywhere!»), par exemple lors des tests unitaires.

Nouveautés  JPA 2.0 :

  • JPA 2.0 est désormais doté de l’API Criteria, inspirée d’Hibernate.
  • Il est possible de mapper des collections d’éléments simples (List<String>, par exemple) à l’aide de l’annotation «CollectionOfElements».
  • La sauvegarde d’un ordre de tri en base, avec @OrderedBy(« lastLoginDate ») et @OrderColumn(« loginOrder »). JPA crée automatiquement une colonne supplémentaire en base pour conserver cet ordre.
Categories: Java EE Tags: , ,