Architectures multi-niveaux

Tiers web et services métier
cours-tp ema gsi4a  - francois.pfister@mines-ales.fr

Séance 1
(25/11)
Architectures n-tiers présentation
Installation des outils - Installation du plugin Subversion
Mise en place de l'environnement - rappels servlets et jsp
Java Server Pages - Servlet TP1

Séance 2 (2/12)
Webapp + couche métier locale
Récupérer le corrigé du TP1 http://ntiers2009.googlecode.com/svn/trunk/tp1-corrige
mise en place de la couche métier (pojo)
intégration de la couche métier à récupérer sur le dépôt svn avec la couche web: TP2
mécanismes de navigation standard (CRUD)
mécanismes de validation des règles métier

Séance 3 (8/12)
De JavaBeans à EJB3
Récupérer le corrigé du TP2 http://ntiers2009.googlecode.com/svn/trunk/tp2-corrige
mise en oeuvre des ejb entité et session: TP3-EJB TP3-HSQL
travail à faire: Intégration de la couche EJB au tiers web: tp3.doc
8/12 - 15h12 - mise à jour de TP3-HSQL

Séance 4
(14/12)
Poursuite du TP
HSQL:
installer le tp tp3-hsql (checkout svn)
lancer la tache ant starthsql
Ouvrir le manager avec la tâche managedb
tester:
CREATE TABLE sample_table ( id INTEGER IDENTITY, str_col VARCHAR(256), num_col INTEGER)
INSERT INTO sample_table(str_col,num_col) VALUES('Ford', 100)
INSERT INTO sample_table(str_col,num_col) VALUES('Toyota', 200)
INSERT INTO sample_table(str_col,num_col) VALUES('Honda', 300)
INSERT INTO sample_table(str_col,num_col) VALUES('GM', 400)
select * from sample_table

EJB & SQL vs POJO:
installer le tp tp3-ejb (checkout svn)
déployer le projet sur le serveur
constater le déploiement correct dans la trace de Jboss:
10:41:57,115 INFO  [JBossASKernel] installing bean: jboss.j2ee:jar=tp3-ejb.jar,name=BankDaoImpl,service=EJB3
commenter le contenu des descripteurs suivants:
tp3-ejb\ejbModule\META-INF\persistence.xml
tp3-ejb\ejbModule\lib-ds.xml
Exécuter le client de test tp3-ejb\ejbModule\client\BankingClient.java
Tester avec l'outil d'administration HSQLDB: (rappels sql)
select * from BANK
select * from CUSTOMER, BANK where CUSTOMER.BANK_ID=BANK.ID
insert into CUSTOMER (ID,ADDRESS,NAME) values (100,'boulevard Courbet','Alphonse')
select * from CUSTOMER left outer join BANK on CUSTOMER.BANK_ID=BANK.ID
select * from CUSTOMER right outer join BANK on CUSTOMER.BANK_ID=BANK.ID

commenter le code de la classe BankingClient.java, en le comparant avec le code de test des simples javabeans (POJO)

modifier le tp2, afin de remplacer la couche métier à base de simple javabeans par des ejb:

Dans les contrôleurs, instancier les Dao comme des ejb distants:

remplacer le code des javabeans par une copie du code issu de tp3-ejb
supprimer l'implémentation des stateless session beans (BankDaoImpl et CustomerDaoImpl - ils résident sur le serveur et sont appelés à distance)

dans les servlet contrôleurs, remplacer

bankDao = new BankDaoImpl();

par

System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                "org.jnp.interfaces.NamingContextFactory");
System.setProperty(Context.PROVIDER_URL, "localhost:1099");
System.setProperty(Context.URL_PKG_PREFIXES,
                "org.jboss.naming:org.jnp.interfaces");
try {
  bankDao = (BankDao) new InitialContext().lookup("BankDaoImpl/remote");
    }
catch (NamingException e) {
            e.printStackTrace();
}

(idem pour les customer)

redéployer, tester

corrigé ici: https://ntiers2009.googlecode.com/svn/trunk/tp3-web-corrige

la page 2008: http://emagsi4a2008.blogspot.com/


Mise en oeuvre de JSF JSF 1   JSF 2
principes généraux
validateurs
changelisteners



Evaluation
Proposition, à discuter:
L'objectif global du projet "developpement N-Tiers" est d'intégrer une couche métier ejb composée des classes entité Banque, Client, Compte, ....   ainsi que des composants session sans état correspondants à une application web (JSP-Servlet, ou JSF) qui doit remplir les fonctions suivantes: pour chaque entité, navigation, création, suppression, recherche (fonctions CRUD), ainsi que validation de quelques règles de gestion: à minima, échec en cas de dépassement d'un découvert autorisé. La démarche de développement doit s'appuyer sur le codage de tests unitaires.


Divers
Installer le plugin svn dans Eclipse Galileo.
Se connecter sur le dépôt Subversion pour récupérer les corrigés de TP.

Diagramme de classes
http://fichiers.partage.free.fr/jee2008/simple-bank.gif