mardi 20 novembre 2007

Récupérer un objet dans un annuaire JNDI

Ceci est un fichier contexte exemple qui permet de définir une ressource
<Context displayName="web-service server" docBase="/opt/tomcat/webapps/myservice" path="/myservice" workDir="work/Catalina/localhost/myservice">
<Environment description="" name="pathDepot" type="java.lang.String" value="/var/depot-ws/myservice"/>
<Environment description="" name="facteurAttente" type="java.lang.Integer" value="0"/>
</Context>

Dans le fichier web.xml, il faut utiliser ce code
<env-entry>
<env-entry-name>docPath</env-entry-name>
<env-entry-value>c:/doc/doc1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>


Je propose un bout de code pour récupérer un objet dans un annuaire JNDI.

        Context initialContext = null;
try {
initialContext = new InitialContext();
pathDepot = (String) initialContext
.lookup("java:comp/env/pathDepot");
facteurDattente = (Integer) initialContext
.lookup("java:comp/env/facteurAttente");
} catch (Exception e) {
log.debug("Cannot get initial context for JNDI: ");
log.debug(e);
}

Installer son tomcat

Installer son tomcat

Maintenant que nous avons vu la théorie, il est temps de commencer la pratique. Avant de commencer il peut être bon de vous avertir que les opérations à venir ne prennent pas une demi heure. Ne vous attendez donc pas à voir fonctionner l'application de démonstration dans le quart d'heure à venir.

Tomcat

Installation

Tomcat est un chef d'oeuvre de simplicité à installer

Pour nos expériences nous allons nous servir de la version 5 du serveur, bien qu'il ne s'agisse pas encore de la version la plus répandue du serveur, elle peut servir dans un contexte de production :

http://jakarta.apache.org/ est l'url de référence pour tous les projets sous licence apache. Bien que cette page puisse sembler relativement austère, beaucoup de composants JAVA de Jakarta ont su s'imposer sur le marché. On y trouve entre autre tomcat et struts :

Tomcat : http://jakarta.apache.org/tomcat

Struts : http://stuts.apache.org/

Cliquez sur le liens download binaries et cherchez tomcat et struts. Comme c'est du code open source, prennez l'habitude, à chaque fois que vous téléchargez un programme pour le developpement d'également télécharger son code source. C'est lavantage de l'open source, un petit coup d'oeil dans le code source vous épargnera peut-être des heures et des heures de tatonnement irrationnels comme cela se produit dans les Apis propriétaires. Vérifiez bien que les versions binaires correspondent au sources.

Note :

Si l'envie folle vous prend de procéder à l'ancienne :"Je compile mon projet". Sachez que les dépendances pour les constructions tomcat sont abracadabrantesques et rappelez vous que le java est portable, c'est donc sans bénéfice pour la performance mais cela vous permettra de debugger et de placer des trace dans le code source. Dézzipper votre tomcat à l'endroit ou vous souhaitez le voir s'exécuter. Par défaut, tomcat n'écrira que dans des sous répertoires de son répertoire racine.

Affectez une variable JAVA_HOME sur le chemin de votre JDK (Pas JRE) en cliquant sur le bouton droit droit sur le poste de travail dans windows.

Placez vous dans le répertoire de tomcat/bin et lancez la commande startup.sh startup.bat suivant que vous vous trouvez sur Linux ou sur Windows. Vous venez d'installer Tomcat. Félicitations !

Maintenant vous pouvez voir le résultat :

http://localhost:8080/

Note :

Il est possible que votre OS fournissent une distribution de Tomcat avec des chemins d'installation diffèrents de ceux par proposé par défault. Je recommande plutôt d'utiliser une arborescence identique à celle qui est proposée dans l'archive de la fondation apache tant qu'il s'agit de développement.

Voici ce que vous devez voir.

Installer les options d'administration

Pour pouvoir contrôler tomcat à distance il est nécessaire d'activer les utilisateurs d'administration. Placez vous dans le répertoire $TOMCAT_HOME/conf

Editez le fichier tomcat-users.xml pour qu'il ressemble à ceci :

Redémarrez tomcat et connectez vous à l'URL. Il vous affiche le manager d'application qui vous permet de lister et de contrôler les différentes applications déployées sur le serveur.

