TP TUSC : Développement d`application J2EE en utilisant

TP TUSC : Développement d’application
J2EE en utilisant Lomboz & JBoss
~ Chapitre 3 ~
Dans ce chapitre, nous allons créer un EJB de type Session sans état. Cela signifie que la
session de l’EJB sera ouverte juste pendant le temps de traitement de la requête par l’EJB. Une fois
que l’EJB a répondu, la session est fermée. (idem chapitre 1, sauf que là on va l’appliquer au vrai sujet
du TP TUSC : le magasin qui vend ses produits en-ligne)
1/ Création d’un nouveau projet J2EE
Pour ceux qui n’auraient pas retenu la leçon du chapitre 1, voici toute la démarche :
- File > New > Lomboz J2EE Project
- Nom du projet : MyStore
- NEXT
- Vérifier que vous avez bien les répertoires src et bin
- NEXT
- Ajouter un module WEB qui s’appellera : OnlineStore
- Ajouter un module EJB qui s’appellera : MyStoreMgr
- Ajouter comme serveur cible : JBOSS 3.2.5
- FINISH
2/ Création de l’EJB sans état
- Clic-droit sur le répertoire src du projet MyStore > New > Lomboz EJB Creation
Wizard
- Nom du package : au.com.tusc.session
- Nom du bean : StoreAccess
- Type du bean : Stateless
- FINISH
Vous pourrez remarquer au passage, que dans le fichier qui est généré, il y a ce qu’on appelle
un tag qui sert à définir le nom de notre bean, son type et le nom qui va lui être associé dans le
JNDI. Il sert aussi à générer des descripteurs de déploiement dans certains fichiers xml, c’est à
dire qu’il génère des « bloc » de code de description des fichiers à créer pour installer l’EJB
sur un serveur.
3/ Modification du fichier xdoclet.xml pour mettre en place une
interface d’accès distant (DAO)
- Dans la section « <ejbdoclet », vérifiez que vous avez bien le tag suivant :
<dao pattern="{0}" destdir="${project.dir}/${ejbsrc.dir}"/>
NB : normalement, il se met tout seul grâce à la version de Lomboz que nous utilisons.
- Dans la section « <jboss » de la section « <ejbdoclet », il y a 3 lignes à modifier (vous ne
pouvez pas les manquer, car c’est marqué « PLEASE_MODIFY_THIS ». Voici ce qu’il
faut y mettre :
4/ Création de l’interface DAO
- Clic-droit sur le répertoire src du projet MyStore > New > Package
Nom du package : au.com.tusc.dao
- Clic-droit sur le répertoire src du projet MyStore > New > Class
Nom de la classe : StoreAccessDAOImpl
- Ajouter un tag dans le code de cette nouvelle classe pour générer son interface ensuite :
@ejb.dao class="au.com.tusc.session.StoreAccessDAO"
impl-class="au.com.tusc.dao.StoreAccessDAOImpl"
- Ensuite, ajouter StoreAccessBean au module MyStoreMgr :
Clic-droit sur StoreAccessBean du projet MyStore > Lomboz J2EE > Add EJB to
Module
- Ensuite, générer les fichiers liés à l’EJB StoreAccessBean :
Clic-droit sur le répertoire MyStoreMgr du projet > Lomboz J2EE > Generate EJB
Classes
les interfaces liées à l’EJB sont générées, y compris celle du DAO (grâce
au tag que nous avons ajouté)
5/ Ajout d’une Business Method à notre EJB
- Clic-droit sur la classe StoreAccessBean dans l’explorateur > New > Lomboz Ejb
Method Wizard
- Entête de la méthode :
public String loginUser (String username, String password)
- type de la méthode : Business
- Interface de type Remote (distante)
- FINISH
- Ajouter un tag dans StoreAccessBean afin que cet EJB puisse utiliser le DAO :
@dao.call name="loginUser"
- enfin, il faut re-générer les fichiers de MyStore :
o Clic-Droit sur le répertoire MyStore dans le répertoire MyStoreMgr >
Lomboz J2EE > Generate EJB Classes
Après avoir généré de nouveau les classes de l’EJB, vous pouvez constater que de nouvelles
fonctions ont été ajoutées StoreAccessDAO (dans le répertoire ejbsrc). Attention, vous ne devez pas
modifier ces fichiers car ils sont générés par Xdoclet et donc écrasés à chaque nouvelle génération
des fichiers. Si vous avez un problème, plutôt que de bidouiller ces fichiers pour une solution
temporaire, bidouillez les fichiers qui en sont la source (soit les JAVA, soit les XML).
6/ Implémentation de l’Interface DAO
Voici le code à mettre dans StoreAccessDAOImpl.java pour implémenter l’interface DAO :
package au.com.tusc.dao;
import au.com.tusc.session.StoreAccessDAO;
import au.com.tusc.sessionState.StoreAccessStateDAO;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class StoreAccessDAOImpl implements StoreAccessDAO, StoreAccessStateDAO{
private DataSource jdbcFactory;
public void init(){
System.out.println("Entering StoreAccessDAOImpl.init()");
InitialContext c = null;
if (this.jdbcFactory == null){
try{
c = new InitialContext();
this.jdbcFactory = (DataSource) c.lookup("java:comp/env/jdbc/DefaultDS");
}catch(Exception e){
System.out.println("Error in StoreAccessDAOImpl.init()");
}
}
System.out.println("Leaving StoreAccessDAOImpl.init()");
} //init()
public String loginUser (String username , String password){
System.out.println("Entering StoreAccessDAOImpl.loginUser()");
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String userID = null;
try{
conn = jdbcFactory.getConnection();
String QueryString = "select userid from storeaccess where username=? and password=?";
ps = conn.prepareStatement(QueryString);
ps.setString(1,username);
ps.setString(2,password);
rs = ps.executeQuery();
boolean result = rs.next();
if(result){
userID = rs.getString("userid");
System.out.println("UserID is " + userID);
}
}catch(SQLException e){
e.printStackTrace();
System.out.println("Inside StoreAccessDAOImpl.loginUser() " +e);
}
finally{
try{
rs.close();
ps.close();
conn.close();
}catch(Exception e){
}
}
System.out.println("Leaving StoreAccessDAOImpl.loginUser()");
return userID;
} //loginUser()
} // StoreAccessDAOImpl
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !