9.4. Implémenter un Singleton HA
La procédure suivante illustre comment déployer un Service qui se trouve dans un decorator de SingletonService et qui est utilisé comme service singleton dans l'ensemble du cluster. Le service active une minuterie programmée, qui n'est lancée qu'à une seule reprise dans le cluster.
Procédure 9.3. Implémenter un Service HA Singleton
Rédiger une application de Service HA Singleton
Voici un exemple simple deService
se trouvant dans le decoratorSingletonService
devant être déployé comme service singleton. On trouvera un exemple complet dans le quickstart decluster-ha-singleton
qui est livré avec Red Hat JBoss Enterprise Application Platform 6. Ce quickstart contient toutes les instructions pour générer et déployer l'application.Créer un service.
Voici un exemple de service :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un activator qui installe le
Service
en tant que singleton clusterisé.La liste suivante est un exemple d'activateurr de service qui installe leHATimerService
comme service singleton clusterisé :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Note
L'exemple de code ci-dessus utilise une classe,org.jboss.as.clustering.singleton.SingletonService
, qui fait partie de l'API privée de JBoss EAP. Une API publique deviendra disponible dans la version EAP 7 et les classes privées seront obsolètes, mais ces classes seront entretenues et rendues disponible pendant toute la durée du cycle de version EAP 6.x.Créer un fichier ServiceActivator
Créer un fichier nomméorg.jboss.msc.service.ServiceActivator
dans le répertoireresources/META-INF/services/
de l'application. Ajouter une ligne contenant le nom complet de la classe de Service Activator créée dans l'étape précédente.org.jboss.as.quickstarts.cluster.hasingleton.service.ejb.HATimerServiceActivator
org.jboss.as.quickstarts.cluster.hasingleton.service.ejb.HATimerServiceActivator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un bean singleton qui implémente une minuterie de singleton à utiliser dans tout le cluster.
Ce bean Singleton ne doit pas avoir d'interface distante et ne doit pas référencer son interface locale à partir d'un autre EJB d'application. Cela évite une recherche client ou de la part d'un autre composant et assure un parfait contrôle du Singleton par le SingletonService.Créer une interface de planification.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le bean Singleton qui implémente la minuterie de singleton à utiliser dans tout le cluster.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Démarrez chaque instance de JBoss EAP 6 avec le clustering activé.
Pour activer le clustering dans les serveurs autonomes, démarrer chaque serveur par le profilHA
, en utilisant un nom de code unique et un offset (décallage) de port pour chaque instance comme suit :- Dans Linux, on utilise la commande suivante pour démarrer les serveurs :
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple 9.5. Démarrage de multiples serveurs autonomes sur Linux
EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1 EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100
$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1 $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Dans Microsoft Windows, on utilise la commande suivante pour démarrer les serveurs :
EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET
EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple 9.6. Démarrage de multiples serveurs autonomes dans Microsoft Windows
C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100
C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Note
Si vous ne souhaitez pas utiliser des arguments en ligne de commande, vous pouvez configurer le fichierstandalone-ha.xml
pour que chaque instance de serveur puisse se lier à une interface séparée.Déployer l'application dans les serveurs
Si vous utilisez la commande Maven suivante pour déployer votre application dans un serveur autonome qui exécute sur les ports par défaut.mvn clean install jboss-as:deploy
mvn clean install jboss-as:deploy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour déployer des serveurs supplémentaires, indiquer le nom du serveur. S'il est sur un hôte différent, passez le nom d'hôte et le numéro de port dans la ligne de commande :mvn clean package jboss-as:deploy -Djboss-as.hostname=localhost -Djboss-as.port=10099
mvn clean package jboss-as:deploy -Djboss-as.hostname=localhost -Djboss-as.port=10099
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Voir le quickstartcluster-ha-singleton
fourni dans JBoss EAP 6 pour la configuration et les détails de déploiement de Maven.