Comment écrire un démon Java

Ce sera une application réseau qui sera toujours (ou presque, comme toujours, que je peux gérer) être à l'écoute sur un port donné.

Je suis assez nouveau à Java, et de très nouveau pour les non-serveur web côté de la programmation, donc j'aimerais avoir des retours de la communauté sur mes hypothèses et des plans préliminaires.

J'ai lu sur jsvc ( http://commons.apache.org/daemon/jsvc.html ) et je suis actuellement en exploitation sur l'hypothèse que c'est la "meilleure" façon d'écrire un démon en java pour linux (probablement en cours d'exécution centOS).

Nagios peut être configuré pour surveiller si oui ou non mon démon est en cours d'exécution, et de m'informer ou de la sys admin quand il ne l'est pas? (Je suppose que oui, mais je ne suis pas très douée sys admin type)

Ce sera un SMPP application client (ou de l'ESME application je suppose) c'est pourquoi j'ai choisi Java comme cela semble être une très mature plate-forme pour le SMPP. Cependant, je sais que c'est plus "traditionnel" pour écrire un démon en C/C++. Moderne, Java, spectacle assez simples tâches, suis-je susceptible de courir en toute inconvénients majeurs?

Quelle est la meilleure façon de gérer le déploiement de nouvelles versions? Juste arrêter le démon et remplacer le binaire le plus rapidement possible et de le redémarrer?

Toute autre entrée serait grandement apprécié.

Le jsvc doc a dit qu'il permet l'application (comme Tomcat) pour exécuter une application en tant que root (comme le lier à un port d'un < 1024), puis abaissez l'application des privilèges. Honnêtement, je n'aime pas les autorisant à exécuter en tant que root. La façon dont je le lier à un port d'un < 1024 est en cours d'exécution en tant que non-root et de faire un pare-feu de redirection, comme ceci: "iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080" Notez que vous pouvez aussi utilisez par exemple un truc du déploiement d'un nouveau démon sans avoir à arrêter le démon et remplacer le binaire le plus rapidement possible" [sic].... (la suite)
Si vous êtes attaché à une machine unique, vous pouvez utiliser l'astuce suivante: laisser les "vieux" démon de l'exécution (par exemple sur le port 8080, dont 80 redirige vers), puis de déployer un nouveau démon (par exemple sur le port 8081). Tester que tout fonctionne bien et une fois que vous êtes sûr que votre nouveau démon est bon d'aller, il suffit de changer le port de redirection 80->8080 à 80->8081. La seule fois root est nécessaire pour une telle chose est de changer le pare-feu les redirections. Sur les systèmes Unix, vous pouvez installer Java et Tomcat sans jamais avoir à se connecter en tant que root (tant que vous ne l'utilisez pas tout .deb ou .rpm packages).
Je pense que vous avez raison au sujet de jsvc, et votre suggestion pour la redirection des ports est génial et je vais probablement le faire. Merci!
attendez, ne vous méprenez pas: je ne critique pas jsvc (je ne sais pas). Je dis juste que la partie qui dit qu'il aide à exécuter Java choses comme root, je ne suis pas grand fan 🙂 Il peut faire d'autres choses utiles. Mais la redirection de port de chose qui fonctionne pour vous et si vous êtes dans le contrôle de la machine, c'est vraiment facile et pratique et relativement "safe" (au moins, vous n'avez pas besoin d'installer Java en tant que root).
Dans une réponse à l'OP dit "Ma question est assez vague pour qu'il n'y a pas de "vrai" réponse"

OriginalL'auteur Aaron Bruce | 2011-10-18