Cedric Dumoulin
Application Duke s Bank Spécification Application bancaire avec: client, compte et transaction bancaire Interface web Interface administration (client lourd)
Duke s Bank-Architecture Logicielle
Duke s Bank Architecture Logicielle présentation application domain
Duke s Bank Les beans session Utilisent des DTO (XxxDetails) pour passer des valuers entre l application et le client
Duke s Bank Les entités Uniquement accessible à l interieur du serveur par les sessions
Duke s Bank Les Objets de Transfert Data Transfer Object Utilisé pour transférer des infos entre l application et les clients Souvent similaire à l entité avec JPA, on peut utiliser une instance «non attaché» d une entité.
Duke s Bank Clients légers Ensemble de page web jsp Accèdent à l application par les bean Session Utilisent des DTO pour passer des grosses quantités d information en une seul fois entre le client et le serveur Les pages sont déployées sur un serveur WEB L utilisateur accède aux pages par un navigateur web
Duke s Bank Client lourd Application Java avec Swing Accède à l application par les bean Session Utilisent des DTO pour passer des grosses quantités d information en une seul fois entre le client et le serveur
Application Palindrome Spécification Application ayant une unique méthode. Cette méthode prend un mot en entrée, et retourne: Le mot lui-même si il est un palindrome Le mot concaténé avec lui même épelé a l envers si il n est pas un palindrome. On veut: Un serveur implémentant la méthode palindrome un client léger (page web) un client lourd (classe Java avec un main)
Palindrome Architecture logicielle
Palindrome Packaging palindromeclient.jar palindrome.jar palindromeweb.war
Palindrome Client lourd public static void main(string[] args) { // Setup for Apache Geronimo server with openejb Properties prop = new Properties(); prop.put(context.initial_context_factory, "org.apache.openejb.client.remoteinitialcontextfactory"); prop.put("java.naming.provider.url", "ejbd://localhost:4201"); // Get naming Context Context context = new InitialContext(prop); // Lookup the Session Bean PalindromeRemote palindrome=(palindromeremote)context.lookup("palindromebeanremote"); // Read input from console String str = ""; do { System.out.println("Give a name "); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); str = in.readline(); String res = palindrome.computepalindrome(str); System.out.println("res=" + res); } while (str.length() > 0);
Palindrome Client léger lookup ejb <%!PalindromeRemote palindrome=null;%> <% try { palindrome = (PalindromeRemote)session.getAttribute("palindrome"); if(palindrome==null) { Properties prop = new Properties(); prop.put(context.initial_context_factory, "org.apache.openejb.client.remoteinitialcontextfactory"); prop.put("java.naming.provider.url", "ejbd://localhost:4201"); Context context = new InitialContext(prop); Attention! OpenEJB! palindrome = (PalindromeRemote)context.lookup("PalindromeBeanRemote"); session.setattribute("palindrome", palindrome); } } catch (NamingException e) { e.printstacktrace(); } %>
Palindrome Client léger ejb call <% String param = request.getparameter("inputtxt"); String res = null; if( param == null ) res = "enter a text!"; else { res = palindrome.computepalindrome(param); } %> <%= param%> <-> <%= res%>
Palindrome Déploiement palindrome.jar sur un serveur EJB 3 palindromeweb.war sur un serveur WEB palindromeclient application Java A noter: le serveur WEB et le serveur EJB 3 peuvent être le même ou différent. palindrome.jar et palindromeweb.war peuvent être regroupé dans un ear
Exemple d architecture matérielle
Bibliographie The Duke s Bank Application, J2ee5 Tutorial, p1021 The order Application, J2EE6 Tutorial, p379 http://www.irisa.fr/prive/jezequel/enseignement/arc hitecture%20j2ee.pdf http://www.theserverside.com/news/1369773/free- Book-The-J2EE-Architects-Handbook