Comme il n'y a pas de procédure prévue pour installer Silverpeas sur JBoss 5, je vais partir de mon installation sur JBoss 4, je vais récupérer les éléments (datasource, JMS, ear) et les modifier pour les adapter à JBoss 5.
Préparation de l'installation
J'ai déjà fait l'essentiel de la préparation lorsque j'ai fait mon déploiement sous JBoss 4. En effet, j'ai déjà ma base de données ainsi que le répertoire principal de Silverpeas (/opt/sp/silverpeas). Il me reste surtout à installer JBoss 5.cd ~/tmp/silverpeas wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip/download cd /opt/silverpeas tar -xf ~/tmp/silverpeas/jboss-5.1.0.GA.zipDans ma nouvelle installation, je n'ai plus besoin des variables d'environnement de Maven, je conserve celle de Silverpeas et je mets à jour celle de JBoss
export JBOSS_HOME=/opt/sp/jboss-5.1.0.GA/
export SILVERPEAS_HOME=/opt/sp/silverpeas
export JAVA_HOME=export JAVA_HOME=`update-java-alternatives -l | awk '{print $3}'`Je finis enfin par préparer mon installation supprimant les configurations dont je n'ai pas besoin et en créant un répertoire silverpeas dans le répertoire de déploiement ; ceci me permet de mettre tous les fichiers de silverpeas au même endroit.rm -r $JBOSS_HOME/server/all rm -r $JBOSS_HOME/server/minimal rm -r $JBOSS_HOME/server/web rm -r $JBOSS_HOME/server/standard mkdir $JBOSS_HOME/server/default/deploy/silverpeas
Configuration des ressources
Je commence par le plus facile : la datasource peut être conservée telle quelle, le format n'a pas changé. Je peux donc copier le fichier silverpeas-ds.xml dans le nouveau répertoire deploy/silverpeas.Pour les ressources JMS, les choses sont un peu plus complexes puisque le format de configuration a changé, JBoss 4.0 utilisait JBossMQ alors que JBoss 5 utilise JBossMessaging. Le nouveau fichier silverpeas-destinations-service.xml, que je mettrai dans le répertoire deploy/silverpeas, a le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=notificationsQueue" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute-name="ServerPeer"> jboss.messaging:service=ServerPeer </depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=statisticsQueue" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute-name="ServerPeer"> jboss.messaging:service=ServerPeer </depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> </server>Il me reste enfin à convertir le contenu de server.xml, que j'avais si peu apprécié dans l'installation standard. Pour refaire la même manipulation désagréable, et comme j'ai un système d'exploitation qui me propose une telle fonctionnalité, je vais utiliser des liens symboliques.
ln -s $SILVERPEAS_HOME/data/website $JBOSS_HOME/server/default/deploy/silverpeas/website.war ln -s $SILVERPEAS_HOME/data/weblib $JBOSS_HOME/server/default/deploy/silverpeas/weblib.warJe pense que mon environnement est prêt, je vais pouvoir déployer mon application. Ah non, je vais tout de même vérifier le script de démarrage. Est-il adapté à JBoss 5 ?
#!/bin/sh # Script Silverpeas pour JBoss 4 cd $JBOSS_HOME/bin JBOSS_CLASSPATH=$SILVERPEAS_HOME/properties export JBOSS_CLASSPATH sh run.sh &Cela semble pas mal, du moins pour une utilisation locale. Mais comme je suis sur un serveur et je n'ai pas installé les couches graphiques, je devrai tester à distance. Le problème, c'est que depuis la version 4.2 JBoss est en écoute uniquement sur localhost ; je vais donc ajouter un paramètre au lancement pour remédier à cela.
# ... # Correction pour JBoss 5 sh run.sh -b 0.0.0.0 &
Déploiement de l'application
Le déploiement paraît assez simple, puisqu'il suffit de copier le répertoire silverpeas.ear au bon endroit, ou d'y faire un lien symbolique, puis de démarrer le tout.ln -s $SILVERPEAS_HOME/jar/silverpeas.ear $JBOSS_HOME/server/default/deploy/silverpeas/ $SILVERPEAS_HOME/bin/silverpeas-start-jboss.shComme je le craignais, le premier démarrage est un échec. Il y a plusieurs problèmes dans le fichier web.xml car JBoss 5 est plus tatillon que JBoss 4. Il faut donc :
- corriger le schemaLocation :
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd", - retirer les attributs
xmlns="", - retirer les éléments
<description>dans les<servlet>et dans<init-param>, - mettre les éléments de
<servlet>dans l'ordre suivant :<display-name>,<servlet-name>,<servlet-class>,
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/spring-hibernate.xml /WEB-INF/config/spring-notification.xml /WEB-INF/config/spring-checker.xml /WEB-INF/config/spring-datasource.xml </param-value> </context-param>
<servlet> <servlet-name>JcrInitializer</servlet-name> <servlet-class> com.silverpeas.jcrutil.servlets.RepositoryAccessServlet </servlet-class> <init-param> <param-name>configuration</param-name> <param-value> /WEB-INF/config/spring-jcr.xml /WEB-INF/config/spring-jdbc-datasource.xml /WEB-INF/config/spring-pdcPeas.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>La suite est un peu plus délicate et demande quelques recherches. Par exemple, lorsque l'exception ci-dessous apparaît, ça vient de la librairie icu4j, dont la version utilisée n'est pas compatible avec JBoss 5. J'ai essayé avec une version récente (icu4j-4_2_1.jar) et l'erreur ne se produit plus au démarrage.
2010-02-12 15:06:35,049 INFO [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) Added bean(jboss.j2ee:ear=silverpeas.ear,jar=xom-1.0.jar,name=xom-1.0,service=EJB3) to KernelDeployment of: xom-1.0.jar 2010-02-12 15:06:43,660 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (HDScanner) Error installing to Real: name=vfsfile:/opt/sp/jboss510/server/default/deploy/silverpeas/silverpeas.ear/ state=PreReal mode=Manual requiredState=Real org.jboss.deployers.spi.DeploymentException: Error deploying silverpeas.ear: invalid constant type: 60 at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:196) at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:99)Enfin, après tous ces efforts, je tombe sur un bug référencé chez JBoss. La solution qui consiste tout simplement à supprimer xerces.jar de silverpeas.ear/lib fonctionne. L'application se déploie et semble fonctionner parfaitement : je peux me connecter, j'ai la page d'accueil, je peux utiliser sans problème l'espace personnel.
Conclusion
Je ne serais pas honnête si je disais que cette installation est une réussite complète. La plupart de mes tests ont fonctionné, mais je n'ai pas réussi à utiliser la fonctionnalité de wiki : page blanche, pas de log. Arghh ! Trop dur pour moi, je laisse la main à l'équipe de Silverpeas.A part le wiki, Silverpeas est opérationnel ; on peut profiter de 95% des fonctionnalités du portail sur une plateforme de déploiement moderne. Il ne serait d'ailleurs pas étonnant que JBoss 5 devienne le serveur par défaut de Silverpeas dans les prochaines semaines, à moins que du coté de Grenoble, on préfère attendre la sortie de JBoss 6 qui devrait corriger le problème de Xerces.
1 commentaires:
Nous essayons de corriger ces problèmes pour la RC2. Cela devrait être beaucoup plus simple :o)
Merci pour ces retours constructifs.
Emmanuel
Enregistrer un commentaire