2008-08-25 8 views
19

Je cherche la meilleure méthode pour exécuter une application Java en tant que démon * NIX ou un service Windows. J'ai regardé dans le Java Service Wrapper, le Apache Commons project 'jsvc', et le Apache Commons project 'procrun'. Jusqu'à présent, Java Service Wrapper semble être la meilleure option ... mais je me demande s'il existe d'autres produits sous licence "Open Source".Meilleure méthode pour exécuter une application Java en tant que démon * nix ou service Windows?

+0

Pour les services Windows, consultez cette question: http://stackoverflow.com/questions/68113/how-to-create-a-windows-service-from-java-app/3626452#3626452 (Ajout de ce commentaire comme étant Google m'a amené ici, mais l'autre question a plus de réponses). – atomicules

Répondre

17

J'ai eu beaucoup de succès avec Java Service Wrapper moi-même. Je ne l'ai pas regardé les autres, mais les principales forces de service wrapper sont:

  • grand soutien-plate-forme x - Je l'ai utilisé sur Windows et Linux, et trouvé facile sur les deux
  • Documentation solide - Les documents sont clairs et précis, avec de bons exemples.
  • Prise en charge approfondie par plate-forme - Il existe des fonctionnalités uniques dans le système de gestion des services de fenêtrage qui sont parfaitement prises en charge par l'encapsuleur de service (sans redémarrage). Et sur Windows, vous verrez même le nom de votre application dans la liste de processus au lieu de simplement "java.exe".
  • Conformité aux normes - Contrairement à de nombreux scripts d'initialisation Java ad-hoc, les scripts pour l'encapsuleur de service ont tendance à être conformes aux normes LSB. Cela peut s'avérer très important si vous voulez une gestion de haute disponibilité à partir de quelque chose comme Linux Heartbeat/HA.

Quoi qu'il en soit, à mes 2 cents ... :)

+1

Je ne le recommande pas assez –

1

Existe-t-il des attributs spéciaux à appliquer (comme la gestion des ressources guidées par le système d'exploitation) que vous devez prendre en charge? Sinon, pour Unix, vous devriez pouvoir démoniser votre application en écrivant un script init.d approprié et en configurant votre application pour qu'elle démarre automatiquement.

3

Une autre option est WinRun4J. Ce fonctionne uniquement sous Windows, mais a quelques fonctionnalités utiles:

  • 32 bits et le support 64 bits
  • API pour accéder au journal des événements et le registre
  • peut-il inscrire le service à dépendre d'autres services (c.-à-service A et Serviceb doit démarrer avant serviceC)

Son également open source friendly (CPL) donc pas de restrictions d'utilisation.

(divulgation complète: je travaille sur ce projet).

Questions connexes