Déployer une application JDeveloper sur JBoss

Vous trouverez ci-dessous quelques notes pour répondre à une question qu’on m’a posée récemment : « Comment déployer une application EJB3 sur JBoss lorsqu’on développe avec JDeveloper ? »

Etape 1 – Installer JBoss 4.0.5 avec le support d’EJB3
Dans l’installation réalisée, JBoss inclut EJB3 et JPA (l’implémentation d’Hibernate et pas celle de Toplink…).

Pour installer JBoss, on peut lancer l' »Installer » depuis un navigateur Web grâce à JemsInstaller lancé directement grâce à une version JLNP. Pour faciliter l’installation, commencez par installer le JDK 5.0. Vous pouvez le télécharger sur le site de Sun à l’URL qui suit http://java.sun.com/javase/downloads/index_jdk5.jsp

Pour ce qui suit, JBoss 4.0.5 a été installé sur Windows grâce à JemsInstaller 1.2 RC1. Pour cela lancer le en cliquant simplement sur le lien correspondant dans la page ci-après : http://labs.jboss.com/portal/jemsinstaller/downloads.

1°) Sélectionnez d’abord la langue d’installation comme dans la copie d’écran ci-dessous.

2°) Passez la page d’accueil de JEMSInstaller
3°) Passez la page de Release Notes
4°) Acceptez la licence de JBoss
5°) Sélectionnez un répertoire pour l’installation de JBoss 4.0.5
6°) Sélectionnez l’option d’installation de JBoss 4.0.5 qui inclut les EJB3 comme indiqué dans la copie d’acran ci-dessous.

7°) Gardez l’ensemble des packages sélectionnés à installer
8°) Gardez le nom de l’application par défaut (default)
9°) Créez une source de données.
9a°) Sélectionnez le bouton radio « Configure ».
9b°) Sélectionnez « Oracle » comme base de données
10°) Donnez un nom à votre DataSource par défaut et paramétrer la configuration de cette source comme dans l’exemple ci-dessous.

11°) Dans les écrans suivants, laissez les options par défaut et donnez un mot de passe pour l’administrateur de JBoss (e.g. admin/admin)
12°) Terminez l’installation.

Une fois l’installation terminée, copier les bibliothèques JDBC d’Oracle (le fichier ojdbc10.jar) dans le répertoire %JBOSS%serverdefaultlib. Vous pouvez modifier les sources de données dans le fichier %JBOSS%serverdefaultdeployjboss-ds.xml.

Etape 2 – Démarrer JBoss 4.0.5

Pour démarrer JBoss, il suffit d’utiliser une fenêtre de commande Windows et de lancer les scripts comme ci-dessous.
1°) Positionnez la variable JAVA_HOME et faîtes la pointer vers le JDK 5.0, comme dans l’exemple ci-dessous :
set JAVA_HOME=D:u01oracleproductjdeveloperjdk
2°) Positionnez la variable PATH pour prendre en compte JAVA_HOME comme ci-dessous :
set PATH=%JAVA_HOME%bin;%PATH%
3°) Naviguez dans le répertoire « bin » de JBoss
set JBOSS_HOME=D:u01oracleproductjboss-4.0.5
cd %JBOSS_HOME%bin
4°) Démarrez JBoss avec la commande run.bat
run

Etape 3 – Développer un EJB Session très simple et Créer un EJB-JAR

