User Tools

Site Tools


wiki:epims4_0:developer:ep-admin

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:epims4_0:developer:ep-admin [2009/01/21 07:31]
132.168.73.247
wiki:epims4_0:developer:ep-admin [2009/01/21 07:49] (current)
132.168.73.247
Line 6: Line 6:
 FIXME: Il faut mettre en place un "​make"​ ant ou maven pour génération automatique et indépendant de l'​IDE... FIXME: Il faut mettre en place un "​make"​ ant ou maven pour génération automatique et indépendant de l'​IDE...
  
-Un fichier ReadMe.txt , à la racine du projet, décrit la compilation et l'​intégration dans eP-EAR ​+Un fichier ReadMe.txt , à la racine du projet, décrit la compilation et l'​intégration dans eP-EAR.
  
-**__Remarque__** :+===== Chapitres ​ =====
  
-Vous trouverez dans cette doc quelques TipsAndTrics ​pour le développement ​GWt / Spring / eP-Core+  * [[ePAdminArchi]] 
 +    * Vous trouverez dans cette partie des informations sur l'​architecture générale d'​eP-Admin ainsi que quelques TipsAndTrics ​spécifique au développement ​GWT / Spring / eP-Core 
 +  * [[ePAdminArchivage]]
  
-===== Architecture ===== 
-[[https://​bioproj.extra.cea.fr/​redmine/​wiki/​epims/​BlocNote_creation_eP-Admin | Block Note sur la création eP-Admin]] sur le serveur RedMine 
- 
-Ce Projet est un projet écrit en GWT. On retrouve donc l'​architecture classique (je crois ;o)) des projets GWT : 
-(référence : [[http://​code.google.com/​docreader/#​p=google-web-toolkit-doc-1-5&​s=google-web-toolkit-doc-1-5&​t=GettingStartedCreateProject| GWT Project]]) 
- 
-  * Sous cea.edyp.epims.admin on trouve ''​AdminManager.gwt.xml''​ : définition du module utilisé pour le //hosted// mode. 
-  * package cea.edyp.epims.admin.public : contient les fichiers (css, js, html...) qui seront copié tels quel dans l'​application web finale. ​ 
-  * package cea.edyp.epims.admin.client : Code qui sera ensuite compilé en JS pour être exécuté coté client. Voir les restriction sur le site GWT... 
-  * package cea.edyp.epims.admin.server : Code Java exécuté coté serveur. 
- 
- 
-==== Hosted Mode pour le développement Développement ==== 
-GWT permet de tester son application avec un serveur embarqué. ​ 
- 
-Le fichier ''​AdminManager.gwt.xml'',​ qui est utilisé pour ce mode et uniquement pour ce mode, est mis à jour automatiquement lors de la création de RemoteService par CypalStudio. La définition du servlet implémentant le nouveau RemoteService est ajouté : 
-  <servlet class="​cea.edyp.epims.admin.server.DataManagmentServiceImpl"​ path="/​data.service"/>​ 
- 
-Or, **ATTENTION**,​ nous utilisons une architecture hibernate / spring ​ et l'​accès aux services GWT ne peut pas se faire directement ! Il est nécessaire de passer via les servelt dispatcher de spring ... voir chapitre cote serveur... ce qui n'est pas possible en //hosted mode//. Par conséquent,​ lors de l'​ajout de nouveau RemoteService il est nécessaire : 
-  * de créer, coté serveur, un FakeXXXGWTServiceImpl ​ 
-  * de modifier ''​AdminManager.gwt.xml''​ pour référencer cette classe ​ 
- 
-  <servlet class="​cea.edyp.epims.admin.server.FakeDataMngtServiceImpl"​ path="/​data.service"/>​ 
- 
- 
-==== Code Client ==== 
-Sous le package cea.edyp.admin.client on retrouve les sous-packages : 
-  * data : défintion des objets manipulés cote client ​ 
-  * images : icone et Class ImageBundle correspondante 
-  * service : interface des services (RemoteService) rendu par le serveur ​ 
- 
-=== RemoteService === 
-Pour plus d'info voir le [[http://​code.google.com/​webtoolkit/​|site GWT]] 
- 
-Pour chaque Remote Service, on trouve :  
-  * les interfaces (XXXGWTService et XXXGWTServiceAsync) . Chaque interface XXXGWTService contient le code suivant :  
- 
-  public static final String SERVICE_URI = "​uri.service";​ 
-  public static class Util { 
-     ​public static XXXGWTServiceAsync getInstance() { 
-  XXXGWTServiceAsync instance = (XXXGWTServiceAsync) GWT.create(XXXGWTService.class);​ 
- ServiceDefTarget target = (ServiceDefTarget) instance; 
- target.setServiceEntryPoint(GWT.getModuleBaseURL() + SERVICE_URI);​ 
- return instance; 
-     } 
-  } 
- 
-Le ''​ServiceURI''​ est l'URI utilisé pour l'​appel au service cote serveur. **__Attention__**,​ cette uri doit impérativement être terminé par ''​.service''​ (voir //cote serveur//). La classe Util permet d'​obtenir la classe d'​implémentation (fourni par GWT) des services. 
- 
-L'​utilisation des services dans le code client est simple : 
- 
-  XXXGWTServiceAsync xxxService = XXXGWTService.Util.getInstance();​ 
-  xxxService.serviceMethod(uniqueParam,​ new MyOperationCallback());​  
- 
-La classe ''​MyOperationCallback''​ défnit les méthodes ''​onSucess''​ et ''​onFailure''​ appelés par le serveur.  ​ 
- 
-=== IHM === 
-... 
- 
-==== Code Serveur ==== 
-Pour plus d'info voir le [[http://​code.google.com/​webtoolkit/​|site GWT]] 
- 
-Dans le package cea.edyp.epims.admin.server on trouve les classes d'​implémentation des RemoteService. Ces classes utilisent les services eP-Core pour l'​accès aux données. L'​accès aux services d'​eP-Core se fait grace à spring. ([[http://​code.google.com/​p/​google-web-toolkit-incubator/​wiki/​IntegratingWithSpring | Integrating with GWT]]) 
- 
-  * fichier //web.xml// contient la définition d'un spring dispatcher. La configuration de celui-ci est dans le fichier //​springDispatcher-servlet.xml//​. Aucune modification n'est nécessaire ici lors de l'​ajout de service. **__Attention__**:​ lors de la creationde RemoteService avec CypalStudio,​ du code est **automatiquement ajouté** (servlet et servlet-mapping) et **doit être supprimé** ! 
- 
-  <​servlet>​ 
-  <​servlet-name>​springDispatcher</​servlet-name>​ 
-  <​servlet-class>​org.springframework.web.servlet.DispatcherServlet</​servlet-class>​ 
-  </​servlet>​ 
-  <​servlet-mapping>​ 
-  <​servlet-name>​springDispatcher</​servlet-name>​ 
-  <​url-pattern>​*.service</​url-pattern>​ 
-  </​servlet-mapping>​ 
- 
-  * fichier //​springDispatcher-servlet.xml//​ fichier spring permettant l'​accès aux services GWT et la configuration de ceux-ci avec les services eP-Core ! 
-    * mapping entre les url et le bean appelé :  
- 
- <bean class="​org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">​ 
-   <​property name="​mappings">​ 
-    <​value>​ 
-      /​**/​archive.service=archiveController 
-      /​**/​data.service=dataController 
-    </​value>​ 
-   </​property> ​ 
- </​bean>​ 
- 
-   * définition des bean appelé : tous ayant la même classe d'​implémentation mais avec la propriété remoteService initialisée différement. Ces remoteService correspondent à l'​implémentation des RemoteService GWT. __**Attention**__ : en plus de ce que dit la doc, GWTController doit également implémenter ServletContextAware pour être correctement initialisé !  
- 
- <bean id="​archiveController"​ class="​cea.edyp.epims.admin.server.GWTController">​ 
- <​property name="​remoteService">​ 
-    <​ref bean="​archiveGWTService"​ /> 
- </​property>​ 
- </​bean>​ 
-  
- <bean id="​dataController"​ class="​cea.edyp.epims.admin.server.GWTController">​ 
- <​property name="​remoteService">​ 
-    <​ref bean="​dataGWTService"​ /> 
- </​property>​ 
- </​bean>​ 
-  
- 
-   * Initialisation des beans services GWT avec les services eP-Core (id des beans définis dans le context spring d'​eP-Core) :  
- 
- <bean id="​archiveGWTService"​ class="​cea.edyp.epims.admin.server.ArchiveGWTServiceImpl">​ 
-    <​property name="​archiveService">​ 
-       <ref bean="​archiveManager"​ /> 
-    </​property>​ 
-     
- </​bean>​ 
  
  
wiki/epims4_0/developer/ep-admin.1232519469.txt.gz · Last modified: 2009/01/21 07:31 by 132.168.73.247