http://localhost:8080/manager/html

Installer Eclipse

Eclipse se télécharge ici : Installez la version 3.0.

http://www.eclipse.org

Comme nous allons nous servir de tomcat, nous allons utiliser le plugin Sysdeo qui permet de contrôller tomcat à travers eclipse. Pour installer le plugin, dezippez simplement l'archive dans l'arborescence de eclipse et relancez eclipse

http://www.sysdeo.com/eclipse/tomcatPlugin.html

Configurez le pluggin dans le menu préférences afin qu'il sache dialoguer avec tomcat.

Nous sommes prêt à travailler sur une application réelle.

L'application de démonstration

L'application de démonstration nous présente une application relativement complexe où vous pourrez retrouver beaucoup des problèmes que l'on peu rencontrer dans le web. Elle présente les notions de :

  • Connection à une base de données
  • Login et Enregistrement d'utilisateur
  • Utilisation du controleur Strut pour le contrôleur
  • Internationalisation (Charset et détection)
  • Gestion de formulaire dynamique
  • Boucle de traitement simple et imbriquée
  • Sécurisation de la partie administration

Téléchargez l'application de démonstration ici. Elle se présente sous la forme d'une archive WEB (.war) qui est en fait un zip ou les fichiers se trouvent organisé d'une manière spéciale. Pour la déployer il suffit de la copier dans le répertoire webapp de tomcat, l'extraction des fichiers se fait automatiquement.

Maintenant quand vous vous connecter sur l'application manager vous devez appercevoir l'application QuizzTomcat dans la liste.

Cependant, cette application s'appuie sur une base de donnée et il faut l'installer ! Courage c'est presque fini !

Installation de MySQLpour l'application de démonstration

Téléchargez mysql en vesion 4.0 ici

Dans le répertoire c:\mysql\bin lancez winmysqladmin et installez MySQL en temps que service. Lancez en ligne de commande le programme

mysql -uroot

Vous êtes l'utilisateur d'administration. Maintenant nous allons créer la database et donner les droit à l'utilisateur quizz d'accéder à cette database.

mysql>create database quizz;
mysql>grant all privileges on quizz.* to quizz@localhost identified by 'quizz';
mysql>use quizz;

Nous allons créer les tables nécessaires à l'application de démonstration avec le fichier quizz.dmp qui se trouve dans QuizzTomcat/WEB-INF/sql/quizz.dmp à l'intérieur de la WebApp.

Suit une volée d'insultes et peut-être des bip si votre ordinateur est un bavard.

Voila la base de données est initialisée.

Configuration de l'application WEB

Maintenant, prennez le fichier jar qui se trouve dans WEB-INF/lib/mysql-connector-bin.jar et copier le dans le répertoire tomcat/common/lib.

Connectez vous à la console d'administration de tomcat et tapez le user et le mot passe tomcat pour vous connecter.

Placez vous sur Service->Host->Context(QuizzTomcat)->DataSource et selectionnez Create a new DataSource. Et rentrez les paramètres de la data source. Sauvez et commit les changements.

Pour vérifier que tout s'est bien passé, il faut aller voir dans le fichier TOMCAT_HOME/conf/Catalina/localhost/QuizzTomcat.xml qui est le fichier de contexte.

Il doit avoir l'allure suivante :



 <context displayname="Quizz App" docbase="C:\Documents and    Settings\Propriétaire\Bureau\eclipse\workspace\QuizzTomcat" path="/QuizzTomcat" reloadable="true" workdir="C:\Documents    and Settings\Propriétaire\Bureau\eclipse\workspace\QuizzTomcat\work">
<resource name="jdbc/Quizz" type="javax.sql.DataSource">
<resourceparams name="jdbc/Quizz">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>quizz</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/quizz?autoReconnect=true</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>quizz</value>
</parameter>
</resourceparams>
<resourcelink global="UserDatabase" name="users" type="org.apache.catalina.UserDatabase">
</resourcelink></resource></context>



Avant de commencer à rentrer dans le détail du code dans le chapitre suivant, il serait bon que vous parcouriez l'application de démonstration QuizzTomcat

Note :

