Comment intégrer votre application avec le Java Service Wrapper

Il existe actuellement quatre façons d'intégrer votre application Java avec le Java Service Wrapper. Trois d'entre elles fonctionnent immédiatement sans aucun codage supplémentaire.

La première étape consiste à décider laquelle de ces quatre méthodes convient le mieux à votre application. Après un bref aperçu de chacune des quatre options, nous détaillerons comment intégrer une application en utilisant chaque méthode.

Méthode d'intégration 1 (WrapperSimpleApp)

La méthode 1 utilise la classe d'aide WrapperSimpleApp pour lancer l'application. C'est de loin la façon la plus simple de s'intégrer au Wrapper et, lorsque c'est possible, elle est fortement recommandée.

Details

Il y a cependant quelques points à prendre en compte lors de l'utilisation de cette méthode. Lorsque le Wrapper arrête la JVM, il n'y a pas d'appel direct à une application lui demandant de s'arrêter proprement. Le Wrapper quitte plutôt la JVM en appelant System.exit() depuis l'intérieur de la JVM. Si l'application a enregistré son propre Shutdown Hook, celui-ci sera invoqué, donnant à l'application une chance de s'arrêter proprement. Si, en revanche, un shutdown hook n'est pas enregistré, alors l'application se terminera brusquement, comme lorsque l'on appuie sur CTRL-C dans la console (fenêtre de commande). Les deux cas, avec et sans Shutdown Hook, offrent exactement le même comportement que si l'application s'exécutait sans le Wrapper.

Vous trouverez un aperçu détaillé et des instructions utilisant des exemples d'application HelloWorld simple pour Windows ou Linux/UNIX.

Méthode d'intégration 2 (WrapperStartStopApp)

La méthode 2 utilise la classe d'aide WrapperStartStopApp. Cette méthode permet d'intégrer des applications comme Tomcat, qui sont démarrées à l'aide d'une classe puis arrêtées à l'aide d'une autre classe.

Details

Typiquement, ce type d'application ouvre un socket serveur au démarrage dont le rôle est d'attendre une connexion déclenchant un arrêt. La classe d'arrêt, une fois lancée, déclenche l'arrêt en se connectant à l'application.

Le Wrapper fonctionne avec ce type d'application en démarrant l'application comme dans la méthode 1, en utilisant la classe de démarrage puis en appelant la méthode main de la classe d'arrêt lorsqu'il est temps d'arrêter l'application.

Vous trouverez un aperçu détaillé et des instructions utilisant Tomcat comme exemple pour Windows ou Linux/UNIX.

Méthode d'intégration 3 (WrapperListener)

La méthode 3, tout en offrant le plus de flexibilité et l'accès à toutes les fonctionnalités du Wrapper, est également la seule qui nécessite un peu de codage pour terminer l'intégration. Cette méthode consiste à créer une classe implémentant l'interface WrapperListener. Une instance de la classe utilisateur est ensuite créée et enregistrée auprès de WrapperManager.

Details

Bien que cette méthode offre des fonctionnalités qui ne sont pas disponibles avec l'une ou l'autre des deux premières méthodes (soit WrapperSimpleApp soit WrapperStartStopApp), elle ajoute une certaine complexité. C'est la seule méthode qui permet au code utilisateur de recevoir et de répondre directement aux événements de contrôle système ainsi qu'au processus de démarrage et d'arrêt.

Si les fonctionnalités supplémentaires ne sont pas nécessaires, l'implémentation d'un Shutdown Hook pour permettre l'utilisation de la méthode 1 (WrapperSimpleApp), ou l'implémentation d'une classe d'arrêt, devraient être envisagées comme options. La méthode main d'une classe d'arrêt peut être aussi simple que d'appeler simplement une méthode d'arrêt dans l'application.

Cependant, dans la plupart des cas, ce contrôle supplémentaire n'est pas nécessaire, car les classes d'aide de la méthode 1 (WrapperSimpleApp) et de la méthode 2 (WrapperStartStopApp) s'en chargent pour vous en démarrant et en arrêtant l'application aux moments appropriés.

Vous trouverez un aperçu détaillé et des instructions sur la page Indépendante de la plateforme.

Méthode d'intégration 4 (WrapperJarApp)

La quatrième et dernière méthode utilise la classe d'aide WrapperJarApp pour lancer l'application. C'est une autre façon simple de s'intégrer au Wrapper lorsque l'application est déjà configurée pour s'exécuter en tant que jar exécutable.

Details

Il y a cependant quelques points à prendre en compte lors de l'utilisation de cette méthode. Lorsque le Wrapper arrête la JVM, il n'y a pas d'appel direct à une application lui demandant de s'arrêter proprement. Le Wrapper quitte plutôt la JVM en appelant System.exit() depuis l'intérieur de la JVM. Si l'application a enregistré son propre Shutdown Hook, celui-ci sera invoqué, donnant à l'application une chance de s'arrêter proprement. Si, en revanche, un Shutdown Hook n'est pas enregistré, alors l'application se terminera brusquement, comme lorsque l'on appuie sur CTRL-C dans la console (fenêtre de commande). Les deux cas, avec et sans Shutdown Hook, offrent exactement le même comportement que si l'application s'exécutait sans le Wrapper.

Vous trouverez un aperçu détaillé et des instructions utilisant JBoss EAP comme exemple pour Windows ou Linux/UNIX.

Exemples rapides d'intégration

Les méthodes d'intégration ci-dessus sont utiles à comprendre, mais si vous souhaitez démarrer rapidement, il existe des exemples résumés pour des applications spécifiques.

Référence : Lancement de votre application avec le Wrapper