2009-08-11 5 views
3

Je cherche un outil pour exécuter des processus serveur Java en tant que services démon sous Linux (et potentiellement sur Windows et autres systèmes d'exploitation). Je suis à la recherche des meilleures pratiques en matière de création de scripts compatibles avec la production et de lancement de la configuration. Je connais les bonnes pratiques en matière de construction d'un projet, en utilisant Apache Maven, ou quelque chose comme Apache ANT + Ivy pour gérer votre processus de construction et gérer les dépendances externes et construire des artefacts et des assemblages.Bonnes pratiques pour créer des scripts de service ou de démon Java

Quand il s'agit de créer un assembly de projet contenant des scripts de configuration et de lancement avec tout le code compilé et les dépendances, je ne sais pas quel est le meilleur choix. Y a-t-il un bon projet open source que je pourrais regarder à titre d'exemple, qui regroupe un wrapper de service et des scripts de configuration avec leur processus de construction?

Je suis en mesure d'utiliser Maven avec le Jetty Launch plugin pour exécuter mes applications Web, Terracotta Maven plugin pour tester plusieurs nœuds de serveur en cluster JVM et je l'ai utilisé Maven de exec:java pour exécuter mes serveurs Java personnalisé, mais je ne suis pas sûr à l'aide Maven à ce titre est vraiment une qualité de «production», cela signifie aussi que mes serveurs de production dépendent de la construction des serveurs à partir de la source et du téléchargement de dépendances à partir de serveurs potentiellement indisponibles.

Voici quelques choses possibles que je cherche dans une solution de lancement de service Java:

  1. doit se lancer en tant que processus de service de service ou Windows Linux
  2. peut être construit en utilisant un plugin Maven ou d'un script Ant et permettez-moi de traiter les fichiers de configuration et les scripts
  3. Doit être capable d'inclure toutes les dépendances de mon projet à partir d'Apache Ant
  4. Doit être capable d'insérer un serveur Java Web Application complet (par exemple, Jetty 7) et être configuré avec mon custom application Web « S guerre
  5. devrait-elle être capable de gérer un service de démon Java standard (serveur java personnalisé)

Certaines des options que j'ai regardé sont Java Service Wrapper, qui est utilisé dans le Maven appassembler plugin.

En utilisant également les assembly plugin de Maven et les descripteurs d'assemblage personnalisés, je peux personnaliser la sortie de construction.

Répondre

3

Le Java Service Wrapper semble être assez commun. Je l'ai vu utilisé par quelques personnes, notamment au nexus.

3

La meilleure façon de mettre en œuvre des services Linux de toutes sortes est de créer un script shell qui peut démarrer, arrêter et redémarrer le service et le mettre en /etc/init.d. Ajoutez ensuite des liens symboliques appropriés à partir des répertoires "rc. *" Appropriés. Reportez-vous aux entrées "man" de Linux pour "init (8)", "chkconfig (8)" et ainsi de suite.

Questions connexes