Avec JDeveloper 10.1.3.1.0, développez un EJB session stateless est très simple. Une fois un projet créé, lancez l’assistant de création d’un EJB :
1°) Sélectionnez « File | New… | (Filter By : All Technologies) Business Tiers | EJB | Session Bean (EJB 1.1/2.x/3.0) » pour lancer l’assistant de créatin d’un EJB 3.0
2°) Remplissez les écran de l’assistant comme, par exemple dans ce qui suit

  • Passez l’écran de bienvenue
  • Sélectionnez le bouton radio « Enterprise Javabeans 3.0 (J2EE 5.0) » et cliquez sur le bouton « Suivant »
  • Donnez un nom à l’EJB (e.g. SessionEJB), sélectionnez « Session Type – Stateless » et « Transaction Type – Container ». Cliquez sur le bouton « Suivant »
  • Donnez le nom « SessionEJBBean » à l’EJB (pour un test, inutile d’utiliser un package. Cliquez sur le bouton « Suivant »
  • Sélectionnez la création d’une interface « Remote » qui aura pour nom SessionEJB et « Locale » qui aura pour nom SessionEJBLocal. Cliquez sur le bouton « Suivant »
  • Cliquez sur « Fin » pour générer l’EJB

3°) Une fois l’EJB créé, Sélectionnez-le dans l' »Application Navigator » en double cliquant sur l’EJB. Le code source s’affiche et, si vous utilisez le panneau Structure avec le menu « View | Structure », par exemple, vous verrez sous le dossier « Source » le fichier qui implémente l’EJB ainsi que les 2 fichiers d’interface « remote » et « local ».
4°) Ajoutez une méthode à l’implémentation de l’EJB. Voici, ci-dessous, un exemple de méthode que vous pouvez ajouter à SessionEJBBean
public String getStatus () {
return « OK »;
}
5°) Ajoutez les spécifications de la méthode aux interfaces remote SessionEJB.java et locale SessionEJBLocal.java
public String getStatus ();

Créez ensuite un profil de déploiement de type EJB-JAR pour le déployer sur JBoss :
1°) Sélectionnez « File | New… | (Filter By : All Technologies) General | Deployment Profiles | EJB JAR File »
2°) Donnez un nom au profil de déploiement, par exemple « arkzoyd »
3°) Laissez l’ensemble des options par défaut comme dans la copie d’écran ci-dessous et cliquez sur « OK »

Etape 4 – Créer une connexion vers JBoss depuis déployez l’application depuis JDeveloper

Pour créer une connexion à JBoss sur JDeveloper, cela suppose que JBoss fonctionne sur la même machine. Si ce n’est pas le cas, il suffira de copier l’EAR généré dans le répertoire de déploiement de JBoss. Voici comment créer une connexion vers JBoss sur la même machine.
1°) Sélectionnez le « Connection Navigator » et sélectionnez le menu « File | New… | General | Connections | Application Server Connection »
2°) Remplissez l’assistant de connexion à un serveur d’applications avec les options ci-dessous

  • Donnez un nom (e.g. jboss) à la connexion et indiquez dans la liste déroulante qu’il s’agit d’une connexion de type « JBoss 4.0.x »
  • Définissez le répertoire de déploiement de JBoss, c’est à dire le sous-répertoire « serverdefaultdeploy » du répertoire d’installation de JBoss, e.g. « D:u01oracleproductjboss-4.0.5 ».
  • Cliquez sur le bouton « Fin » pour créer la connexion à JBoss

Pour déployer l’application, Sélectionnez le descripteur de déploiement (arkzoyd.deploy) créé dans l’étape précédente. Utilisez le menu contextuel à l’aide du bouton droit de la souris sur le descripteur de déploiement et sélectionnez « Deploy to -> (nom du profil créé précédemment, e.g. jboss) ». Le fait que le fichier EAR est déployé s’affiche dans la console JBoss comme sur la copie d’écran ci-dessous :


Etape 5 – Valider que l’EJB est bien enregistré dans l’arbre JNDI de JBoss

1°) Lancez la console JMX de JBoss en sélectionnant l’URL par défaut de la console : http://:/jmx-console et indiquez les nom d’utilisateur et mots de passe de l’administrateur JBoss (e.g. admin/admin).
2°) Sélectionnez ensuite le lien « service=JNDIView » dans le menu jboss
3°) Dans la section « List Of MBean Operations », « Output JNDI info as text », sélectionnez le paramètre verbose à « True » et cliquez sur le bouton « Invoke »
4°) La section « Global JNDI Namespace » indique qu’un EJB SessionEJB est disponible avec la chaîne « arkzoyd/SessionEJB » comme ci-dessous

S

Etape 6 – Créez un client Java de l’EJB

