HOWTO développement Sashipa

 

 Créer une servlet en Sashipa-Melba.

Vous avez déjà une application Sashipa. Vous souhaitez la déployer avec une architecture client - servlet - base de données.

 

Dans une architecture client - servlet - base de données, le client n'accède pas directement à la base de données. Il communique en HTTP avec une servlet, et la servlet répercute sur la base de données. Cette architecture active la gestion multi-utilisateurs (une seule application cliente peut accéder à la fois à une même fiche en écriture). Elle permet aussi de mettre en place des applets, puisqu'une applet ne peut accéder directement au SGBD pour des raisons de sécurités.

Vous aurez besoin d'un serveur de servlet, tel que Tomcat du projet Jakarta d'Apache. Installez-le auparavant. De plus, si vous utilisez un driver JDBC, il vous faut configurer le serveur de servlet pour qu'il mette votre driver dans son classpath.

De plus, avant de commencer, il faut renseigner la variable JAVAX_JAR dans le fichier '<melbalab-home>/melbabuild' ou '<melbalab-home>/melbabuild.bat' (suivant que vous êtes sous Linux ou Windows).

Maintenant on y va.

Voici le code à modifier dans votre fichier source Sashipa (ici avec Tomcat) :

<architecture guiType='application'>
  <dbAccessStage database='dbDemoContact' architecture='clientServerDatabase'>

    <!-- element dbConnection -->

    <!-- element dbAccessLog -->

    <specificToServer>
      <serverResourceName>DemoContactServlet</serverResourceName>
      <serverConnectionString type='url'>
        http://mytomcatserver:8080/examples/servlet/DemoContactServlet
      </serverConnectionString>
    </specificToServer>

  </dbAccessStage>

  <!-- ... -->
</architecture>

Attention pour les url, bien utiliser le nom réseau (ou l'adresse ip) de votre machine et non pas localhost. Autrement l'application cliente (ou l'applet) ne pourra être exécutée que depuis votre machine.

Vous recompilez : votre servlet est générée.

Maintenant il y a une opération plus pénible car elle n'est pas automatisée : il faut séparer le code de la partie cliente et celui de la servlet.

  • 1 - Faire une copie du fichier résultat (fichier .jar)
  • 2 - Renommer la copie avec l'extension .zip
  • 3 - Dézipper le fichier dans un répertoire vide
  • 4 - Les fichiers XXXServlet.class, XXXServletAnalyser.class, ainsi que le répertoire melba_1_1_11/ constituent la servlet. Il faut les copier des le répertoire qui va bien du serveur de servlet. Par exemple pour Tomcat on peut les mettre dans le répertoire <tomcat-home>/webapps/examples/WEB-INF/classes/

Avant de continuer, il faut savoir si la servlet est disponible sur le serveur de servlet. Pour cela, ouvrez un navigateur et saisissez l'url que vous avez utilisé dans l'élément <serverConnectionString>. Si elle ne répond pas (404 not found ou même rien) il ne faut pas aller plus loin :

  • Essayer toutes les urls auxquelles vous pensez jusqu'à ce que la servlet réponde. Quand elle répond c'est par un message d'erreur incompréhensible ou une erreur HTTP 405 ("ne peut répondre aux requêtes Get"). Donc si vous avez ça, c'est gagné. Par expérience, c'est cette étape la plus pénible. N'hésitez pas à demander de l'aide sur les forums.
  • Mettre la bonne url dans l'élément <serverConnectionString> du fichier XML.
  • Regénérer.

Remarque : il faut mettre à jour la servlet à chaque fois que quelquechose est modifié dans l'élément <environment> ou dans <architecture>. En revanche si vous modifiez un écran ou un formulaire (élément <graphicalUserInterface>), alors la servlet n'a pas changé. Donc dans ce cas, pas besoin de reprendre la séparation manuelle.

De plus, mieux vaut mettre à jour la servlet quand vous recompilez avec une nouvelle version du MelbaLab. Autrement vous pourriez avoir des erreurs de communication entre vos applications clientes et vos servlets.

Vous pouvez maintenant exécuter votre fichier jar : vous êtes en mode client - serveur - base de données. :o) Pour le vérifier, ouvrez deux fois l'application et allez sur la même fiche dans vos deux applications. La deuxième sera en lecture seule.

Vous pouvez aussi jeter un coup d'oeil sur la FAQ trucs et astuces pour retirer les informations de connexion de votre application cliente.

© Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention apparaît clairement.