Archive

Posts Tagged ‘xwiki’

Test de Glassfish Preview

June 2nd, 2009 No comments

Depuis quelques jours (heures ?), Glassfish v3 preview est disponible. Comme Alexis est bien mieux placé que moi pour en parler, je vous engage à lire cet article pour la description de cette version. Au travers de ce petit billet, je résume ma toute première utilisation de Preview. Pour cela, mon cas d’utilisation est tout simple, déployer XWiki en version 1.8 dans un premier temps, mais au travers d’une source de connexions JDBC. Cas d’utilisation donc très simple.

Mes remarques, en vrac :

  • Nécessite un JDK 1.6 (java -version pour vérifier). Utilisateur d’OS X, vous devez définir JAVA_HOME et PATH, la version par défaut étant encore en 1.5
  • La commande start-domain ne met que quelques secondes à rendre la main ! Néanmoins, la console d’administration n’est pas disponible avant d’autres longues secondes :). Pour rappel, la version 3 de Glassfish est construit autour d’OSGI, un système orienté composant.
  • L’interface d’administration est proche de la version 2.1, on s’y retrouve donc assez facilement. Néanmoins, il y a une différence notable dans la gestion des applications. Il faut que je creuse le sujet.
  • Il faut que je vérifie, mais lors de la configuration du pool de connexions JDBC, Glassfish me demandait un restart, que j’ai fait. J’avoue que cela me dérange un peu si c’est vraiment nécessaire, c’est quand même une opération simple !
  • Temps d’arrêt très rapide, plutôt appréciable.
  • J’en suis presque surpris (pas taper), mais le déploiement de XWIki est OK du premier coup ! Très bon signe !
  • L’URL JMX n’est plus affiché lors du démarrage du domaine, c’est bien dommage !
  • A priori pas de changements sur la taxinomie (namespace) des MBeans, ce qui est plutôt plaisant.

Bref, premier contact plutôt positif, même si j’ai constaté quelques petits soucis dans l’interface web, mais rien de bien méchant. Vivement la première version de production !

Categories: Java, Sysadmin Tags: ,

Utiliser une datasource pour XWiki

May 11th, 2009 No comments

Actuellement, la configuration de la base de données utilisée par XWiki est directement effectuée au travers du fichier hibernate.cfg.xml du répertoire WEB-INF de l’application. Néanmoins, comme ce week end je voulais tester un peu de monitoring au niveau du serveur d’application, je me suis penché sur la question de comment utiliser un pool de connexion JDBC définit au niveau du serveur d’application en lieu et place de celui créer directement par hibernate.

Dans glassfish :

  • Dans l’onglet Resources, Connections Pools créer une nouvelle ressource du type javax.sql.ConnectionPoolDataSource en sélectionnant le driver approprié
  • De la même manière, créer une JDBC Resources, par exemple jdbc/xwiki
  • Puis finalement dans le fichier hibernate.cfg.xml, utiliser la configuration suivante
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="connection.datasource">jdbc/xwiki</property>
    <mapping resource="xwiki.hbm.xml"/>
    <mapping resource="feeds.hbm.xml"/>

Categories: Java Tags: ,

XWiki, c’est décidemment magique

December 15th, 2008 No comments

Encore un billet dans la série XWiki, mais décidemment, cet outil me rend vraiment beaucoup de services. Ma dernière oeuvre (sic) consiste en la création d’une mini gestion des membres de l’association (GUSES, pour ceux qui ne le savent pas déjà !). Nous utilisons déjà Galette pour gérer les cotisations, mais malheureusement il n’y a rien (à ma connaissance) pour y brancher des hooks, dans mon cas ajouter l’utilisateur à la liste de diffusion de l’assocation.

Bref, quel rapport avec XWiki me direz vous ? Et bien, gràce à la bibliothèque SSH Trilead pour Java j’ai écrire une classe Groovy qui me permet d’exécuter des commandes (au sens unix) à distance. Et via quelques scripts shell et perl, il m’est désormais possible lors de l’ajout d’un utilisateur dans XWiki, d’automatiquement l’ajouter dans la base Galette, mais aussi l’inscrire à la liste de diffusion. D’autant plus que ces deux opérations étaient jusqu’alors réalisé par deux personnes différentes, n’arrangeant rien.

Un petit d’exemple d’utilisation de ma classe Groovy (sshhelper), en Groovy :

def sshHelper = new SshHelper()
sshHelper.openSession("hostname", "4222", "asyd", "/Users/asyd/.ssh/id_dsa", "password");
println sshHelper.runCommand("echo OK");

Le même utilisable directement depuis XWiki :

#set ($sshHelper = $xwiki.parseGroovyFromPage("Users.SshHelper"))
$sshHelper.openSession("hostname", "22", "user", "/Users/asyd/.ssh/id_dsa", "password")
#set ($buffer = $sshHelper.runCommand("echo OK")

