Déploiement de Silverpeas sur JOnAS

1,710 views

Published on

Déploiement de Silverpeas sur JOnAS

  1. 1. Silverpeas Portage sur JOnAS
  2. 2. Plan de la présentation ● Silverpeas ○ Architecture ○ Installation ● Contexte du portage ○ JBoss 5 ○ JOnAS ● Démarche ● Mise en œuvre ● Problèmes et solutions 2
  3. 3. Silverpeas ● Présentation ○ Plate-forme collaborative ○ Spécialisation ● par les utilisateurs ● orienter son utilisation 3
  4. 4. Silverpeas ● Architecture ○ Application Web ○ Composants EJB 2.x ○ Messaging JMS ○ Accès base de données ● PostgreSQL ○ Composants intégrés ● JCR – JackRabbit ● JspWiki ● ... 4 JCR
  5. 5. Silverpeas ● Déploiement mvn clean install ○ Scripts d'installation ./appBuilder.sh ./SilverpeasSettings.sh ● Basé sur Maven ./dbBuilder.sh ○ Archive standard ● EAR ○ Ressources déportées ● Répertoire $SILVERPEAS_HOME ○ Serveur d'applications ● JBoss 4.0.3 5
  6. 6. Portage ● Besoins internes ● Modernisation des outils ○ JBoss 4 ● Distribution community ● Version 4.0.3 ● Mise à jour de certaines librairies ○ Migration vers JBoss 5 ● Distribution community ● Version 5.1.0 ● Utilisation des librairies standard 6
  7. 7. Portage ● Besoins clients ○ S'adapter aux contextes des clients ○ Administration Suisse ● Migration de Borland ES vers Jonas ○ ... 7
  8. 8. Démarche ● Installation standard ○ JBoss 4 ○ PostgreSQL ○ EAR ● Installation du serveur d'application ○ Déclaration des ressources ● Configuration de Silverpeas ○ Fichiers spécifiques dans l'EAR ○ Noms des ressources (properties) ● Déploiement ○ EAR 8
  9. 9. Démarche ● Ressources ● Accessibles via JNDI ● Déclarée dans le serveur d'applications ○ JMS ● Queues ○ queue/notificationsQueue ○ queue/statisticsQueue ● ConnectionFactory ○ java:/XAConnectionFactory ○ Datasource ○ java:/Silverpeas 9
  10. 10. Démarche ● Configuration EAR ○ Recherches des fichiers spécifiques ● War : jboss-web.xml ● Jar (EJB) : jboss.xml ○ Pour JBoss 5 ● Rien à faire ○ Pour Jonas ● Transformation en jonas-ejb-jar.xml 10
  11. 11. Mise en œuvre ● JBoss 5 ○ Datasource ● Pas de changement de format ● silverpeas-ds.xml ○ JMS ● Format JBossMQ => JBoss Messaging ● silverpeas-destinations-service.xml <?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> ... </server> 11
  12. 12. Mise en œuvre ● JOnAS ○ Datasource ● Déclaration conf/jonas.properties jonas.service.dbm.datasources HSQL1, Silverpeas ● Configuration conf/Silverpeas.properties datasource.name Silverpeas datasource.url jdbc:postgresql://localhost:5432/SilverpeasV5 datasource.classname org.postgresql.Driver datasource.username postgres datasource.password postgres datasource.mapper rdb.postgres 12
  13. 13. Mise en œuvre ○ JMS ● joramAdmin.xml ... <Queue name="notificationsQueue"> <freeReader/> <freeWriter/> <jndi name="notificationsQueue" /> </Queue> <Queue name="statisticsQueue"> <freeReader/> <freeWriter/> <jndi name="statisticsQueue"/> </Queue> 13
  14. 14. Mise en œuvre ○ Utilitaire jboss2jonas ● Uniquement avec JOnAS 4 ● Compatible avec JOnAS 5 (ou presque) for f in $SILVERPEAS_HOME/jar/silverpeas-jonas.ear/*.jar do echo Converting $f $JAVA_HOME/bin/jar xf $f META-INF/jboss.xml META-INF/ejb-jar.xml jboss2jonas --ejb-jar META-INF/ejb-jar.xml --jboss META-INF/jboss.xml > META-INF/jonas-ejb-jar.xml $JAVA_HOME/bin/jar uf $f META-INF/*.xml rm META-INF/*.xml done 14
  15. 15. Mise en œuvre ○ Traduction des noms JNDI ● Pas de contexte java: dans JOnAS sed -i 's/java://' META-INF/jboss.xml Cd $SILVERPEAS_HOME/properties/com/stratelia/webactiv/util/ sed -i 's/java://' jndi.properties 15
  16. 16. Problèmes et solutions ● JBoss 5 ○ Contrôle XML plus strict ● web.xml ○ Fichiers Spring ● Déplacer de /WEB-INF/ ● Avec 5 RC1 ○ Librairies incompatibles ● Avec 5 RC1 ○ Xerces ● Bug JBoss référencé 16
  17. 17. Problèmes et solutions ● JOnAS 5 ○ jboss2jonas ● Svn : org.ow2.jonas.migration.jboss.Migrate ● Compilation et exécution avec un JDK 1.4 ● Ajout du XML namespace (sed) <jonas-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.objectweb.org/jonas/ns" xsi:schemaLocation="http://www.objectweb.org/jonas/ns http://jonas.ow2.org/ns/jonas-ejb-jar_4_8.xsd"> … </jonas-ejb-jar> 17
  18. 18. Problèmes et solutions ○ Nom des EJB ● ejb/Xxx n'est pas un bon id XML sed -i 's/ejb//ejb_/' META-INF/ejb-jar.xml sed -i 's/ejb//ejb_/' META-INF/jboss.xml 18
  19. 19. Problèmes et solutions ○ Anomalie JOnAS / Hotspot ● Stubs EJB 2 java.lang.VerifyError: ... Stack size too large ● Démarrage avec JRockit ○ Option -Xverify:none ● Démarrage avec J9 ○ Version 6SR3 ou 6SR8 19
  20. 20. Problèmes et solutions ○ Logging ● Référence circulaire SLF4J – JCL java.lang.StackOverflowError at sun.reflect.Reflection.getCallerClass(Native Method) at java.lang.ClassLoader.getCallerClassLoader(ClassLoader.java:1359) at java.lang.Class.getMethod(Class.java:1602) at org.apache.commons.logging.LogFactory.directGetContextClassLoader(LogFactory.java:825) at org.apache.commons.logging.LogFactory$1.run(LogFactory.java:791) at org.apache.commons.logging.LogFactory.getContextClassLoader(LogFactory.java:788) at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:383) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:664) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:664) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:664) ... ● Gestion du classloader ○ conf/classloader-default-filtering.xml <class-loader-filtering xmlns="http://org.ow2.jonas.lib.loader.mapping"> <default-filters> <filter-name>org.apache.commons.digester.*</filter-name> <filter-name>org.slf4j.*</filter-name> </default-filters> </class-loader-filtering> 20
  21. 21. Conclusion ● Problèmes rencontrés ○ EJB 2 ● Il faut les virer ! ● Travail en cours ○ JBoss 5 ● Intégration en standard pour Silverpeas 5.x (5.5 ?) ○ JOnAS 5 ● Problèmes de scripts JSP ● Lié à Tomcat 6 21
  22. 22. Conclusion ● Remerciement ○ Emmanuel Hugonnet ● Assistance ● Séances de pair deploying ● Références ○ http://repository.silverpeas.org/ ○ http://blog.alexis-hassler.com/ ● Récit plus détaillé 22

×