Was 04 Plantsbywebsphere

4. Déploiement d’une application

1. EAR, WAR, JAR

Une application Java EE est livrée soit

  • dans un fichier Java Archive (JAR),
  • dans un fichier Web Archive (WAR) ou
  • dans un fichier Enterprise Archive (EAR).

Un fichier WAR ou EAR est un fichier JAR (.jar) standard avec une extension .war ou.ear. L’utilisation de fichiers et de modules JAR, WAR et EAR permet d’assembler un certain nombre d’applications Java EE différentes en utilisant certains des mêmes composants. Aucun codage supplémentaire n’est nécessaire ; il s’agit seulement d’assembler (ou d’emballer) divers modules Java EE dans des fichiers Java EE JAR, WAR ou EAR.

Un fichier EAR (voir Figure) contient des modules Java EE et, en option, des descripteurs de déploiement. Un descripteur de déploiement, un document XML avec une extension.xml, décrit les paramètres de déploiement d’une application, d’un module ou d’un composant. Comme les informations du descripteur de déploiement sont déclaratives, elles peuvent être modifiées sans qu’il soit nécessaire de modifier le code source. Lors de l’exécution, le serveur Java EE lit le descripteur de déploiement et agit sur l’application, le module ou le composant en conséquence.

EAR File Structure

Les deux types de descripteurs de déploiement sont Java EE et runtime. Un descripteur de déploiement Java EE est défini par une spécification Java EE et peut être utilisé pour configurer les paramètres de déploiement sur toute implémentation conforme à Java EE. Un descripteur de déploiement d’exécution est utilisé pour configurer les paramètres spécifiques à l’implémentation de Java EE. Par exemple, le descripteur de déploiement d’exécution de GlassFish Server contient des informations telles que la racine du contexte d’une application Web, ainsi que des paramètres spécifiques à l’implémentation de GlassFish Server, comme les directives de mise en cache. Les descripteurs de déploiement d’exécution de GlassFish Server sont appelés glassfish-moduleType.xml et sont situés dans le même dossier META-INF que le descripteur de déploiement Java EE.

Un module Java EE se compose d’un ou plusieurs composants Java EE pour le même type de conteneur et, en option, d’un descripteur de déploiement de composant de ce type. Un descripteur de déploiement de module d’entreprise, par exemple, déclare les attributs de transaction et les autorisations de sécurité pour un module d’entreprise. Un module Java EE peut être déployé comme module autonome.

Les modules Java EE sont des types suivants :

  • Les modules EJB, qui contiennent des fichiers de classe pour les Entreprise Java Beans et, en option, un descripteur de déploiement EJB. Les modules EJB sont présentés sous forme de fichiers JAR avec une extension.jar.
  • Les modules Web, qui contiennent des fichiers de classe de servlet, des fichiers Web, des fichiers de classe de support, des fichiers image et HTML, et, en option, un descripteur de déploiement d’application Web. Les modules Web sont présentés sous forme de fichiers JAR avec une extension.war (archive Web).
  • Les modules clients d’application, qui contiennent des fichiers de classe et, en option, un descripteur de déploiement du client d’application. Les modules clients d’application sont empaquetés sous forme de fichiers JAR avec une extension.jar.
  • Les modules d’adaptateur de ressources, qui contiennent toutes les interfaces Java, les classes, les bibliothèques natives et, en option, un descripteur de déploiement d’adaptateur de ressources. Ensemble, ils mettent en œuvre l’architecture Connector (voir Java EE Connector Architecture) pour un EIS particulier. Les modules d’adaptateur de ressources sont présentés sous forme de fichiers JAR avec une extension.rar (archive d’adaptateur de ressources).

Source : The Java EE 6 Tutorial, Packaging Applications

En bref, dans une application J2EE, les modules sont packagés en EAR, JAR et WAR en fonction de leurs fonctionnalités.

JAR : Les modules EJB qui contiennent “enterprise java beans” (fichiers de classe) et le descripteur de déploiement EJB sont compressés en fichiers JAR avec extension.jar.

WAR : Les modules Web qui contiennent des fichiers de classe Servlet, des fichiers JSP, des fichiers de support, des fichiers GIF et HTML sont empaquetés comme fichier JAR avec l’extension.war (archive Web)

EAR : Tous les fichiers ci-dessus (.jar et.war) sont empaquetés en tant que fichier JAR avec l’extension.ear (archive d’entreprise) et déployés dans Application Server.

Source : What is the difference between a .war and .ear file?

