Projets
Pages enfant
  • 3.3.2 Le fonctionnement

Vous regardez une version antérieure (v. /wiki/spaces/PROJ/pages/100663540/3.3.2+Le+fonctionnement) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 2) afficher la version suivante »

Les points d'entrée

Le modèle présenté ci-dessus est implémenté par les points d'entrée de esup-commons (FacesServlet, FacesPortlet, XFireServlet), en couplage avec la gestion des exceptions.

Déploiement en servlet

En déploiement servlet, il faut utiliser la servlet FacesServlet offerte par esup-commons, et qui gère les sessions Hibernate et les exceptions (cf /webapp/WEB-INF/web.xml) :

<servlet>
  <display-name>Faces Servlet</display-name>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>
    org.esupportail.commons.web.servlet.FacesServlet
  </servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.faces</url-pattern>
</servlet-mapping>

Déploiement en portlet

En mode portlet, il faut utiliser la servlet PortletServlet offerte par esup-commons, et qui gère également les sessions Hibernate et les exceptions (cf /webapp/WEB-INF/web.xml) :

<servlet>
  <display-name>esup-application</display-name>
  <servlet-name>esup-application</servlet-name>
  <servlet-class>
    org.esupportail.commons.web.portlet.PortletServlet
  </servlet-class>
  <init-param>
    <param-name>portlet-class</param-name>
    <param-value>
      org.esupportail.commons.web.portlet.FacesPortlet
    </param-value>
  </init-param>
  <init-param>
    <param-name>portlet-guid</param-name>
    <param-value>esup-diskquota.esup-diskquota</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>esup-application</servlet-name>
  <url-pattern>/esup-application/*</url-pattern>
</servlet-mapping>

Web services

En mode web service, il faut utiliser la servlet XFireServlet offerte par esup-commons, qui gère également les sessions Hibernate et les exceptions (cf. /webapp/WEB-INF/web.xml) :

<servlet>
  <servlet-name>xfire</servlet-name>
  <servlet-class>
    org.esupportail.commons.web.servlet.XFireServlet
  </servlet-class>
</servlet>


<servlet-mapping>
  <servlet-name>xfire</servlet-name>
  <url-pattern>/xfire/*</url-pattern>
</servlet-mapping>

Cela implique que les opérations effectuées soient unitaires, au sens transactionnel.

Accès batch

Les accès batch sont traités en détail dans un chapitre dédié.

Voir : 11 Commandes batch

La configuration de l'accès aux données

Les points d'entrées ci-dessus utilisent la classe statique DatabaseUtils qui, pour pouvoir gérer plusieurs connexions à des bases de données, s'appuie sur un « magasin de gestionnaires de bases  de données ».

Ce magasin, qui recense les gestionnaires de bases de données, est un bean nommé databaseManagerStore, qui doit implémenter l'interface DatabaseManagerStore. Une seule implémentation est fournie de base (BasicDatabaseManagerStoreImpl), elle doit permettre de répondre à toutes les demandes.

On trouvera par exemple dans le fichier /properties/dao/dao.xml :

<bean
    id="databaseManagerStore"
    class="[...].services.database.BasicDatabaseManagerStoreImpl" >
  <property name="databaseManagers">
    <list>
      <ref bean="databaseManager1" />
      <ref bean="databaseManager2" />
    </list>
  </property>
</bean>

Le magasin recense ici deux gestionnaires de bases de données (databaseManager1 et databaseManager2).

Les gestionnaires de bases de données sont chargés de l'accès à une base de données ; ce sont également des beans, qui doivent implémenter l'interface DatabaseManager. Les méthodes de cette interface sont :

  • void open(servletContext) : ouvre la connexion à la base de données et commence une transaction ; cette méthode est utilisée en mode web.
  • void open() : ouvre la connexion à la base de données et commence une transaction ; cette méthode est utilisée en mode batch.
  • void close(boolean) : valide (commit) ou invalide (rollback) la transaction courante et ferme la connexion.
  • void test() : teste la connexion; cette méthode est utilisée par la tâche ant test-database.
  • boolean isUpdatable() : indique si le gestionnaire est capable de créer et mettre à jour la structure de la base de données (on pourra dans ce cas appeler les méthodes create() et update()).
  • void create() : crée les structures de la base de données.
  • void update() : met à jour les structures de la base de données.

    Utiliser esup-commons sans base de données

    Les utilisateurs ne s'appuyant sur aucune base de données devront utiliser l'implémentation EmptyDatabaseManagerStoreImpl pour le bean databaseManagerStore.

L'accès aux données depuis du code Java

Le service métier (le bean domainService) accède aux données via le service d'accès aux données (le bean daoService). Il est à la charge des implémentations de l'interface DaoService de récupérer les sessions courantes des bases données et d'effectuer les requêtes nécessaires.

La méthode utilisée par les implémentations Hibernate est détaillée dans la partie suivante.

  • Aucune étiquette