Cet article est la suite logique et technique à l'article Entreprise 2.0 : Blogging en R&D, un retour d'expérience. Dans ce premier article, je décrivais l'intérêt du Blog pour une bonne gestion des connaissances de l'entreprise.

Dans ce nouvel article, je vais m'attacher à décrire les aspects techniques de l'utilisation d'une plate-forme de Blogging comme celle de Blogger.

Il ne s'agit pas d'une évaluation complète et encore moins d'une comparaison d'outils de Blogging : cet article, http://www.clubic.com/article-67515-1-comparatif-plateformes-blogs.html, propose une comparaison de plusieurs plates-formes, même si toutefois l'évaluation de Blogger me parait incomplète ou du moins non significative vis à vis de mon expérience, s'il s'agit d'une comparaison c'est l'article que je vous recommande.

Mon objectif est de décrire mon utilisation de Blogger, mon Workflow de bloggeur en attirant l'attention sur les points qui me paraissent importants. Vous trouverez donc ce que je considère comme des points forts ou des points faibles de Blogger. C'est parce que certains sont absents de l'analyse de Clubic citée plus haut que je considère qu'elle manque de pertinence.

Mon Workflow commence avec Word dans lequel j'utilise ses styles (j'utilise les styles par défaut Normal, Title 1 et Title 2) mais surtout son correcteur orthographique.

Une fois le texte finis dans Word je le copie dans Windows Live Writer : Cette utilitaire gratuit de Microsoft est un client Windows qui fonctionne avec Blogger. Je l'utilise pour sa plus grande convivialité que l'éditeur de Blogger afin de palier à la limite majeure de Blogger : son éditeur.

Le workflow se termine par la publication, l'hébergement et la consultation dans Blogger.

Pourquoi avoir choisir Blogger

A l'époque j'étais un utilisateur de Yahoo avec les services del.icio.us et Yahoo Mail. Ce point est important car j'ai une tendance naturelle à réduire le nombre de mes fournisseurs dans la mesure du possible. J'ai donc commencé par regarder la solution de Blogging de Yahoo.

J'ai eu l'impression qu'il n'était pas possible, à l'époque, d'avoir plusieurs Blogs et de choisir un identifiant différent de son email. Attention ! Je ne prétends pas que cela était impossible, mais je n'ai pas trouvé suffisamment rapidement l'information quand j'en ai eu besoin.

Je me suis alors tourné vers Google dont j'utilisais également la messagerie. Je suis tombé sur Blogger. J'ai tout de suite opté pour la version Beta. J'ai constaté qu'il était possible à la fois d'administrer sous un même login plusieurs blogs et que les identifiants (votre nom de blogger) était complètement libre et rattaché à chaque blog.

J'ai validé ensuite qu'il existait une modération des commentaires qui permettent d'éviter les commentaires de type publicitaires pour des sites de jeux ou du type minitel rose.

Le fait qu'il soit également possible de faire un blog complètement privé (afin de faire un journal de bord permettant de tracer sa progression journalière) a été un plus.

Et pour finir, il est possible de ne pas avoir du tout de publicité sur son site et il s'agit d'une des plates-formes de référence pour le Blogging.

L'ensemble de ces raisons m'a poussé à basculer vers Blogger.

Mon expérience de Blogger

Dans cette partie j'indique comment Blogger a parfaitement répondu au cahier des charges initiales.

Gestion des blogs

La connexion à Blogger vous emmène sur le tableau de bord qui énumère vos Blogs. Chaque blog à un identifiant (jl2tho pour ce blog) qui est libre dans la mesure où il n'est pas déjà utilisé.

Votre login Blogger est unique, et comme Google semble avoir une politique d'identification centrale, ce login est celui de votre compte Google Mail si vous en possédez un.

Utilisant iGoogle comme page de départ principale et Firefox comme navigateur : je ne connecte qu'une seule fois, ensuite j'ouvre des onglets sur les différentes applications Google dont Blogger sans avoir besoin de m'identifier de nouveau. J'avoue trouver cela très pratique à l'utilisation.

Blog privé et public