L'application de démonstration ne resemble pas à ce qu'on pourrait appeler un Tutorial, pour deux raisons

  • D'abord, en ne restant que sur des applications simples, on se préserve des questions qui font mal quand on passe au réel .
  • Ce cours est fait pour être détaillé de vive voix.

vendredi 16 novembre 2007

Configurer une source ftp dans mandriva

Pour éditer la source de média lancer drakrpm-edit-media et cliquer sur ajouter une nouvelle source personnalisée.

URL : ftp://ftp.national/linux/mandriva/dis/Mandrake/2006/i586/media/main

Chemin relatif vers HDSynthesys : ../media_info/hdlist_main.cz

lundi 5 novembre 2007

Déploiement d'un web service

Objectif du document

Fournir un guide pour le déploiement d’un Web-Service une fois que la fonction est réalisée.

Prérequis
· Eclipse 2.2 ou 2.3 (Version testée)
· Axis 1.3 (Version testée)
Comment déployer sa fonction en tant que Web-Service
Une fois le service développé, nous créons une librairie, mondispositifservice.jar. Il s’agit maintenant de la déployer sous forme de Web-service.

1. Nous créons un projet Web Dynamique à l’aide de eclipse : Fichier --> New …



2. On se laisse guider par l’assistant. Il faut veiller à ne pas selectionner les modules AXIS2 qui sont proposés à la fin de l’assistant (Nous n’utilisons pas AXIS2)

3. Dans le repertoire WebContent/WEB-INF/lib du projet généré, nous copions les librairies

· aida-meta.jar
· aida-commons.jar
· mondispositifservice.jar

4. Le Web-Service est déployé par la commande New--> Web-Service
Un assistant nous est proposé.

Choisir
· L’implémentation du service la classe qui réalise notre fonction dans service implementation


· Le project qui hébergera notre application (le service project )


Dans l’écran suivant vérifier que l’affichage correspond aux méthodes que l’on souhaite rendre accessible par Web Service.





Dans l’écran suivant. Il n’est pas nécessaire d’inscrire son WEB-Service sur un UDDI.



5. Enfin, pour terminer il faut affecter les bons namespaces. Un fichier généré : server-config.wsdd a été généré. Les namespaces doivent être affecté à : http://www.agriculture.gouv.fr/AIDA/2007. http://utils.commons.aida doit être remplacé par http://www.agriculture.gouv.fr/AIDA/2007
6. Au redémarrage du serveur. Le service devrait fonctionner, il faut pour le vérifier verifier que son WSDL utilise le bon namespace (http://www.agriculture.gouv.fr/AIDA/2007) et effectuer un test à l’aide d’un client.
Comment tester son implémentation
Un client correspond à la génération d’un certain nombre de fichier JAVA. Ces fichiers seront par la suite compilés et permettrons de se connecter au web service. Le processus le naturel pour générer un lient Web service est le suivant :

1- Télécharger le descripteur de déploiement
2- Générer le client à l'aide d'un assistant
3- Tester le service
1- Télécharger le descripteur de déploiement
Si le serveur est un serveur axis, http://monserveur.com/axis-webapp/services donne accès à des liens vers les descripteur de déploiement. Sur le lien WSDL télécharger le descripteur de déploiement. (Lien en bleu)

And now... Some Services
· AdminService (wsdl)
o AdminService
· Version (wsdl)
o getVersion
· AidaService (wsdl)
o rechercherListeDossiers
o detailDossier

2- Générer le client de Web service à l'aide d'un assistant
En utilisant Eclipse, la génération d'un client est très simple. Se placer dans un projet java, on générera le client dans un projet, par exemple, ws-test
Dans le menu Fichier --> Nouveau, choisir client de Web Service, l'écran suivant apparait




Dans le second écran on renseigne l'url ou se trouve le WSDL



Les options par défaut, génère seulement le client.
3- Tester le service

Pour se servir du service, on utilise Locator pour résoudre la localisation du service au niveau du réseau, des namespaces, puis on se sert du service comme s'il s'agissait d'une fonction tout à fait ordinaire.

MyServiceLocator locator = new MyServiceLocator();
MyService service = locator.getMyService();
String result = service.fonction01("param1","param2");