2. Description de l’application Plants by Websphere.

Application Plants by Websphere

Plants by WebSphere est une application de boutique en ligne qui se spécialise dans la vente de plantes et d’outils de jardinage. En utilisant la vitrine du magasin Plants by WebSphere, les clients peuvent ouvrir un compte, rechercher des articles à acheter, consulter les détails des produits et passer des commandes.

Interactions entre le modèle, la vue et le contrôleur

Cet échantillon est conçu à l’aide d’un modèle type de modèle Web EE Java Web Model-View-Controller (MVC). Le modèle MVC permet de séparer les préoccupations relatives aux données persistantes, à la présentation de l’information et à la logique de contrôle qui est utilisée pour les relier entre elles. L’échantillon a été mis à jour pour utiliser les technologies suivantes :

Pour le niveau de présentation, Plants By WebSphere utilise une combinaison de JSF 2.0 et Facelets. Les contrôleurs sont une combinaison de Managed Beans et de EJB session beans. La partie modèle est généralement gérée par JPA, bien qu’une partie de l’emballage côté présentation soit faite pour fournir un support de présentation supplémentaire. Une base de données Derby fournit la persistance pour un catalogue, l’inventaire des articles, le traitement des commandes, ainsi qu’un simple registre des utilisateurs. Tout ce qui précède est lié ensemble à l’aide de CDI. Il est intéressant de noter qu’il n’est plus nécessaire aujourd’hui de séparer physiquement toutes ces choses en différents modules. Vous pouvez créer des contrôleurs en tant que Managed Beans et les inclure dans vos fichiers WAR et au fur et à mesure que vos besoins augmentent pour inclure les transactions et la sécurité, vous pouvez ajouter des annotations EJB à ces Managed Beans et toujours y accéder directement depuis JSF sans avoir à reconditionner votre application ou refactoriser votre code.

http://localhost:9080/PlantsByWebSphere

3. Procédure d’installation de l’application Plants by Websphere

La documentation de l’application d’exemple est située dans l’emplacement local /opt/IBM/WebSphere/AppServer/samples/PlantsByWebSphere/docs/index.html.

Exercice

Vérifier le démarrage du serveur installé :

install_root="/opt/IBM/WebSphere/AppServer"
$install_root/bin/stopServer.sh server1
$install_root/bin/startServer.sh server1

4. Installer la DB Derby Plants by Websphere

Exercice

yum -y install java-devel
install_root="/opt/IBM/WebSphere/AppServer"

cd $install_root/derby/databases
jar xf ../../samples/PlantsByWebSphere/Derby/PLANTSDB/pbw-db.jar

Vous verrez un nouveau dossier PLANTSDB

5. Déployer automatiquement l’application

Applications > Paramètres de déploiement global.

Applications > Paramètres de déploiement global.

La fonction “Déploiement de dossier surveillé” permet de surveiller un dossier pour déployer automatiquement des applications.

Vous pouvez utiliser cette fonction pour installer ou mettre à jour un fichier d’application d’entreprise sur un serveur d’application ou un cluster ou désinstaller un fichier d’application installé avec la fonction.