Un Blog Blogger peut être complètement public comme celui-ci ou complètement privé et limité à un seul utilisateur : son rédacteur. Il est également possible d'ouvrir un Blog en lecture uniquement pour un nombre réduit de lecteurs qui devront s'identifier au préalable (je n'utilise pas cette dernière possibilité, mais je la trouve intéressante).

Je parlais de la partie consultation, mais il est intéressant de noter qu'il est également possible de définir un blog qui posséderait plusieurs rédacteurs. N'ayant pas utilisé cette possibilité je ne m'étendrais pas dessus.

Gestion des commentaires

Il s'agissait d'une des fonctionnalités importantes pour deux raisons :

  • dans la mesure ou ce blog est professionnel, éviter qu'il soit utilisé à des fins publicitaires par des acteurs inconnus ou pour des attaques contre des sociétés connues.
  • éviter les commentaires hors sujets comme les publicités pour les sites de jeux

Blogger met à votre disposition deux mécanismes :

  • Une sécurité qui oblige tout rédacteur d'un commentaire à recopier un ensemble de lettres affichées sous formes de Jpeg : Ce mécanisme limite l'intrusion des robots. Jusqu'à ce jour, je n'ai pas détecté de commentaires susceptibles d'avoir été tapé par un robot. J'en déduis que le mécanisme est relativement efficace.
  • L'acceptation explicite de tous commentaires de la part du rédacteur : pour chaque nouveau commentaire, Blogger vous envoie un email afin de vous faire part de son contenu. Le commentaire n'est pas publié tant que vous ne l'avez pas explicitement accepté en cliquant sur un lien de l'email ou en vous rendant sur la page de modération des commentaires attachés à votre Blog. Blogger appelle cela la modération des commentaires.

J'ai trouvé particulièrement rassurante cette seconde fonctionnalité jusqu'à aujourd'hui : j'avais peur de commentaires hors de propos comme on en voit sur les sites des grands journaux. Aujourd'hui, la possibilité d'être prévenu par email pour chaque nouveau commentaire associé à la possibilité de retirer un commentaire déplacé me parait suffisante. Le mécanisme d'acceptation explicite peut être néanmoins d'une certaine utilité lors d'un départ en congés afin de limiter les éventuels squatters pour certains sites.

En bref, j'ai trouvé l'ensemble des fonctionnalités de gestion des commentaires très pratique et très rassurante.

Absence de publicités

Par défaut Blogger est exempt de toute publicité. Ce site a fonctionné sans publicité durant plus de 8 mois.

Récemment, j'ai eu envi d'étudier le fonctionnement d'AdSense, j'ai donc créé un compte AdSense et j'ai ajouté très simplement un ensemble de publicité AdSense sur ce Blog grâce à l'interface Wysiwig de Blogger. On ne peut faire plus simple.

Les publicités AdSense savent rester très discrètes : il est possible de choisir la taille, la couleur mais également la présence ou non d'images.

Je dois avouer être surpris de l'adéquation des publicités AdSense avec le contenu des pages. Cela montre le savoir faire de Google en matière d'analyse du contenu d'une page dont on profite lors de nos recherches quotidiennes.

AdSense me permet de connaître l'audience de mon site ce que n'offre pas Blogger : c'est un des petits reproches que je lui adresserai même si ce n'étais pas mon objectif a priori.

Cette absence de statistiques au niveau de Blogger me parait surprenante et dommageable pour certains types de Blogs. Certes Blogger est ouvert et il doit être possible d'ajouter les tags nécessaires pour en bénéficier, mais bon il serait si simple d'avoir en standard une fonction basique indiquant l'audience de chaque page.

Les bonnes surprises de Blogger

Blogger au delà des fonctionnalités qui me paraissait intéressantes met à votre disposition d'autres fonctionnalités qui me semblent très intéressantes et qui après cette première expérience feraient partie d'un nouveau cahier des charges.

Le flux RSS

Un blog Blogger est automatiquement un flux RSS. Cela est intéressant dans le cadre d'un travail en équipe avec l'utilisation d'un portail ou agrégateur de flux comme iGoogle ou Netvibes.

Tagging horaire et possibilité de correction

Avec Blogger, par défaut, la date du message est celle de la création du post (le brouillon initial). Il est néanmoins possible de corriger cette date si nécessaire.

Tagging et libellé

Blogger met à disposition ce qu'il appelle les Labels : il s'agit de mots clés (ou en bon français tag) complètement libres qu'il est possible d'associer à un post. Il est possible d'attribuer plusieurs mots clés à un Post. Les mots clés attachés à un article peuvent apparaître sous son titre ou à la fin. Il est possible d'afficher la liste des libellés définis pour votre blog dans la barre latéral. L'appui sur un des liens affiche la liste des articles marqués par ce mot clé.

En tant qu'adepte du tagging à travers del.icio.us, je considère cette fonctionnalité très intéressante voir indispensable.

Je trouve en revanche l'affichage de la liste des billets correspondants à un Label pas optimum : les articles apparaissent dans leur totalité, j'aurais préféré la liste des titres d'articles.

Liste des sites favoris

Il s'agit d'une fonctionnalité basique qui permet d'indiquer à vos visiteurs quels sont vos sites de référence.

Historique des billets

Il s'agit certes, d'une fonctionnalité standard des blogs, mais bon, elle reste pour moi primordiale : la liste de l'ensemble des billets est disponibles dans la barre latérale. Ils sont classés par ordre chronologique regroupés d'abord par année puis par mois.

Une URL par Post

Chaque post possède sa propre URL : il est donc possible d'accéder directement à un Post avec une URL. On n'est pas limité à une URL simple du type jl2tho.blogspot.com qui n'amènerait que sur la première page du Blog.

Le titre d'un Post est un lien qui amène sur cette page : il est alors possible de la tagger dans del.icio.us par exemple, ou de conserver plus simplement cette URL dans ses favoris.

Cet URL reprend les mots du titre de votre Post (aux accents près) ce qui la rend intelligible. Cette propriété des URLs de Blogger semble avoir un effet positif sur votre classement Google.

Mise en page et éditeur

Jusqu'à présent nous nous sommes concentrés sur les fonctionnalités d'organisation d'un Blog. Hors sa fonctionnalité première est la publication de texte ce qui implique leur rédaction et leur mise en page.

Richesse de la mise en page

Coté mise en page, j'avoue que Blogger offre une palette de modèles standards relativement complète, des facilités de réorganisation de ces modèles par simple glisser/déposer. Les différentes zones (historique, profil, heure de publication, libellée...) peuvent être placées comme on le souhaite.

J'ai même trouvé un modèle que je trouve particulièrement adapté pour les grands écrans car il ne limite pas la largeur du texte.

Je dois néanmoins reconnaitre que mes besoins de présentation sont relativement simples : je n'ai pas eu de charte ergonomique ou graphique à respecter.

Il est possible de modifier les feuilles de style standard : j'ai ainsi ajouté aux styles Normal, Header 1, 2 et 3 que j'utilise, un style Code qui me permet de mettre en valeur le code ou les commandes qu'il est nécessaire de taper.

En conclusion, les possibilités de mise en page me paraissent relativement complètes et simples à mettre en œuvre.

Editeur

Il s'agit à mon avis du mécanisme le plus limité. L'éditeur est annoncé comme Wysiwyg (On est censé lors de l'édition du texte, le voir apparaître comme il sera affiché plus tard).

Même sur un modèle de style standard non modifié, en édition ou en mode aperçu on est très loin de l'apparence finale du style. Il ne semble pas prendre en compte la feuille de style. Je dois avouer que cela ne gène pas trop : j'utilise exclusivement les styles standards (Normal, Header 2 et Code) en m'interdisant de jouer au delà avec les polices de caractères.

Ce qui me gène plus est l'absence des styles Header 1, 2 et 3 du HTML : la feuille de style contient leur définition. Mais il n'est pas possible de les appliquer simplement (par sélection dans une liste) à une sélection de texte.

Il est possible de basculer en mode HTML et de remplacer la balise P par une balise H1 ou H2. Cette absence d'une prise en charge conviviale des styles est, dans mon cas, un très gros manque de la part de Blogger.

Un autre point que j'ai trouvé particulièrement désagréable est qui m'a poussé à rechercher une autre solution est la taille de l'éditeur : il n'est pas très grand et ne se retaille pas quand on agrandit la taille du browser. J'utilise un grand écran et je trouve particulièrement peu conviviale de devoir me limiter à une taille d'éditeur que je juge trop petite.

Pour finir l'ajout des caractères < ou > est très difficile. Ces caractères relativement courant dans le HTML ou le XML apparaisse souvent dans du code informatique, il me semble impossible de copier un morceau de code les contenant. Il ne m'a pas semblé, non plus, très simple de taper le code dans l'éditeur Wysiwyg. J'ai été obligé à plusieurs reprises de passer par l'affichage HTML qui oblige à taper le code HTML correspondant à ces caractères.

Ces quatre lacunes m'ont poussé à chercher une alternative à cet éditeur. Cela a était d'autant plus important qu'il ne possède pas de véritable correcteur orthographique.

Au début j'ai essayé de taper mon texte dans Word puis de le copier/coller dans l'éditeur Blogger. Cela ne marche pas très bien, on récupère des styles Microsoft (préfixé de Mso) et on a toujours le problème des caractères < ou >.

Images

Il est possible d’ajouter des images dans le texte de votre billet. Le téléchargement vers le site Blogger est simple. L’espace disponible est important (il me semble que l’on dispose de 1Go).

Le mécanisme d’insertion des images est déficient : l’image est toujours insérée au début du texte du billet. Il faut ensuite la déplacer jusqu’à sa position tout en sachant qu’il n’est pas possible de la descendre de plus d’un écran.

Pour contourner le problème, j’insère toute les images dans l’ordre inverse (la dernière image en premier, puis les autres). De cette manière les images sont dans l’ordre, il ne me reste plus qu’a insérer le texte entre les images.

Autres contraintes

Pour finir, j'attire votre attention sur le fait que l'utilisation de Blogger en édition vous oblige à accepter un cookie pour blogger.com.

Si vous avez desactivé les cookies sur votre navigateur ou bien si votre antivirus bloque ce cookie, vous aurez une erreur de connexion qui va provoquer une boucle de réaffichage de la page d'accueil de Blogger.

Une seule solution, autoriser la création de ce cookie.

Conclusion

Malgré les défauts, je suis satisfait de mon expérience Blogger. J’ai contourné les principaux défauts de l’éditeur avec l’utilisation de Windows Live Writer que je décris dans le billet suivant : Windows Live Writer et Blogger

En résumé, mon processus de rédaction est le suivant :

  1. Rédaction du contenu dans Word afin de bénéficier d’un correcteur orthographique
  2. Copie/colle dans WLW afin de réaliser la mise en page
  3. Post du billet depuis WLW dans Blogger
  4. Ajout éventuel de Label et organisation et gestion des billets dans Blogger
  5. Suivi des statistiques depuis AdSense.
2

Afficher les commentaires

  1. Un des rares articles sur le sujet et très bon (à mon goût) ! Bravo

    RépondreSupprimer
  2. Ce commentaire a été supprimé par un administrateur du blog.

    RépondreSupprimer


Ce billet complète la série de billets sur les Services Web. Il s’agit d’une actualisation de la série dans le cadre d’une utilisation avec le serveur d'application WebSphere 8.5.5 et Java 1.7.
Vous pouvez trouver le début de la série à l’url suivante : http://jl2tho.blogspot.fr/2011/11/tutorial-approche-contract-first-avec.html. Elle présente la création d'un service web avec les annotations JAX-WS et JAXB.

La norme JAX-WS a pour objectif d'assurer la portabilité des services web réalisés à travers les différents serveurs d'application. Néanmoins, on constate que le passage d'un serveur JEE à un autre peut nécessiter un certain nombre d'adaptations.

Ce billet a pour objectif de préciser les modifications faites pour assurer le déploiement du service web sur WebSphere 8.5. Il a également vocation à conserver une trace des erreurs spécifiques rencontrées dans le déploiement du service. On verra que la modification principale a concerné la simplification du fichier web.xml.

Environnement de travail 

Un environnement de travail mal maitrisé est une des sources principales de problèmes dans la mise en œuvre des services web. C'est pour cette raison que je précise l'environnement utilisé pour réaliser mon test.
L'élément le plus important est l'utilisation à la fois en développement et en exploitation d'un JDK 1.7. L'utilisation d'une version différente (et surtout inférieure) nécessitera probablement de nombreuses adaptations.

J’ai utilisé un Eclipse Luna (version 4.4) for JEE Web developper sur un MacOs Yosemite. Le JDK utilisé pour la compilation est un JDK 1.7. Les tests ont été réalisés sur un WebSphere tournant dans une VM Virtual Box de type Fedora. Le runtime Java utilisé est le 1.7.

L’utilisation d’un JDK 1.7 est importante car elle a permis de s’affranchir de l’ajout de Jar dans la configuration du projet Eclipse. Le JDK 1.7 contient la description des interfaces JAX-WS et JAXB.
L’utilisation d’un runtime Java 1.7 pour WebSphere est importante car il existe un certain nombre de remarques sur le Web indiquant des problèmes quand le WebSphere est configuré avec une version 1.6 du runtime Java.

Création du projet

Cette étape fait référence au billet : http://jl2tho.blogspot.fr/2011/11/etape-2-du-tutorial-configuration-dun.html
Nous créons comme dans le billet, un projet de type Dynamic Web : c’est important pour avoir une structure de projet Web.

J’utilise comme server runtime le Tomcat 8.0 que j’utilise pour mes autres projets. La version du serveur d'application n'a pas grande importance, il ne sera pas utilisé autrement que pour en déduire l'environnement de compilation : ce qui a de l'importance c'est le runtime java 1.7 qu'il utilise.
Mon serveur Tomcat 8.0 utilise un runtime Java 1.7.
Pour éviter les problèmes, je vous recommande l'utilisation d'un serveur JEE configuré avec un runtime 1.7.

Lors de la création du projet, je force le « Dynamic Web Module version » pour prendre la 3.0.

Attention à ne pas utiliser une version antérieure avec WebSphere 8.5. Cela semble poser des problèmes.
C'est l'unique différence dans la phase de création d'un projet avec le billet d'origine.

Pour le test, on a coché l’option « Generate web.xml deployment descriptor ».

Une fois le projet Eclipse créé, je n'ai pas eu besoin d'ajouter aucun jar pour disposer des annotations JAX-WS et JAXB. Ces annotations sont incluses (depuis la 1.7) dans le runtime Java. Ce point est une différence vis à vis du tutoriel.

Configuration du web.xml

Par rapport au billet d'origine (http://jl2tho.blogspot.fr/2011/11/etape-2-du-tutorial-configuration-dun.html), c'est le contenu du fichier web.xml qui a été la source de tous les problèmes rencontrés lors de nos tests.

Dans WebContent/WEB-INF/web.xml, j’ajoutai, dans le tutoriel, la déclaration du web service en définissant un mapping d’url du type « /* ».
<servlet>
<servlet-name>WebContractHelpdesk</servlet-name>
<servlet-class>fr.j2ltho.webcontracthelpdesk.server.HelpdeskServiceBean</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WebContractHelpdesk</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>



Il n’est plus nécessaire de modifier le web.xml : la déclaration de la servlet est inutile. C’est même pour WebSphere une source d’erreur.

Avec la déclaration de ma servlet et de son mapping, j’avais initialement l’erreur suivante au démarrage de l’application:

[29/05/15 11:27:26:212 CEST] 00000087 WASSessionCor I SessionContextRegistry getSessionContext SESN0176I: Un nouveau contexte de session va être créé pour la clé d'application default_host/exContartFirst [29/05/15 11:27:26:294 CEST] 00000087 webapp        W com.ibm.ws.webcontainer.webapp.WebApp initializeStaticFileHandler SRVE0278E: Erreur lors de l'ajout du mappage de servlet --> /*.

La documentation WebSphere recommande l’ajout d’un fichier ibm-web-ext.xml dans le WebContent/WEB-INF du projet.

SRVE0278E: Erreur lors de l''ajout du mappage de servlet --> {0}. 
 Explication
 Il s'agit d'une erreur d'application.
 Action
 Définissez fileServingEnabled=false dans le fichier ibm-web-ext.xmi situé dans le dossier WEB-INF.

J'ai donc créé le fichier ibm-web-ext.xml (attention en WebSphere 8.5, c’est bien une extension xml qu’il faut utiliser) avec le contenu suivant :

<?xml version="1.0" encoding="UTF-8"?>
<web-ext xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd
version="1.0">
  <enable-file-serving value="false" />
</web-ext>


L’erreur s’est alors transformée en :

[29/05/15 14:07:30:667 CEST] 000000ff WSModuleDescr E   WSWS7027E: Les descriptions de service JAX-WS n'ont pas pu être générées correctement en raison de l'erreur suivante : javax.servlet.ServletException: WSWS7067E: Le servlet WebContractHelpdesk ne peut pas spécifier le caractère * comme masque d'URL.     at com.ibm.ws.websvcs.desc.WSModuleDescriptorImpl.updateEndpointURLS(WSModuleDescriptorImpl.java:1550)     at com.ibm.ws.websvcs.desc.WSModuleDescriptorImpl.buildJAXWSServices(WSModuleDescriptorImpl.java:1313)

On notera que cette seconde erreur survient à l’installation/déploiement du war.
Ce second message est clair : le pattern /* n'est pas apprécié par le module JAX-WS de WebSphere.

J'ai également constaté dans les exemples d'implémentation de la norme JAW-WS, que le servlet restait vide.

En conséquence, j'ai corrigé le web.xml afin d'obtenir cette version qui sera la finale

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>JaxWsContractFirst</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>


Cette version résout le problème et permet de se passer du fichier ibm-web-ext.xml qui est donc inutile pour notre test.

Vous noterez le numéro de version à 3.0 et sa cohérence avec le web_app_3_0.xsd. Ce point peut être important pour un serveur WebSphere 8.5 : on trouve beaucoup de billets indiquant des problèmes quand le numéro de version n'est pas 3.0.

Suppression des annotations EJB

Mon tutorial s’appuyait sur la création d’un EJB que l’on transformait ensuite en Web Service.
Ainsi dans le billet : http://jl2tho.blogspot.fr/2011/12/etape-4-annotations-jax-ws-et-jaxb-des.html on ajoute plusieurs annotations celles des EJB et celles spécifiques aux Services Web.


Pour simplifier ma configuration et la rendre plus portable (certain container WebService comme CXF ne supporte pas les EJB), j’ai supprimé les annotations suivantes :
  • @Remote au niveau de l’interface
  • @Stateles au niveau du bean implémentant l’interface.


ll s’agit d’une suppression simple : elles n’ont pas été remplacée par une autre annotation.


Déploiement dans WebSphere 8.5

Je n’utiliserai pas la fonctionnalité de test intégré à Eclipse, car je n'ai jamais eu la patience de configurer mon Eclipse pour qu'il fonctionne en développement avec WebSphere.
La solution repose, sur la production d'un war que je déploie ensuite dans WebSphere.


La première étape est la réalisation du war. Il est créé manuellement depuis Eclipse grâce à la fonctionnalité Export -> Export war.
Mon war porte le nom de mon projet Eclipse : JaxWsContractFirst.war


Pour réaliser le déploiement sur WAS 8.5, il faut se connecter à la console d'administration.
Attention ! Dans WebSphere, le port de la console d'administration diffère de celui des applications. Dans mon cas, l'url était : http://vmwebsphere:9060/ibm/console


Une fois connecté, on ouvre le nœud Application puis on clique sur le lien « Nouvelle application ».
Le panneau « Nouvelle application » apparaît.

On clique sur le lien « Nouvelle application d'entreprise ».
Le panneau « Préparation de l'installation de l'application » s'affiche.
Dans chemin de la nouvelle application, on sélectionne « Système de fichiers local » pour récupérer un fichier qui se trouve sur l'ordinateur qui exécute le navigateur.
Pour information, le système de fichiers éloigné fait référence aux disques du serveur sur lequel s'exécute le serveur WebSphere.
On utilise le bouton parcourir pour récupérer le war que l'on a créé plus tôt.



Si on clique sur Suivant, on arrive à l'écran du choix « Comment voulez-vous installer l'application ?».
Je sélectionne l'option  Raccourci - Ne demander que si des informations supplémentaires sont requises. »


Ensuite, on conserve le défaut jusqu’à l’étape 4 « Mappage des racines de contexte des modules Web » pour laquelle on complète la colonne « Racine du contexte » avec la valeur /wsContractFirst.
Cette valeur est libre à condition qu’il n’existe pas d’autres applications sur le serveur qui utilise la même valeur.





Ensuite, on conserve les valeurs par défaut jusqu’à la fin.
On termine en appuyant sur le lien « Sauvegarder ».


Si on retourne sur les « Applications d’entreprise WebSphere », on doit avoir dans la liste une application « JaxWsContractFirst_war » dont l’état est Arrêter (croix rouge).


Si on clique sur le lien « JaxWsContractFirst_war » on obtient la page « Application d’entreprise > JaxWsContractFirst_war.
Cette page doit impérativement contenir un pavé « Propriétés des services Web ».




Le lien « Publication des fichiers WSDL » permet la récupération du fichier WSDL et XSD. C’est le seul mécanisme pour avoir accès à la totalité du WSDL.




Attention, si le pavé « Propriétés des services Web » n’est pas présent, c’est qu’une erreur a eu lieu lors du déploiement.
Pour en savoir plus, vous pouvez aller dans le répertoire : /opt/IBM/WebSphere/AppServer/profiles/NatSystemWAS/logs/natsystem où natsystem est le nom du serveur.
Le fichier SystemOut.log contient les erreurs.


Il faut ensuite démarrer l’application depuis la page « Applications d’entreprise ».
Une fois, démarrée, la page http://vmwebsphere:9080/wsContractFirst/WebContractHelpdesk?WSDL doit renvoyer le WSDL.


Si vous obtenez, l’erreur suivante :
Error 404: com.ibm.ws.webcontainer.servlet.exception.NoTargetForURIException: No target servlet configured for uri: /wsContractFirst/WebContractHelpdesk


Cela peut vouloir dire que vous avez oublié de la démarrer ou qu’une erreur a eu lieu lors du démarrage.


Quelques erreurs de déploiement

Property {} is present but not specified in @XmlType.propOrder 


On a dans la log, une première erreur :

[01/06/15 13:56:28:883 CEST] 00000090 WSModuleDescr E WSWS7027E: Les descriptions de service JAX-WS n'ont pas pu être générées correctement en raison de l'erreur suivante : javax.xml.ws.WebServiceException: WSWS7054E: Le fichier WSDL (Web Services Description Language) n'a pas pu être généré pour la classe d'implémentation du service Web fr.j2ltho.webcontracthelpdesk.server.HelpdeskServiceBean en raison de l'erreur suivante : javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.ibm.ws.websvcs.wsdl.WASWSDLGenerator.generateWsdl(WASWSDLGenerator.java:238)
at org.apache.axis2.jaxws.description.impl.EndpointDescriptionImpl.generateWSDL(EndpointDescriptionImpl.java:2084)
at org.apache.axis2.jaxws.description.impl.EndpointDescriptionImpl.<init>(EndpointDescriptionImpl.java:449)


Suivi plus loin de :
Caused by: java.security.PrivilegedActionException: com.ibm.jtc.jax.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Property lastModification is present but not specified in @XmlType.propOrder
this problem is related to the following location:
at private java.util.Date fr.j2ltho.webcontracthelpdesk.server.QuestionMsg.lastModification
at fr.j2ltho.webcontracthelpdesk.server.QuestionMsg
at private fr.j2ltho.webcontracthelpdesk.server.QuestionMsg fr.j2ltho.webcontracthelpdesk.server.jaxws.CreateQuestion.inputQUESTION
at fr.j2ltho.webcontracthelpdesk.server.jaxws.CreateQuestion



La propriété indiquée (en l’occurence lastModification) de la classe indiquée (QuestionMsg) possède une annotation @XmlElement mais n’est pas présente dans la liste propOrder de l’annotation @XmlType de la classe.


Test avec SOAP UI

Soap UI dispose d’une fonctionnalité « New SOAP project » qui permet à partir d’un « Initial WSDL », la génération d’un jeu de requête pur ce WSDL.
La fonctionnalité permet de spécifier une URL de WSDL, si dans notre cas, on précise l’URL suivante : http://vmwebsphere:9080/wsContractFirst/WebContractHelpdesk?WSDL


On aura une erreur :


Pour importer, le WSDL, il faut le récupérer depuis la console d’administration (comme décrit précédemment) puis le dezipper dans un répertoire.


Ensuite, on pointe sur le fichier récupéré.
Attention à changer l’url ! Dans mon cas, c’était http://vmwebsphere:9080/wsContractFirst/WebContractHelpdesk.


Conclusion

Ce billet complète la série sur les Web Services en l'actualisant dans un contexte WebSphere 8.5 et un JDK 1.7



0

Ajouter un commentaire

Archives du blog
S'abonner
S'abonner
Libellés
Qui êtes-vous ?
Qui êtes-vous ?
Ma photo
Directeur Technique d'un éditeur de logiciel français
Links
Messages les plus consultés
Messages les plus consultés
Chargement en cours