tutorial ejb3 session stateless eclipse galileo - jboss 5.1.0

15
  Tutoriel Eclipse / Jboss Résumé Ce tutoriel correspond à Eclipse Galileo et Jboss 5.1.0. Il met en oeuvre un EJB 3.0 Session stateless, un servlet de test et un client « lourd ». Avertissement Le copier/Coller fait certes gagner du temps, il ne vous dispense de lire le contenu des classes et de comprendre ce que vous faites... Configuration de Java Il vous faudra un vrai jdk sun 6. Configuration d'Eclipse Configuration du JDK A faire si vous avez plusieurs jdk installés, sous peine d'être guetté(e) par bien des tourments... Lancer Eclipse. Cliquer sur Windows/preferences. Configurer Java : Vérifier les JRE installés. Au besoin, ajouter un jdk 6 et le choisir comme jdk par défaut. Dans java/compilers, vérifier que le niveau de compatibilité java est 1.6.

Upload: sagace1

Post on 20-Jul-2015

123 views

Category:

Documents


0 download

TRANSCRIPT

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

 Tutoriel Eclipse / Jboss

Résumé

Ce tutoriel correspond à Eclipse Galileo et Jboss 5.1.0. Il met en oeuvre un EJB3.0 Session stateless, un servlet de test et un client « lourd ».

Avertissement

Le copier/Coller fait certes gagner du temps, il ne vous dispense de lire lecontenu des classes et de comprendre ce que vous faites...

Configuration de Java Il vous faudra un vrai jdk sun 6.

Configuration d'Eclipse

Configuration du JDK 

A faire si vous avez plusieurs jdk installés, sous peine d'être guetté(e)par bien des tourments...

Lancer Eclipse. Cliquer sur Windows/preferences.

Configurer Java : Vérifier les JRE installés. Au besoin, ajouter un jdk 6 et lechoisir comme jdk par défaut.

Dans java/compilers, vérifier que le niveau de compatibilité java est 1.6.

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

A ce point, cliquez sur ok pour valider ces deux modifs, puis réouvrez la fenêtredes préférences pour vérifier que les deux modifs ont bien été prises encompte.

Configuration du serveur d'applications

Dans eclipse, cliquer sur Windows/preferences. Ajouter Jboss dans la liste desserveurs disponibles (Server/Runtime Environments : Add...).

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

N'oubliez pas de cocher « Create a new local server ».

Dans la fenêtre suivante, préciser le répertoire d'installation de jboss...

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Cliquez sur next puis finish et fermez la fenêtres des préférences en cliquantsur OK.

Dans la page principale d'eclipse, vous voyez maintenant le server jboss dansl'onglet « Servers »

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Création de l'EJB

Créez un projet de type EJB.

Indiquez le nom du projet.

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Cliquez sur Next jusqu'à la dernière fenêtre (pour s'assurer du paramétrage

complet), puis sur Finish.

Créez une interface dans ce projet.

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

puis complétez son code comme suit :

package prem.ejb;

import javax.ejb.Local;

@Localpublic interface Premier {

public String getText(String txt);}

Créez ensuite la classe de l'ejb (new class) :

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Puis complétez son code :

package prem.ejb;

import javax.ejb.Stateless;

