User Tools

Site Tools


wiki:epims4_0m2:developer:ep-admin

This is an old revision of the document!


Guide d'implémentation d'eP-Admin

Introduction

Actuellement, ce module ne fonctionne (pour le mode développement!) que sous eclipse avec plugin Cypal Studio ! FIXME: Il faut mettre en place un “make” ant ou maven pour génération automatique et independance IDE…

Pour permettre l'intégration dans eP-EAR :

  • Sélectionner eP-Admin
  • menu project → clean… (que eP-Admin)
  • Clique driot sur eP-Admin et faire Export → War file à la racine du projet
  • Puis dist ou Publish_install de eP-EAR (dans le même workspace)

Coté libs, “seule” une “User library” pointant sur eP-Core doit être définit. Par défaut cette user lib est nommé 'eP-Core-<version>'…

Architecture

Ce Projet est un projet écrit en GWT. On retrouve donc l'architecture classique (je crois ;o))des projets GWT : (référence : GWT Project

  • Sous cea.edyp.epims.admin on trouve AdminManager.gwt.xml : définition du module
  • 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.

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 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 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. ( 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_0m2/developer/ep-admin.1221636172.txt.gz · Last modified: 2008/09/24 15:35 (external edit)