Table of Contents

Architecture eP-Admin

Accès au Bloc 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 : GWT Project)

Hosted Mode pour le 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 :

<servlet class="cea.edyp.epims.admin.server.FakeDataMngtServiceImpl" path="/data.service"/>

Coté Client

Sous le package cea.edyp.admin.client on retrouve les sous-packages :

RemoteService

Pour plus d'info voir le site GWT

Pour chaque Remote Service, on trouve :

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.

Coté 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 grâce à spring. ( Integrating with GWT)

La définition à conservée :

<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>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <value>
     /**/archive.service=archiveController
     /**/data.service=dataController
   </value>
  </property> 
</bean>
<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>
<bean id="archiveGWTService" class="cea.edyp.epims.admin.server.ArchiveGWTServiceImpl">
   <property name="archiveService">
      <ref bean="archiveManager" />
   </property>
   
</bean>