Home > Module EBX.Platform
Module EBX.Platform
Un module EBX.Platform permet de "packager" un modèle d'adaptation avec ses ressources : documents XML Schema inclus, classes Java, etc.
Sur un serveur d'application J2EE, un module EBX.Platform est équivalent à une application Web J2EE standard. Cela permet de bénéficier des caractéristiques de ce type d’applications : isolation du class-loading, packaging WAR ou EAR, exposition des ressources Web, redéploiement à chaud. Par ailleurs, si l’application utilisatrice est une application Web, il est tout à fait possible de fusionner le module EBX.Platform et cette application afin d’en simplifier le déploiement.
Structure
Un module contient les fichiers suivants :
-
/WEB-INF/web.xml:Il s'agit du descripteur de déploiement standard J2EE. Il doit assurer l'enregistrement du module au lancement du serveur d'application (voir section Enregistrement ).
-
/WEB-INF/ebx/module.xml:Ce fichier définit les propriétés générales du module EBX.
-
/www/:Ce répertoire optionnel contient les ressources externes qui sont accessibles par une URL publique. Ce répertoire est localisé et structuré par type de ressource (html, images, jscripts, stylesheet). Les ressources externes contenues dans ce répertoire sont référençables dans les modèles d'adaptation (pour les paramètres de type
osd;ressource).
Vue d’ensemble du module EBX.Platform intégré à une application Web :

Déclaration
Un module EBX.Platform est déclaré via le fichier
/WEB-INF/ebx/module.xml . Par exemple :
<module xmlns="urn:ebx-schemas:module_2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ebx-schemas:module_2.2 http://schema.orchestranetworks.com/module_2.2.xsd">
<name>moduleTest</name>
<locales>
<locale isDefault="true">it</locale>
<locale>en-US</locale>
</locales>
</module>
Le schéma associé fournit une documentation pour chaque propriété. Voici un résumé des principales :
|
Element |
Description |
Required |
|
|
Définit l'identifiant unique du module sur l'instance du serveur d'application. Le nom du module correspond au nom de l'application Web (nom du répertoire). |
Oui. |
|
|
Si un chemin spécifique (différent du nom de module ci-dessus) identifie l'application Web dans les URLs publiques, cette propriété doit définir ce chemin. Ce chemin est ajouté à l'URL d'une ressource externe du module en cas de calcul absolu de l'URL. Si ce champ n'est pas renseigné, le nom public est le même que le nom du module défini ci-dessus. |
Non. |
|
|
Spécifie quelles sont les langues supportées par les schémas du module. Cette liste doit contenir toutes les langues que l'on peut trouver dans les schémas du module et que l'on souhaite exposer à l'utilisateur (tout libellé ou message dans une langue non incluse dans cette liste ne sera pas affichable dans EBX.Manager). Si le champ n'est pas renseigné, le module est considéré comme régionalisé en "en-US". |
Non. |
|
|
Déclare les Services IU. Pour plus d'information, consulter la section Services IU . |
Non. |
|
|
Déclare les composants réutilisables de type "Java beans". Pour plus d'information, consulter le package workflow . |
Non. |
Enregistrement
Afin que le module soit identifié sur EBX.Platform, il est nécessaire qu'il soit enregistré à l'exécution, lorsque le serveur d'application est démarré. Dans le cadre J2EE, chaque module EBX.Platform doit :
-
contenir une servlet dont la méthode standard
initinvoqueModulesRegister.registerWebApp(…), voir l'exemple de code Java à la fin de cette section ; -
déclarer cette servlet dans le descripteur de déploiement
/WEB-INF/web.xml, de manière standard; -
assurer que cette servlet sera initialisée au démarrage du serveur d'application en ajoutant l'élément standard qui suit au descripteur de déploiement :
<load-on-startup>1</load-on-startup>.
Exemple d'un descripteur de déploiement J2EE (fichier
/WEB-INF/web.xml ):
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<servlet>
<servlet-name>InitEbxServlet</servlet-name>
<servlet-class>com.foo.RegisterServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
Remarques:
-
Si les classes Java sont localisées dans l'application Web (sous
/WEB-INF/classesou/WEB-INF/lib) et si ces classes sont utilisées en tant que resources des schémas du module, il est obligatoire que la classe servlet soit aussi localisée dans l'application Web (la raison est que cette classe est utilisée pour récupérer le "class-loader" de l'application). -
Il est recommandé que la servlet implémente également la méthode
destroy()comme indiqué dans l'exemple qui suit, sinon les opérations d'arrêt de l'application par le serveur ne fonctionneront pas.Une fois que la méthode
ModulesRegister.unregisterWebApp()a été exécutée, les schémas et les adaptations qui en dépendent deviennent indisponibles.Ainsi EBX.Platform supporte les opérations de déploiement et redéploiement à chaud que proposent les serveurs d'application J2EE : déploiement-démarrage, arrêt-redémarrage, arrêt-redéploiement-redémarrage, arrêt d'une application Web. Cependant, ces opérations restent sensibles, particulièrement en ce qui concerne le class-loading et les potentielles dépendances complexes, on veillera donc à respecter scrupuleusement les procédures du serveur.
-
Les enregistrements et désinscriptions sont journalisés dans la catégorie de log EBX.Platform nommée 'log.kernel'.
-
Si une exception se produit durant le chargement d'un module, la raison de l'erreur est inscrite dans le log du serveur d'application.
Exemple de code Java d'une servlet qui enregistre et désinscrit le module :
import javax.servlet.*;
import javax.servlet.http.*;
import com.onwbp.base.repository.*;
/**
*/
public class RegisterServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
{
super.init(config);
ModulesRegister.registerWebApp(this, config);
}
public void destroy()
{
ModulesRegister.unregisterWebApp(this, this.getServletConfig());
}
}
Home > Module EBX.Platform