Vous pouvez installer ou mettre à jour un fichier d’application d’entreprise en faisant glisser ou en copiant un fichier EAR (enterprise archive), WAR (web archive), JAR (Java archive) ou SAR (Session Initiation Protocol (SIP) archive)) vers un dossier contrôlé. Le fichier d’application doit être conforme à la spécification Java EE ((Java Platform, Enterprise Edition). Pour désinstaller un fichier d’application déployé, supprimez-le du dossier contrôlé.

Vous pouvez également installer, mettre à jour ou désinstallation un fichier d’application en faisant glisser ou en copiant un fichier d’application vers un dossier contrôlé. Le fichier des propriétés doit définir les actions de déploiement à exécuter.

Pour le déploiement par glissement ou copie d’un fichier d’application d’entreprise vers un dossier contrôlé, le dossier de destination des fichiers d’applications d’entreprise dépend du profil du produit :

Pour les serveurs d’applications de base (autonomes), le dossier contrôlé est le dossier monitoredDeployableApps/servers/nom_serveur du profil du serveur d’applications.

Pour les gestionnaires de déploiement, les dossiers contrôlés par défaut sont les dossiers monitoredDeployableApps/servers/nom_serveur, monitoredDeployableApps/nodes/nom_noeud/servers/nom_serveur et monitoredDeployableApps/clusters/nom_cluster du profil du gestionnaire de déploiement.

Pour le déploiement en utilisant les fichiers de propriétés, le dossier contrôlé est le sous-dossier deploymentProperties du dossier défini par ce paramètres, par exemple, monitoredDeployableApps/deploymentProperties.

Pour changer le dossier contrôlé par défaut, définissez un chemin de dossier différent pour ce paramètre. Lister la totalité de la valeur du dossier, y compris la variable d’environnement. Vous devez sélectionner l’option “Surveiller le dossier” pour déployer automatiquement des applications.

Par défaut, le délai d’interrogation est défini à 5 secondes.

Exercice

En bref, pour déployer l’application “Plants By Websphere” et surveiller son déploiement, il suffit de copier le fichier EAR pré-compilé pbw-ear.ear qui est situé dans le dossier pbw-ear/target à destination du dossier surveillé profiles/AppSrv01/monitoredDeployableApps/servers/server1/ :

install_root="/opt/IBM/WebSphere/AppServer"
cp $install_root/samples/PlantsByWebSphere/pbw-ear/target/pbw-ear.ear $install_root/profiles/AppSrv01/monitoredDeployableApps/servers/server1/
tail -f $install_root/profiles/AppSrv01/logs/server1/SystemOut.log

L’application démarre automatiquement.

6. Déployer manuellement l’application Plants by Websphere

Applications > New Application > New Entreprise Apllication > Remote file system :

Utilisez Système de fichiers local si les fichiers d’application et le navigateur se trouvent sur le même ordinateur. Utilisez Système de fichiers éloigné dans les cas suivants :

  • Le fichier d’application se situe sur un noeud du contexte de la cellule active. Seuls les fichiers .ear, .jar, .sar ou .war apparaissent lors de l’exploration.
  • Le fichier d’application se situe sur le système de fichiers de tous les noeuds d’une cellule.
  • Le fichier d’application se situe déjà sur l’ordinateur exécutant le serveur d’applications. Par exemple, la valeur de la zone peut être racine_profil/installableApps/test.ear.

Exercice

  • Supprimer l’application du dossier surveillé
profile_root="/opt/IBM/WebSphere/AppServer/profiles/AppSrv01"
rm $profile_root/monitoredDeployableApps/servers/server1/pbw-ear.ear

7. Démarrer ou arrêter manuellement l’application Plants by Websphere

Démarrer l'application Plants by Websphere

Exercice

  • Manipuler le démarrage et l’arrêt de l’application pbw-ear
  • Arrêt de l’application avec wsadmin.sh
profile_root="/opt/IBM/WebSphere/AppServer/profiles/AppSrv01"
$profile_root/bin/wsadmin.sh -c "AdminControl.invoke(AdminControl.queryNames('type=ApplicationManager,process=server1,*'),'stopApplication','pbw-ear')" -lang jython
  • Pour démarrer l’application avec wsadmin.sh :
profile_root="/opt/IBM/WebSphere/AppServer/profiles/AppSrv01"
$profile_root/bin/wsadmin.sh -c "AdminControl.invoke(AdminControl.queryNames('type=ApplicationManager,process=server1,*'),'startApplication','pbw-ear')" -lang jython

8. Visiter l’application

Exercice

On peut vérifier les fonctionnalités de l’apllication directement en se rendant sur http://localhost:9080/PlantsByWebSphere.

9. Surveiller l’application

Le fichier logs/server1/SystemOut.log recense les événements sur le serveur.

Exercice

profile_root="/opt/IBM/WebSphere/AppServer/profiles/AppSrv01"
tail -f $profile_root/logs/server1/SystemOut.log

10. Désinstaller manuellement l’application

Les applications installées sont situées dans le dossier config/cells/<nom_cellule>/applications

Exercice

Effacer l’application :

profile_root="/opt/IBM/WebSphere/AppServer/profiles/AppSrv01"
rm -rf $profile_root/config/cells/localhostNode01Cell/applications/pbw-ear.ear*
rm -rf /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/localhostNode01Cell/blas/pbw-ear
rm -rf /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/localhostNode01Cell/cus/pbw-ear

Éditer le fichier serverindex.xml pour toutes les instances du nom de l’application.

Éventuellement, démarrer le “deployment manager” et réaliser une synchronisation.

Arrêter l’agent de noeud.

Vérifier le profil du noeud pour vous assurer que le répertoire wstemp et le répertoire installApps ne contiennent plus de référence à l’application. Si les fichiers existent toujours, supprimez-les.

Démarrer l’agent de noeud.

Référence : What are the steps to manually remove a WebSphere Application Server?.