Titre:Installation de WebObjects 5.3 Version:2.1
Dernière modification: 2011/02/17 11:00
Auteur: Aurélien Minet <aurelien dot minet at cocktail dot org>
Statut:version finale
Licence:Creative Commons - by-nc-sa 2.0
( http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ )
Remarques:
• les pré-requis sont de connaître le shell et ce qu'est une JVM, d'avoir la maîtrise de l'OS utilisé.
• le document est "orienté" Linux et Bash mais la procédure d'installation reste applicable à d'autres Unix (ils ont besoin de la JVM 1.5 de Sun)
• rien dans ce document n'est supporté par Apple
• ce document dans sa globalité n'est pas spécifique Cocktail (sauf pour certains jar dans Extensions)
• au niveau de la typographie: le code, les lignes de commandes, le contenu des fichiers sont en italique
Installation de WebObjects 5.3
Versions:
____
date
____n°version commentaires 10/07/2008 0 brouillon
13/08/2008 1.0 Version initiale
16/06/2009 1.2 corrections mineurs sur les chown
06/09/2010 2.0 Mise à jours générale suite au passage a Java 1.5.
Ajout/modification de la procédure pour Max OS X Leopard et Snow Leopard, ajout des .plist
16/02/2011 2.1 Corrections, reformulation, clarification sur la version de Java et du driver jdbc a utiliser.
Les version au format X.y.z ne sont pas listées, elles ne contiennent que des corrections (coquilles ....). L'information contenue ne change pas.
Objectif:... 5
Introduction: ... 5
1. Le runtime ... 6
2. UNIX ... 7
Etape n°1:... 7
Etape n°2:... 7
Etape n°3:... 8
3. OS X Leopard et Snow Leopard ... 9
Leopard Desktop et Snow Leopard ... 9
Leopard Server... 9
Remarque... 10
Conclusion ... 11
Objectif:
• savoir "installer"/utiliser le runtime sur UNIX
• gérer l'exécution des 2 "daemons" WebObjects
• changer de version
Introduction:
Apple ne vend plus WebObjects comme ce fut le cas jusqu'à la version 5.2, il est fournit avec OS X Server (payant) jusqu'à la version Leopard et avec XCode (gratuit).
La licence XCode permet d'installer/distribuer WebObjects pour le déploiement d'applications réalisées avec ce dernier, extrait de la Licence:
En accord avec le conditions générales de cette licence, vous pouvez utiliser,
installer et permettre l'accès à d'autres personnes au logiciel de déploiement WebObjects compris dans le logiciel de développement pour déployer des programmes d'application développés grâce au logiciel d'Apple WebObjects.
(Licence complète dans le package sous forme de pdf)
La problématique suivant les systèmes d'exploitation :
OS X Tiger installer XCode 2.4
OS X Tiger Server déjà installé
OS X Leopard / OS X Snow Leopard installation manuelle
OS X Leopard Server déjà installé mais en 5.4 donc downgrader en 5.3 mais conserver la 5.4 pour les updates
tout UNIX disposant d'une JVM 1.4.2 (/1.5)
de Sun installation manuelle
autre OS disposant d'une JVM 1.4.2 (/1.5)
de Sun installation manuelle possible, fonction des
spécificités de l'OS OS disposant d'une JVM 1.4.2 (/1.5) mais
pas de Sun
cela est bien sur fonction des spécificités de l'OS et de la compatibilité de la JVM.
Un fonctionnement correct n'est pas impossible mais risque d'être difficile.
Ainsi l'installation de WebObjects 5.3 sous Unix est le cœur de ce document mais la problématique OS X Leopard (10.5) est également abordée.
1. Le runtime
Le runtime WebObjects correspond à:
/System/Library/Frameworks/
JavaDTWGeneration.framework JavaDirectToWeb.framework JavaEOAccess.framework JavaEOApplication.framework JavaEOControl.framework JavaEODistribution.framework JavaEOGeneration.framework JavaEOInterface.framework JavaEOInterfaceCocoa.framework JavaEOInterfaceSwing.framework JavaEOProject.framework
JavaEORuleSystem.framework JavaEOTool.framework
JavaFoundation.framework JavaJDBCAdaptor.framework JavaJNDIAdaptor.framework JavaWOExtensions.framework JavaWOJSPServlet.framework JavaWebObjects.framework JavaWebServicesClient.framework JavaWebServicesGeneration.framework JavaWebServicesSupport.framework JavaXML.framework
/System/Library/PrivateFrameworks/JavaMonitor.framework /System/Library/PrivateFrameworks/EOPlaceholders.framework /System/Library/WebObjects/JavaApplications
/System/Library/WebObjects/WODocumentRoot /Library/WebObjects/Extensions/axis-ant.jar /Library/WebObjects/Extensions/axis.jar
/Library/WebObjects/Extensions/commons-discovery.jar /Library/WebObjects/Extensions/commons-logging.jar /Library/WebObjects/Extensions/jaxrpc.jar
/Library/WebObjects/Extensions/log4j-1.2.8.jar /Library/WebObjects/Extensions/saaj.jar
/Library/WebObjects/Extensions/wsdl4j.jar /Library/WebServer/Documents/WebObjects
(cette liste peut contenir quelques jar, répertoires en plus et/ou non WebObjects) Pour obtenir le runtime il suffit d'installer XCode.
Ensuite le principe est d'avoir l'arborescence correspondant à /System dans $NEXT_ROOT et /Library dans $NEXT_ROOT/Local.
NEXT_ROOT est une variable d'environnement utilisée par les scripts pour trouver les éléments du runtime et construire le CLASSPATH.
Ainsi NEXT_ROOT correspond au répertoire dans lequel il faudrat copier l'arborescence.
2. UNIX
L'installation sous Unix est générique, WebObjects 5.X n'est que du Java. WebObjects peut fonctionner sous Solaris, FreeBSD, Linux du moment qu'un JRE 1.5 est disponible (une version de Sun).
Etape n°1:
Il faut :
• installer la JVM 1.5 d'Oracle (anciennement Sun), attention: ne pas avoir gcj dans le path, n'y d'OpenJDK !
• récupérer les éléments du runtime ( webobjects_5.3.3.tgz )
• décompresser l'archive, dans /opt par exemple, un répertoire webobjects_5.3.3 est créé
• positionner la variable d'environnement NEXT_ROOT : export NEXT_ROOT=/opt/webobjects_5.3.3
le runtime WebObjects est maintenant utilisable.
Pour le déploiement il faut lancer les 2 daemons:
• wotaskd:$NEXT_ROOT/Library/WebObjects/JavaApplications/wotaskd.woa/
wotaskd -WOPort 1085
• JavaMonitor: $NEXT_ROOT/Library/WebObjects/JavaApplications/JavaMonitor.woa/
JavaMonitor -WOPort 56789 -WOApplicationName Monitor - WOLifebeatDestinationPort 1085
JavaMonitor ne doit être lancé que sur l'un des serveurs du "site", il n'est là que pour configurer les wotaskds et gérer les instances des applications.
(des exemples de scripts de démarrage pour le wotaskd et JavaMonitor basés sur StartStopDaemons du projet Debian sont disponibles)
Etape n°2:
Idéalement WebObjects ne doit pas fonctionner sous l'utilisateur root.
Donc créer:
• 1 groupe (pratique lorsque l'on a plusieurs utilisateurs afin qu'ils puissent lire les fichiers de l'autre)
ex: apple puis au choix:
• 1 utilisateurs pour l'exécution des processus et la mise a jours des applicatifs.
ex: apple ou wosrv
• 2utilisateurs (utilisation très sécuritaire):
• 1 utilisateur pour l'exécution des processus (mot de passe verrouillé) ex: wosrv
• 1 utilisateur pour la gestion des fichiers applicatifs (.woa, framework et jar) ex: woapp
Le ou les 2 utilisateurs ne sont pas privilégiés (ils n'ont pas forcement de shell, sftp peut suffir pour woapp) c'est pourquoi il faut changer les droits de certains répertoires.
Tout doit appartenir au root dans $NEXT_ROOT sauf ce qui est dans Local :
• wosrv a besoin d'écrire dans $NEXT_ROOT/Local/logs (fichiers de logs) et
$NEXT_ROOT/Local/Library/WebObjects/Configuration (fichier SiteConfig.xml )
• woapp a besoin d'écrire dans $NEXT_ROOT/Local/Library/WebObjects/Extensions
$NEXT_ROOT/LocalLibrary/WebObjects/Applications ce qui correspond à:
dans le cas d'un seul utilisateur:
mkdir -p $NEXT_ROOT/Local/logs
chown wosrv:apple $NEXT_ROOT/Local/logs
chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Configuration chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Extensions chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Applications
dans le cas de deux utilisateurs:
mkdir -p $NEXT_ROOT/Local/logs
chown wosrv:apple $NEXT_ROOT/Local/logs
chown wosrv:apple $NEXT_ROOT/Local/Library/WebObjects/Configuration chown woapp:apple $NEXT_ROOT/Local/Library/WebObjects/Extensions chown woapp:apple $NEXT_ROOT/Local/Library/WebObjects/Applications
Etape n°3:
• Remplacer les jar dans $NEXT_ROOT/Local/Library/WebObjects/Extensions avec ceux fournis dans Extensions.tgz
(certains sont rajoutés car utilisés par certaines applications Cocktail, d'autres changent juste de version)
tout les jar nécessaires ne sont pas fournis dans Extensions.tgz pour des raison de licences, il faut donc installer :
◦ le driver JDBC, il doit aussi être présent dans ORACLE_HOME/jdbc/lib choisir la version pour Java 1.5 (il est aussi disponible sur http://www.oracle.com/
technology/software/tech/java/sqlj_jdbc/index.html)
◦ ical4j.jar (http://ical4j.sourceforge.net ) (n'est utilisé que par certaines applications)
(cette opération est la seule spécificité Cocktail)
• modifier Library/Frameworks/JavaWebObjects.framework/Resources/
WebServerConfig.plist
la valeur de WOAdaptorURL doit correspondre à l'URL (du point de vue du client qui va ce connecter) de votre serveur http où sera installé mod_WebObjects. Donc normalement cela doit être doit correspondre ServerName dans la configuration Apache du vhost, par exemple seveur.domaine.tld.
• créer $NEXT_ROOT/Local/Library/WebObjects/Applications/Frameworks/ , les frameworks non Apple devront y être installé.
• ajouter des scripts de lancement dans /etc/init.d (start-stop-daemon du projet Debian est recommandé, voir scripts d'exemples dans scripts.tgz)
• mettre un password dans le JavaMonitor
• il est recommandé d'utiliser d'autres ports que ceux par défaut 1085 et 56789 même si seul Apache doit avoir accès aux ports des applications.
• enfin tout les "HOSTS" déclarés dans le monitor dans l'onglet du même nom doivent être correctement déclaré dans /etc/hosts , avec leur FQDN, pour vérifier faire sur chaque serveur: hostame -f,
(le fichier /etc/hosts doit être utilisé en premier lors de la résolution de noms, voir nsswitch.conf).
• si vous n'avez qu'un seul serveur WebObjects utilisez 127.0.0.1 comme Host.
• vous pouvez déclarer pour le Host l'adresse IP plutôt que le nom
(dans le cas de plusieurs adresses IP sur le serveur déclarer celle qui sera utilisée par Apache)
• $NEXT_ROOT/Library/WebObjects/JavaApplications/wotaskd.woa/Contents/
Resources/SpawnOfWotaskd.sh est le script utilisé par le wotaskd pour lancer les applications. Il est recommandé de le modifier pour rediriger stdout et sdterr vers un fichier de logs afin d'avoir une première source d'information lorsqu'une
application ne démarre pas. On peut changer pour:
/bin/bash $@ 2>&1 1>> $NEXT_ROOT/Local/logs/webobjects.log &
Il est possible d'avoir plusieurs installations, il faut simplement multiplier les NEXT_ROOT, avoir plusieurs scripts de démarrage et éventuellement créer plusieurs groupes/utilisateurs.
Il faudra faire attention aux ports utilisés (l'utilisation d'une adresses IP par NEXT_ROOT est possible, il faudra alors lancer toutes les applications avec -WOHost x.y.z.w).
3. OS X Leopard et Snow Leopard
Leopard Desktop et Snow Leopard
Etant donné qu'il n'y a plus WebObjects par défaut il faut simplement recopier le runtime au même endroit.
Il faut éventuellement créer des .plist et des users pour Launchd. Attention les permissions sur les .plist doivent être 644 pour system/wheel/everyone sinon launchctl de faire une erreur du type "dubious permissions".
Ne pas oublier que la version de Java supportée par WebObjects 5.3 est la 1.4.2 mais fonctionne très bien avec Java 1.5
Leopard Server
Le principe est de "downgrader" de la 5.4 vers la 5.3 ou plus exactement pouvoir passer d'une version à une autre. Pour cela créer 2 répertoires là où il y a des éléments
WebObjects, un pour chaque versions. Pour la version qui doit être utilisée il faut faire des liens symboliques (ou copie) vers les éléments du répertoire correspondant à la bonne version
Ainsi pour les éléments de /System/Library/Frameworks/ créer 2 répertoires : mkdir /System/Library/Frameworks/WebObjects54
mkdir /System/Library/Frameworks/WebObjects53
ensuite pour passer d'une version à une autre:
for framework in `ls /System/Library/Frameworks/WebObjects5X`;
do
rm /System/Library/Frameworks/$framework;
ln -sf /System/Library/Frameworks/WebObjects5X/$framework /System/Library/
Frameworks/$framework;
done
il en va de même pour les autres éléments du runtime, ils ne sont pas nécessaires au lancement d'applications Cocktail sauf ce qui concerne les jar dans Extensions (axis.jar notamment).
Il est a noter que WebObjects version 5.3 fonctionne avec une JVM 1.4.2 ou 1.5 alors que la version 5.4 avec une JVM 1.5 ou 1.6. Il faut donc penser à changer de JVM.
(il est possible de changer dans les .woa/Contents/MacOS/*.txt l'exécutable java à utiliser) Le wotaskd et JavaMonitor peuvent être lancé en vesion 5.4 et lancer/gérer des applications en 5.3 (les 2 daemons n'ont pas évolué depuis la 5.2 où si c'est le cas ils communiquent toujours de la même manière au niveau heartbeat et DirectAction)
Remarque
Avec les dernières version d'OS X et sur les machines récentes le démarrage du wotaskd et du javamonitor peut avoir lieux avant le démarrage du réseau ce qui les rend non
fonctionnel. Le palliatif est de modifier les scripts shell (ceux dans les .woa) et d'y rajouter un sleep juste avant la ligne "eval exec" .
Conclusion
L'installation de WebObjects 5.3 est simple, il faut juste avoir un JRE 1.5 d'installé, décompresser l'archive et exporter NEXT_ROOT. Pour du confort et de la sécurité il faut créer des utilisateurs et des scripts de lancement.