Il est à noter que j’ai eu des problèmes (avec la bibliothèque Trilead) d’authentification en login / mot de passe vers des serveurs Linux (Debian) alors que cela fonctionne vers des serveurs Solaris. Cependant, l’authentification par clé a fonctionné vers les deux OS.

Categories: Business tools, Sysadmin Tags: ,

XWiki : mes retours

December 8th, 2008 No comments

À la demande de Vincent, je me lance dans un retour d’expérience sur XWiki, néanmoins même si cela fais quelques mois que j’utilise le produit, je n’ai passé que quelques jours à l’utiliser (enfin plutôt à le programmer) de manière avancée, donc à prendre avec un peu de recul. De plus, j’ai mis un certain temps à écrire ce billet, que j’ai repris de nombreuses fois, donc la trame n’est pas forcément fameuse, je m’en excuse par avance.

Commençons par le début : l’installation. Alors, cette étape est très facile, néanmoins il n’est pas toujours facile de bien comprendre les différentes versions, ce qu’elles font, etc. Pour ma part, ce billet ne parle que du produit XWiki Enterprise, en version 1.5 et 1.6, ne connaissant pas les autres produits.

Une fois le produit installé, la prise en main est assez rapide, et assez intuitive. Néanmoins à mes débuts (version 1.5 donc) j’ai été quelque peu déçu par la syntaxe assez pauvre, surtout pour moi qui utilise beaucoup dokuwiki, où la syntaxe permet par exemple de gérer l’alignement d’une cellule au sein d’un tableau. Cependant, la version 1.6 apporte de nouvelles syntaxes (dont une compatibilité avec des syntaxes répandues, comme celle de mediawiki), donc cela est en bonne voie.

Concernant mon expérience, j’utilise principalement XWiki pour sa partie développement d’application, c’est à dire la capacité de créer des petites applications (métier ? j’exagère peut être un peu, encore que…) à l’intérieur de XWiki, sans jamais modifier une seule ligne de code de XWiki. Ces développements s’effectuent via les capacités de scripting velocity, et d’extension via Groovy. C’est un vrai bonheur, en effet je ne connais peu (ou pas) d’autres moyens simples de développer rapidement une petite application Web, sans me préocccuper du rendu, du modèle, etc.

Coté produit, la partie Wiki pure est relativement bien documenté, avec une page sur la syntaxe très complète (mais pas tout à fait exhaustive), mais un petit regret concernant la documentation associé à la partie développement. Il existe plein de choses qui ne sont pas (encore) documentés, notamment pour les attributs lors de l’ajout d’une propriété à un objet. Mais après avoir discuté avec Jean-Vincent de XWiki, il semblerais que la partie dev ne soit pas la plus utilisée, ce qui peut expliquer… Et cela est peut-être liée ou pas, mais l’impossiblié de supprimer une propriété existante est vraiment pénible. Cela rend la création des objets assez périlleuses, et il faut savoir exactement à l’avance ce qu’on a besoin de mettre dans les objets 🙂

