First EJBs
Il faut commencer par créer un projet Enterprise Application. C’est une des options du menu nouveau. Choisissez la version 6.0 de Java. Vous serez alors dans la perspective J2EE. Les serveurs sont disponibles dans l’onglet Runtime. Vous pouvez démarrer le serveur d’application de Sun (c’est glassfish). La console d’administration est accessible à partir d’un menu contextuel en cliquant sur le nom du serveur. Pour se connecter login:admin et mot de passe:adminadmin
Configuration de l'environnement de travail
Pour fonctionner correctement, le serveur a besoin d'être autorisé à écrire dans son répertoire. Malheureusement, l'installation actuelle ne donne pas ces autorisations et vous ne pouvez pas les changer. Nous allons donc créer et configure notre propre domaine Glassfish.
- Quitter NetBeans
- Créer un répertoire
c:\MonGlassFish - Modifier les autorisations sur le répertoire
c:\MonGlassFish(supprimer l'attribut lecture seul) - Relancer NetBeans
- Choisisser l'onglet
Service - Choisisser
Servers, puisAdd Server...(clique droit) - Saisisser
GlassFish v3.x (mon domaine), puisNextet encoreNext - Saisisser
C:\MonGlassFish\mondomain, puisNext - Conservez la configuration par défaut en glassfish 3.x
Voila vous avez configuré votre propre domaine (où Glassfish aura les autorisations nécessaires pour fonctionner correctement)
Remarque : Il faut noter que vous avez crée un répertoire local (c:\MonGlassFish) qui ne sera peut être pas accessible pour les prochaines séances de TP...
Exo 1 : calculatrice
On veut développer un service de calculatrice qui permet d’additionner, de soustraire et de multiplier deux entiers.
The EJB Creation directed by Stephane Martin Scorcese
Création du session bean
- Créez un projet Enterprise Application
- Autorisez l'injection de dépendance
- Créez un projet Java normal qui vous servira pour créer le client
- Créez aussi un projet de type Enterprise Application Client que vous ajouterez à l'Enterprise Application
- Dans le module EJB de votre projet, créez un nouveau composant EJB stateless avec une interface Remote que vous pourrez créer dans votre client.
- Le but du bean est de faire des opérations simples — add(v1,v2)-> res, sub — écrivez les méthodes métiers. Utilisez pour cela le menu qui permet d’ajouter une Business Method. Cela ajoute automatiquement la méthode dans l’interface Remote (à contrôler)
- Deploy the project (cela permet d´exploiter le composant)
- Allez avec un navigateur à l’adresse http://localhost:4848 et cherchez les informations de déploiement de votre EJB (dans les Enterprise Applications)
Création du client
On va écrire un client simple pour la calculatrice
- Utilisez le projet Java normal
- ajoutez la librairies
gf-client.jardans les librairies du projet. Ces libraires se trouvent dans le sous-répertoirelibdu répertoire où est installé le serveur d'application Glassfish la librairiegf-client.jardoit se trouver avant la librairiejavaee - Ecrivez quelques tests pour votre EJB. Utilisez les paramètres de configuration ci-dessous pour initialiser le contexte du serveur de nommage
System.setProperty( "java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory" ) ;
System.setProperty( "java.naming.factory.url.pkgs","com.sun.enterprise.naming" ) ;
System.setProperty( "java.naming.factory.state","com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl" ) ;
System.setProperty( "java.naming.provider.url","localhost" ) ;
- Avec l'autre projet d'enterprise client faites la même chose mais utilisez l'injection de dépendance pour récupérer la référence sur votre EJB (vous verrez c'est facile).
Exo 2 : Le dictionnaire
Si vous avez réussi à faire les premiers exercices, celui-ci devrait vous paraître bien plus simple... Pour les EJB, comme pour le client, vous travaillerez toujours dans les mêmes projets.
Créez un stateful session bean qui permet de créer un dictionnaire qui associe des noms à des définitions. Il fournit des méthodes permettant d’ajouter une définition, de connaître le nombre de définitions et une définition à partir d’un nom. Faites pour cela un nouveau module EJB.
- Comment représentez vous l’état de l’EJB qui implémente le dictionnaire ?
- Que se passe-t-il si vous créez un autre dictionnaire ?
- Implantez les méthodes qui doivent s’exécuter au moment de la passivation et de l’activation des SFSBs (State Full Session Bean)
- Complétez votre client pour qu’il charge le serveur jusqu’à ce que les beans s’activent et se passivent (une autre approche consiste à modifier la variable
Max Cache Sizedu serveur d'application) - Transformez votre SFSB en SLSB. Déployez et testez cette nouvelle implantation. Quelle est la différence ?