@Statelesspublic class PremierBean implements Premier {

public String getText(String txt) {return "vous avez envoye : "+txt;

}

}

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Vous pouvez maintenant démarrer jboss (si ce n'est déjà fait) en passant parl'onglet « servers » (la première fois, l'ajouter en passant par clic droit +« new »), puis publier l'EJB (clic droit sur jboss + « Add and remove projects +glisser le projet dans la fenêtre de droite...)

Si tout se passe bien vous obtenez le message suivant dans la console dedéploiement :Buildfile:

/usr/java/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730/buildfiles/jboss323.xmldeploy.j2ee.ejb:

[jar] Building jar:/home/exbrayat/essaiAVirer/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/Premier.jar

[move] Moving 1 file to /usr/java/jboss-5.1.0.GA/server/default/deployBUILD SUCCESSFULTotal time: 10 seconds

et le message suivant dans la console jboss :

15:17:50,176 INFO [Ejb3DependenciesDeployer] Encountered deploymentAbstractVFSDeploymentContext@16420652{vfszip:/usr/java/jboss-5.1.0.GA/server/default/deploy/Premier.jar/}15:17:50,177 INFO [Ejb3DependenciesDeployer] Encountered deploymentAbstractVFSDeploymentContext@16420652{vfszip:/usr/java/jboss-5.1.0.GA/server/default/deploy/Premier.jar/}15:17:50,247 INFO [JBossASKernel] Created KernelDeployment for: Premier.jar15:17:50,248 INFO [JBossASKernel] installing bean:jboss.j2ee:jar=Premier.jar,name=PremierBean,service=EJB315:17:50,248 INFO [JBossASKernel] with dependencies:15:17:50,248 INFO [JBossASKernel] and demands:15:17:50,248 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService15:17:50,248 INFO [JBossASKernel] and supplies:15:17:50,248 INFO [JBossASKernel] jndi:PremierBean/remote15:17:50,248 INFO [JBossASKernel] jndi:PremierBean/local-prem.ejb.Premier15:17:50,248 INFO [JBossASKernel] jndi:PremierBean/local15:17:50,248 INFO [JBossASKernel] Class:prem.ejb.Premier15:17:50,249 INFO [JBossASKernel] Addedbean(jboss.j2ee:jar=Premier.jar,name=PremierBean,service=EJB3) toKernelDeployment of: Premier.jar15:17:50,249 INFO [EJB3EndpointDeployer] DeployAbstractBeanMetaData@10f0424{name=jboss.j2ee:jar=Premier.jar,name=PremierBean,service=EJB3_endpoint bean=org.jboss.ejb3.endpoint.deployers.impl.EndpointImplproperties=[container] constructor=null autowireCandidate=true}

15:17:50,347 INFO [SessionSpecContainer] Startingjboss.j2ee:jar=Premier.jar,name=PremierBean,service=EJB315:17:50,348 INFO [EJBContainer] STARTED EJB: prem.ejb.PremierBean ejbName:PremierBean15:17:50,356 INFO [JndiSessionRegistrarBase] Binding the following Entries inGlobal JNDI:

PremierBean/local - EJB3.x Default Local Business InterfacePremierBean/local-prem.ejb.Premier - EJB3.x Local Business Interface

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Création du Servlet

Créez un projet web (Dynamic web project):

Cliquer sur next jusqu'à la fin, puis finish.Dans le nouveau projet (Fenêtre Project Explorer), faire clic droit + « configurebuild path »

Ajouter le projet EJB dans l'onglet Projects du projet web :

Cliquez sur OK.

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Ajouter un servlet PremierServlet.

Puis cliquez sur « finish ».Modifiez le code comme suit :

 public class PremierServlet extends javax.servlet.http.HttpServlet implementsjavax.servlet.Servlet {  static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException {

doPost(request, response);}

protected void doPost(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out =response.getWriter();try {

Context ctx=new InitialContext();Premier prem=(Premier) ctx.lookup("PremierBean/local");out.println(prem.getText("essai"));

} catch (NamingException ne) {out.println(ne.toString());

}out.close();

}}

Déployez ensuite le projet web, puis invoquez l'urlhttp://localhost:8080/PremierWeb/PremierServlet...

5/17/2018 Tutorial EJB3 Session Stateless Eclipse Galileo - jBoss 5.1.0 - slidepdf.com

http://slidepdf.com/reader/full/tutorial-ejb3-session-stateless-eclipse-galileo-jboss-510

Création du client externe.

Nous allons maintenant utiliser un client java classique. La démarche est assezsimilaire.Commencez par modifier l'ejb en ajoutant proprement une interface remote :

 – Dans l'interface Premier, enlevez le tag « @Local ». – Créez une interface PremierLocal qui étend Premier. Placez y le tag

« @Local ».

 –Créez une interface PremierRemote qui étend Premier. Placez y le tag« @Remote ».

 – Modifiez PremierBean, qui implémente maintenant PremierLocal etPremierRemote.

Republiez tout (mieux vaut enlever les projets de jboss, puis les remettre).

Créez ensuite un projet java classique (cela vous fera passer dans laperspective « java » d'eclipse). Dans la liste des projets du « build path »,ajoutez Premier (le projet EJB). Créez ensuite une classe Java comme suit :

package prem.cli;

import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import prem.ejb.Premier;

public class Client {public static void main(String args[]) {

try {Context ctx=JBossContext.getInitialContext();Premier prem=(Premier) ctx.lookup("PremierBean/remote");

System.out.println(prem.getText("essai"));} catch (NamingException ne) {System.out.println(ne.toString());

}}

}

Créez aussi la petite classe utilitaire JBossContext pour le chargement ducontexte, comme indiqué dans le cours :

package prem.cli;

import java.util.Properties;

import javax.naming.*;

public class JBossContext {public static Context getInitialContext() throws NamingException{

Properties prop=new Properties();prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingC

ontextFactory");prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfac

es");prop.put(Context.PROVIDER_URL,"jnp://localhost:1099");return new InitialContext(prop);

}}

Lancez ensuite l'exécution de la classe Client.Attention : il est possible que le passage par la perspective java arrête leserveur jboss. A vérifer avant le test...