Pour finir avec la documentation,  XWiki est très bien documenté d’une manière générale, mais il n’est pas facile de s’y retrouver entre les différentes sources de documentation. Je pense qu’il manque de tutoriaux, celui-ci (création d’une application de FAQ) est vraiment bien, il en faudrais d’autres selon moi. Cependant, la communauté (que ce soit liste de diffusion ou IRC) étant vraiment très réactive, et d’une aide précieuse, cela compense un peu le fouillis (je vais me faire gronder par les gens de XWiki 🙂 dans la documentation.

Un autre bémol réside dans la customisation graphique. Bien que je n’ai pas regardé de prêt, il me semble difficile, voire très difficile, de modifier la forme de XWiki. Certes, il est très simple de modifier son apparence par CSS, mais faire des modifications plus profondes me semble vraiment très difficile.

Côté technique, un des plus grands reproche concerne la gestion de la mêmoire. Il existe par exemple une fonctionnalité très intéressante permettant l’import/export du contenu du wiki sous forme d’un xar (Xwiki ARchive) mais il semblerais que le moteur à besoin de tout monter en mémoire avant de mettre à disposition le fichier d’archive, ce qui est assez embêtant quand il y a un certain nombres de pages. De plus, du fait (enfin c’est mon interprétation) de l’utilisation d’hibernate, XWiki procède quelques fois à de *très* grosse requête SQL. Par exemple dans le cas d’une suppression d’une page avec des commentaires, l’ensemble des données (et donc pas juste l’id de la page) sont passées dans la requête, ce qui nécessite donc de paramètrer son serveur SQL pour accepter des requêtes SQL allant jusqu’à plusieurs dizaines de MB..

En conclusion, pour ceux qui ne l’ont pas encore compris, et malgré ces quelqus points négatifs, je suis devenu un très grand fan de XWiki ! Mais cela ne m’empêche pas de rester fan de dokuwiki, considérant les deux comme complémentaires. Son développement avancant à grand pas, avec des fonctionnalités probablement inédites (import de documents MS Office, OpenOffice.org) XWiki est en passe de devenir le leader (si ce n’est déjà pas le cas) sur le marché des wikis d’enterprises.

Categories: Business tools Tags:

Extensions Velocity dans XWiki

November 17th, 2008 No comments

Hier, je cherchais à manipuler une liste en velocity, mais malheureusement en suivant l’exemple de cette page, cela ne fonctionnais pas. Je pensais que les extensions n’étaient pas utilisées par xwiki, mais en fait elles sont disponibles, comme l’indique le fichier META-INF/plexus/components.xml, contenu dans xwiki-core-velocity (donc si jamais vous voulez rajouter d’autres extensions, c’est donc ici que cela se passe).

Noter que cette information est désormais disponible sur la page DevScripting.

Categories: Business tools Tags:

Utiliser groovy dans une page XWiki

October 31st, 2008 2 comments

Parce que je n’ai pas trouve facilement, voici un exemple d’utilisation d’un script groovy a l’interieur d’une page XWiki.

#set ($address = "172.20.12.61")
 
IP Address: $address
 
<%
 
import java.net.InetAddress;
 
vcontext = context.get("vcontext");
hostname = vcontext.get("address");
 
InetAddress addr = InetAddress.getByName(hostname);
hostname = addr.getHostName().toLowerCase();
 
%>
 
Hostname: $hostname

Du coup, j’en ai profiter pour rajouter cette page dans la documentation XWiki. Et merci a Vincent pour sa patience 🙂

Categories: Business tools, Java Tags: ,

Debuter avec xwiki

October 28th, 2008 1 comment

Si suite a un precendent post, vous etes interesse par le scripting dans XWiki, voici selon moi les deux pages par ou debuter :

Et bien entendu, mon post sur bugzilla et xwiki, meme si c’est juste un petit test, cela montrer les possibilites.

Categories: Business tools, Java Tags: ,

xwiki, groovy, velocity: c’est magique !

June 25th, 2008 10 comments

Il y a peu de temps, j’ai mentionné la joie de ma découverte de xwiki. Quelques jours plus tard, et surtout après quelques heures de geekage intensif (et de lecture de documentation de velocity, hibernate, groovy, xwiki…) je viens de réussir à faire ce que je voulais ! À savoir avoir une macro permettant depuis mon xwiki d’aller récupérer des informations depuis un bugzilla à partir du numéro du bug. Concrêtement, dans ma page, j’utilise le code suivant :

#showBug(“123”)

pour obtenir le résultat suivant :

  • #226: Add a property to deactivate email verification
  • #231: Implement the Request Certificate uc

la couleur est dépendante du statut du bug. Voilà, c’est peut être pas grand chose, mais je suis vraiment impressionné par la rapiditié de développement que fournit xwiki au travers de velocity/groovy. Note : le code est disponible en attachement, néanmois je sais que ce n’est pas très optimisé, je vais le faire évoluer.

Categories: Business tools, Java Tags: ,

xwiki, loin d’être un simple wiki

June 16th, 2008 1 comment

 

Bon, j’avoue, ce post est plus une pénitence pour moi qu’une véritable révélation. Il se trouve que pour mon site devel.asyd.net, qui hébergera à terme quelques projets persos (et éventuellement d’autres), je cherchais un outil pouvant plus ou moins faire office de forge. Gforge, bah, pas de ça chez moi, on est plus dans les années 1990. J’aurais bien voulu tester libresource pour de vrai, mais pour je ne sais quelle obscure raison, je n’ai jamais vraiment réussi la phase complète d’installation (bon, j’avoue aussi ne pas avoir vraiment insisté). Après quelques utilisations (mais très simplissimes) de xwiki, je m’étais dis que cela pourrait être l’occasion de tester vraiment xwiki.

La chance (et la motivation ?) aidant, j’ai (finalement) découvert la vraie puissance de xwiki. Notamment par la gestion des macros.

Mon idée étant de faire une mini forge très simple, je voulais juste un ensemble de projets (qui se traduit par la notion de spaces dans xwiki) avec des droits spécifiques, et un ensemble de pages respectant une charte, comme par exemple la page d’accueil d’un projet. Et pif paf, sur quoi je tombe ? Des macros, me permettant de créer très facilement un rendu pré-défini. Cela me permet donc par exemple de créer ce genre de page, identique à chaque projet, en une seule ligne (oui, la gestion du nom de projet est automatique, via la notion de spaces). En une seule édition, je modifie l’ensemble des (futurs) projets hébergés. Et du coup, je commence maintenant à imaginer la foule des possibilités offertes par les macros (et je n’ai pas encore commencer à regarder la gestion des formulaires ni des gabarits.) Plus sérieusement, je commence seulement à appréhender la souplesse et la puissance de xwiki. Les macros peuvent par exemple être écrites en velocity, mais également en groovy. On peut même créer ses propres plugins directement en java…

Categories: Business tools, Java Tags: ,