2009-02-16 3 views
5

J'ai un fichier batch qui démarre un processus Java sur un serveur Windows 2003. Conformément à la politique de sécurité, les utilisateurs de cette machine sont déconnectés de force, si l'utilisateur est inactif pendant une certaine période de temps. Le problème est que lorsque l'utilisateur est déconnecté, le processus meurt également.Exécution d'un processus Java dans Windows même après la déconnexion de l'utilisateur

J'ai planifié une nouvelle tâche (Panneau de configuration -> Tâches planifiées) et j'ai sélectionné l'option 'Quand mon ordinateur démarre' et donné les détails du compte de l'utilisateur. Mais cela ne semble pas avoir d'effet, l'utilisateur est toujours déconnecté et le processus meurt. Un redémarrage est-il nécessaire pour rendre ce changement efficace? Et après le redémarrage, vais-je réaliser ce que j'attends (en gardant le processus en vie)?

Vous pouvez également exécuter ce processus en tant que service Windows pour résoudre le problème? Si oui, pouvez-vous s'il vous plaît me faire savoir comment je peux faire un programme Java ou un fichier de commandes à exécuter en tant que service Windows? Je préférerais ne pas utiliser d'autres outils ou bibliothèques tiers.

Merci

Répondre

11

Si vous souhaitez l'exécuter sous tâches planifiées, vous devez vous assurer que vous n'avez pas « ne fonctionnent que lorsque l'utilisateur connecté » cochée, ce qui signifie généralement que vous devez fournir un mot de passe.

Un service Windows serait le moyen normal de le faire: le Java service wrapper est une tierce partie mais beaucoup de gens l'utilisent. Si vous ne voulez vraiment pas utiliser de méthode tierce, vous pouvez utiliser svrany.exe (http://support.microsoft.com/kb/137890) sur Windows NT ou version ultérieure, mais il n'est pas spécialement conçu pour Java.

+0

Merci pour la réponse. Oui, je n'ai pas ce jeu d'options particulier et j'ai fourni les détails du mot de passe. J'ai découvert le Java Service Wrapper dans un autre thread. Je prévois de l'utiliser en dernier recours. – cdoe

+0

J'adore le wrapper de service Java. Je l'utilise depuis quelques années et ça marche bien. –

+0

Le problème avec la tâche planifiée est par défaut, il va exécuter le processus avec la priorité «au-dessous de la normale». Cela peut entraîner des problèmes de performances lorsque le serveur est sous charge – gerrytan

1

J'utilise Java Service Wrapper pour démarrer le processus java comme service Windows. Je suppose que cela fonctionne de manière similaire à srvany.exe mentionné dans l'article précédent.

0

Selon mon analyse,

La solution Idle va écrire un programme de création de service Windows VC++ (.net) pour lancer le fichier .bat/.exe en tant que service système avec toutes les méthodes de rappel requises pour SCM.

Remarque: 1. Envelopper le processus avec srvany.exe ne fonctionnerait pas car il n'a pas de processus de rappel au SCM (Service Control Manager). 2. Et Java service Wrapper est une API tierce (beaucoup sont sous licence LGPL).