ECL IP’S Software                                              OpenROAD – Serveur                                         ...
Plate forme utilisée pour le POC          Serveur Linux                         Kernel 2.6.9-67.0 (RedHat)          Bas...
Démo                                                                                               Portable               ...
Architecture du POC                                                                                 JoNAS Application Serv...
Architecture Projet EJB : kerosene_java               Package ker_ligne_devis_t                        ker_ligne_devis_t...
ker_ligne_devis_tEJB          Implémentation                        public static Vector loadEdBud          Connexion à...
ker_ligne_devis_tHome          Role                        Permet de réaliser les appels de l’EJB          Tous les ser...
Implémentation                                                                             JDBC                           ...
Implementation OpenROAD (1) Édition permettant de visualiser le budget par ressource Application Kérosène  Copyright ECL...
Implementation OpenROAD (2)Copyright ECL IP’S Software & Services - 1998-2008   Présentation ECL IP’S Software
Classe OR : cls_k_ligne_devis_t          Rassemble toutes les méthodes de chargement                        Implémentati...
Implémentation classique OR>DB                                                                                            ...
Implémentation Browser intégré (1)                                                                             Utilisatio...
Implémentation Browser intégré (2)     Utilisation du servlet WebLoadEdBudCopyright ECL IP’S Software & Services - 1998-2...
Implémentation Browser intégré (3)     Utilisation du servlet WebLoadEdBud dans un navigateurCopyright ECL IP’S Software ...
Implémentation Browser intégré (4)     Utilisation du JSP loadedbud.jspCopyright ECL IP’S Software & Services - 1998-2008...
Implémentation Browser intégré (5)     Utilisation du JSP loadedbud.jsp dans un navigateurCopyright ECL IP’S Software & S...
Implémentation Browser intégré (6)              Attention à la gestion des erreursCopyright ECL IP’S Software & Services -...
Implémentation via raw HTTP (1)                                                                               cls_k_ligned...
Implémentation via raw HTTP (2)     Utilisation du JSP ORLoadEdBud.jsp dans un navigateurCopyright ECL IP’S Software & Se...
Implémentation via raw HTTP (3)     Extrait du Code de la classe cls_k_ligne_devis_t methode load_ed_bud_rawhttp        m...
Implémentation via Xml (1)                                                                               cls_k_lignedevis_...
Implémentation via Xml (2)     Utilisation du servlet XmlLoadEdBud dans un navigateur -> Xml OutputCopyright ECL IP’S Sof...
Implémentation via Xml (3)         Extrait du Code de la classe cls_k_ligne_devis_t methode load_ed_bud_xmlmethod load_ed...
Implémentation via JNI (1)                                                                                                ...
Implémentation via JNI (2)         Extrait du Code de la classe cls_k_ligne_devis_t methode load_ed_bud_jnimethod load_ed...
Implémentation via JNI (3)        Extrait du Code de la dllDLLIMPORT int p3_loadedbud (ah)long ah;{         int i,j;     ...
Conclusions (1)                     POC réussi                     Plusieurs solutions possibles                     Solut...
Conclusions (2)                     JNI possible pour les traitements complexes                       Pas de modification ...
Copyright ECL IP’S Software & Services - 1998-2008   Présentation ECL IP’S Software
Upcoming SlideShare
Loading in...5
×

Ecl J2ee Igc2

270

Published on

OpenROAD – Serveur d’Application Plateforme J2EE

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
270
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ecl J2ee Igc2

  1. 1. ECL IP’S Software OpenROAD – Serveur Présentation SOLUCOM d’Application Plateforme J2EECopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  2. 2. Plate forme utilisée pour le POC  Serveur Linux  Kernel 2.6.9-67.0 (RedHat)  Base de données  Ingres 2006 Release 3 Linux Version II 9.2.0 (int.lnx/118)NPTL  Serveur d’application J2EE  JONAS Application Server 4.8.6  Client OpenROAD  OpenROAD 4.1  Développement Java  Eclipse 3.2Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  3. 3. Démo Portable Virtual Machine Serveur Linux Clients riches Ingres SGBD JOnAS AS Clients légersCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  4. 4. Architecture du POC JoNAS Application Server Web Container EJB Container Web components Entreprise Java Beans - JSPs - ServletsOpenROAD Client Databases kerosene_java.ear Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  5. 5. Architecture Projet EJB : kerosene_java  Package ker_ligne_devis_t  ker_ligne_devis_t : Interface Distante  ker_ligne_devis_tEJB : StateLess Session bean  ker_ligne_devis_tHome : Home Interface pour le bean ker_ligne_devis_t  Classes  ker_ligne_devis : Identique en déclaration à la classe OR  Servlets  WebLoadEdBud : Génération des résultats en HTML  XmlLoadEdBud : Générationdes résultats en XML  JSPs  loadedbud.jsp : Génération des résultats en HTML  ORLoadEdBud.jsp : Génération des résultats en raw HTTPCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  6. 6. ker_ligne_devis_tEJB  Implémentation  public static Vector loadEdBud  Connexion à la base de données  Via JDBC  Construction de la requête  PrepareStatement  Execution de la requête  executeQuery  Stockage des données issues de la requête  Dans un vecteurCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  7. 7. ker_ligne_devis_tHome  Role  Permet de réaliser les appels de l’EJB  Tous les servlets et JSP utilisent cette interface  Un bean est créé à partir de cette interface  Ce bean lance la méthode loadEdBud  Le vecteur est traité dans le servlet ou le jsp utilisant ce beanCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  8. 8. Implémentation JDBC ker_ligne_devis_tHome Ingres 2006 r3 Base kero_bossCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  9. 9. Implementation OpenROAD (1) Édition permettant de visualiser le budget par ressource Application Kérosène Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  10. 10. Implementation OpenROAD (2)Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  11. 11. Classe OR : cls_k_ligne_devis_t  Rassemble toutes les méthodes de chargement  Implémentation classique – load_ed_bud()  Implémentation via Xml – load_ed_bud_xml()  Implémentation via raw http – load_ed_bud_rawhttp()  Implémentation JNI – load_ed_bud_jni()  Les appels pour les pages html sont fait directement dans l’écranCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  12. 12. Implémentation classique OR>DB load_ed_bud() cls_k_lignedevis_tres.load_ed_bud(flgfc=cs_ker_cout_direct,i=byref(ind),nocommit=false,typedit=typedit,natedit=natedit); Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  13. 13. Implémentation Browser intégré (1)  Utilisation des JSP et Servlet générant un flux HTML Webbrowser.navigate(url) HTML Vector EJBsres.browser.navigate(web.url); Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  14. 14. Implémentation Browser intégré (2) Utilisation du servlet WebLoadEdBudCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  15. 15. Implémentation Browser intégré (3) Utilisation du servlet WebLoadEdBud dans un navigateurCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  16. 16. Implémentation Browser intégré (4) Utilisation du JSP loadedbud.jspCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  17. 17. Implémentation Browser intégré (5) Utilisation du JSP loadedbud.jsp dans un navigateurCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  18. 18. Implémentation Browser intégré (6) Attention à la gestion des erreursCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  19. 19. Implémentation via raw HTTP (1) cls_k_lignedevis_t External Library Class Microsoft XMLHTTP Vector EJBsurl=http://192.168.0.6:9000/kerosene_java/ORLoadEdBud.jsp?cdentite=+g_etude.cdentite+&cdetude=+g_etude.cdetude+&cdsel=+varchar(g_etude.cdsel)+&flgfc=+varchar(cs_ker_coures.load_ed_bud_rawhttp(url=url); Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  20. 20. Implémentation via raw HTTP (2) Utilisation du JSP ORLoadEdBud.jsp dans un navigateurCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  21. 21. Implémentation via raw HTTP (3) Extrait du Code de la classe cls_k_ligne_devis_t methode load_ed_bud_rawhttp method load_ed_bud_rawhttp(url=varchar(2000) not null) = declare i=integer not null;j=integer not null; tok=u_token_str_t;resp=u_token_str_t; str=stringobject;resp_str=stringobject; xm=xml!xmlhttp; External library class MSXMLHTTP tmp=stringobject; { xm.open(GET,url,false); xm.send(); Construction, Appel, stockage du retour dans un stringobject resp_str=xm.responseText; resp.explode(l=resp_str,token=hc_newline); for i=1 to resp.t.lastrow do tmp.value=resp.t[i].token; tok._clear(); tok.explode(l=tmp,token=;); if(tok.t.lastrow!=10)then continue; endif; Transformation j=j+1; :$c.t[j].flgfc=int4(tok.t[1].token); :$c.t[j].cdres=tok.t[2].token; :$c.t[j].cdrubnt=tok.t[3].token; … endfor; }Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  22. 22. Implémentation via Xml (1) cls_k_lignedevis_t ExtLib MSXmlHttp XML Vector XML External Library Class EJBs Microsoft XMLHTTPurl=http://192.168.0.6:9000/kerosene_java/XmlLoadEdBud.jsp?cdentite=+g_etude.cdentite+&cdetude=+g_etude.cdetude+&cdsel=+varchar(g_etude.cdsel)+&flgfc=+varchar(cs_ker_cores.load_ed_bud_xml(url=url); Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  23. 23. Implémentation via Xml (2) Utilisation du servlet XmlLoadEdBud dans un navigateur -> Xml OutputCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  24. 24. Implémentation via Xml (3)  Extrait du Code de la classe cls_k_ligne_devis_t methode load_ed_bud_xmlmethod load_ed_bud_xml(url=varchar(2000) not null)=declarexm=xml!xmlhttp;nodelist = ixmldomnodelist default null;dxml=xml!domdocument; External library class MSXMLHTTPi=integer not null;j=integer not null;k=integer not null;resp_str=stringobject;{ xm.open(GET,url,false); xm.send(); Construction, Appel, stockage du retour dans un stringobject puis dans object xml resp_str=xm.responseText; dxml.loadXML(resp_str); Traitement du flux XML k=dxml.selectnodes(/records/record).length; nodelist=dxml.selectnodes(//records/record); for i=0 to k-1 do j=j+1; :$c.t[j].flgfc=int4(nodelist.item(i).SelectSingleNode(flgfc).text); :$c.t[j].cdres=nodelist.item(i).SelectSingleNode(cdres).text; :$c.t[j].cdrubnt=nodelist.item(i).SelectSingleNode(cdrubnt).text; :$c.t[j].lbres=nodelist.item(i).SelectSingleNode(lbres).text; Affectation :$c.t[j].cduo=nodelist.item(i).SelectSingleNode(cduo).text; :$c.t[j].qtres=float8(nodelist.item(i).SelectSingleNode(qtres).text); :$c.t[j].mtres=float8(nodelist.item(i).SelectSingleNode(mtres).text); :$c.t[j].mttotal=float8(nodelist.item(i).SelectSingleNode(mttotal).text); endfor;} Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  25. 25. Implémentation via JNI (1) JNI/DLL cls_k_lignedevis_t Vector EJBsurl=http://192.168.0.6:9000/kerosene_java/XmlLoadEdBud.jsp?cdentite=+g_etude.cdentite+&cdetude=+g_etude.cdetude+&cdsel=+varchar(g_etude.cdsel)+&flgfc=+varchar(cs_ker_cores.load_ed_bud_xml(url=url); Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  26. 26. Implémentation via JNI (2)  Extrait du Code de la classe cls_k_ligne_devis_t methode load_ed_bud_jnimethod load_ed_bud_jni(url=varchar(2000) not null)=declarei=integer not null;j=integer not null;tok=u_token_str_t;tmp=stringobject;{ callproc p4_loadedbud(t=byref(t)); Appel de la l3g encapsulée par une l4gl for i=1 to t.lastrow do tmp.value=t[i].lg; tok._clear(); tok.explode(l=tmp,token=|); curmethod.trace(text=varchar(tok.t.lastrow)); if(tok.t.lastrow!=9)then continue; endif; j=j+1; :$c.t[j].flgfc=int4(tok.t[1].token); :$c.t[j].cdres=tok.t[2].token; :$c.t[j].cdrubnt=tok.t[3].token; :$c.t[j].lbres=tok.t[4].token; :$c.t[j].cduo=tok.t[5].token; Affectation :$c.t[j].qtres=float8(tok.t[6].token); :$c.t[j].mtres=float8(tok.t[7].token); :$c.t[j].resdivcoef=float8(tok.t[8].token); :$c.t[j].mttotal=float8(tok.t[9].token); endfor;} Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  27. 27. Implémentation via JNI (3)  Extrait du Code de la dllDLLIMPORT int p3_loadedbud (ah)long ah;{ int i,j; JNIEnv * env; JavaVM * jvm; jclass clsH=NULL; jmethodID midGet=NULL; jobject jobjRetData = NULL; jsize len; const char *str; jobject myobj; env = create_vm(&jvm); Création de la machine virtuelle if (env == NULL) return 1; clsH = (*env)->FindClass(env,"ker_ligne_devis_t/ker_ligne_devis_tClient"); Recherche de la classe à appeler if (clsH != NULL) midGet= (*env)->GetStaticMethodID(env,clsH, "ReturnBud", "()Ljava/lang/Object;"); Recherche de la méthode à appeler if(midGet != NULL){ jobjRetData = (jobject)(*env)->CallStaticObjectMethod(env,clsH, midGet, NULL); len=(*env)->GetArrayLength(env,jobjRetData); Appel de la méthode for(j=0;i<len;j++) { i++; myobj = (*env)->GetObjectArrayElement(env, jobjRetData,j); str = (*env)->GetStringUTFChars(env, myobj, 0); Communication vers OpenROAD IIG4irInsRow(ah,i,0,0,0); Chargement direct d’un tableau if (IIG4chkobj(ah,3,i,2) == 0) { IIG4saSetAttr("lg",(short *)0,1,32,0,str); } } } int n = (*jvm)->DestroyJavaVM(jvm); return (0);} Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  28. 28. Conclusions (1) POC réussi Plusieurs solutions possibles Solutions techniquement viables Temps pour adapter les écrans Kérosène faible Architecture des dev kérosène ~= « java like » Implémentation Xml vraiment très élégante Communications bi directionnelle (param/data)Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  29. 29. Conclusions (2) JNI possible pour les traitements complexes Pas de modification des écrans dans les implémentation rawhttp, xml, et JNI Attention à la gestion des erreurs -> écrans avec navigateurs intégrés Performances des SA, clustering impératif Préparation des applications OpenROAD impératifCopyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  30. 30. Copyright ECL IP’S Software & Services - 1998-2008 Présentation ECL IP’S Software
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×