1°) Créez un nouveau projet nommé « client » dans le même « workspace ».
2°) Sélectionnez l’EJB « SessionEJBBean » dans le projet et avec le bouton droit de la souris, ouvrez le menu contextuel et cliquez sur le menu « New Sample Java Client… »
3°) Paramétrez les champs de l’assistant :

  • choisissez le projet « client.jpr »
  • donnez un nom au client de l’EJB (e.g. SessionEJBClient)
  • Sélectionnez « Connect to Remote app Server » et sélectionnez l’application « arkzoyd »
  • Sélectionnez « Use ApplicationClientInitialContextFactory for EJB lookup »
  • Cliquez sur « OK »

4°) Modifiez le code généré dans le client comme indiqué ci-dessous :

  • Créez un objet Properties et alimentez les variables ci-dessous
    • Context.INITIAL_CONTEXT_FACTORY et positionnez la valeur « org.jnp.interfaces.NamingContextFactory »
    • Context.URL_PKG_PREFIXES et positionnez la valeur « org.jboss.naming:org.jnp.interfaces »
    • Context.PROVIDER_URL et positionnez la connexion à JBoss. Attention, cette valeur doit prendre en compte le nom de votre machine et le paramétrage de JBoss. Par exemple sur mon serveur la connexion est « jnp://aofr12992:1099″
  • Ajoutez l’instance de properties créée précédemment pour créer le context initial du client :
    • final Context context = new InitialContext(p);
  • Recherchez la ressouce JNDI « arkzoyd/SessionEJB/remote »pour accéder à l’EJB à distance à l’aide de la commande :
    • SessionEJB sessionEJB = (SessionEJB)context.lookup(« arkzoyd/SessionEJB/remote »);

La méthode « main » du client est donc au final le suivant :

public static void main(String [] args) { try { Properties p=new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, « org.jnp.interfaces.NamingContextFactory »); p.put(Context.URL_PKG_PREFIXES, « org.jboss.naming:org.jnp.interfaces »); p.put(Context.PROVIDER_URL, »jnp://aofr12992:1099″); final Context context = new InitialContext(p); SessionEJB sessionEJB = (SessionEJB)context.lookup(« arkzoyd/SessionEJB/remote »); // Call any of the Remote methods below to access the EJB System.out.println( sessionEJB.getStatus( ) ); } catch (Exception ex) { ex.printStackTrace(); }
}


Etape 7 – Appeler l’EJB inclut dans JBoss depuis le client créé précédemment

Avant d’utilisez le client, il faut inclure les JAR suivants dans le CLASSPATH du client :

  • jbossall-client.jar
  • jboss-aop-jdk50-client.jar
  • jboss-aspect-jdk50-client.jar
  • jboss-ejb3-client.jar

Ces fichiers sont situés dans le répertoire « client » de JBoss.

Pour mettre les 4 fichiers précédents dans le CLASSPATH, créez une librairie « JBossEJB3 » à partir du menu « Tools | Manage Librairies… » puis ajoutez les 4 fichiers JAR dans le Classpath de la librairie. Vous trouverez ci-dessous une copie d’écran de la librairie Java créée.

Avant de lancer le programme client, modifiez les librairies associées au projet en uilisant le menu contextuel sur le projet « Client » grâce au clic droit de la souris. Sélectionnez le menu « Project Properties… ». Mettez à jour les librairies du projet client comme dans la copie d’écran ci-dessous :

Pour terminer le test, exécutez le client SessionEJBClient depuis JDeveloper avec le menu contextuel. Si tout fonctionne correctement, la console doit afficher le mot « OK » renvoyé par l’EJB Session exécuté par JBoss.

(1) Biensûr, le fait que OC4J soit complètement piloté par JDeveloper apporte d’autres fonctions qui facilitent le développement et les différents types de tests. (2) Vous pouvez récupérer le code source des 2 exemples, l’EJB et le client dans le workspace Jdeveloper 10.1.3.1.0 à l’URL suivante (Pour le faire fonctionner, modifiez dans le projet client l’URL de connection à JBoss et Ajoutez les fichiers JAR qui permettent au clients d’accéder à JBoss à distance). Quoiqu’il en soit, même ce qui précède est une illustration simple. L’intérêt de Java y trouve une illustration puisque l’intéropérabilité est évidente.

GarK!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *