Quelques antécédents:
J'ai quatre applications qui s'exécutent en tant que services sur un ensemble de machines Windows XP, dont deux sont des applications java. Les quatre applications avaient été conçues à l'origine pour être exécutées à partir d'un serveur Linux. Trois machines Windows XP y étaient connectées, mais les besoins des clients impliquaient de transférer ces applications sur Windows afin que tout puisse être exécuté à partir d'une seule machine.
Le problème:
Comme nous ne voulions rien changer de façon radicale dans notre code pour pouvoir exécuter les applications en tant que services, nous avons utilisé instsrv.exe
et srvany.exe
installé et installé les applications. Cela fonctionne bien pour les deux applications c ++ et, pour la plupart, les applications java fonctionnent bien. Cependant, lorsqu'un utilisateur se déconnecte, les applications Java s'arrêtent. Les services réels sont toujours en cours d'exécution, car java.exe
(ou javaw.exe
, peu importe lequel) est toujours en cours d'exécution, mais l'application ne s'exécute plus. En ce qui concerne le gestionnaire de services, tout fonctionne correctement et ne redémarre pas le service comme il le devrait. Notez que l'utilisateur principal utilise un compte limité et ne peut donc pas redémarrer les services manuellement.
Choses que nous avons considérées / essayées:
srvany.exe.
a été choisi principalement parce que son utilisation est gratuite (comme dans la bière) et relativement facile à configurer. Nous avons également envisagé srvstart.exe
, mais je crois que cela pose le même problème. Nous avons examiné deux wrappers de services Java dédiés que nous avons examinés, mais qui ont été éliminés en raison de conditions de licence et / ou de difficultés de configuration. Notez que YAJSW n'a pas été envisagé initialement et que, si le temps le permet, il peut être testé.
Le problème ne semble pas exister sous Windows 7, mais comme notre client a besoin de Windows XP, ce n’est pas une option.
J'ai également essayé de permettre une interaction de bureau pour les deux applications java, mais cela ne résout pas le problème lors de l'utilisation javaw.exe
et affiche une fenêtre de ligne de commande lors de l'utilisation java.exe
, ce qui est extrêmement indésirable, même si cela résout le problème. Jusqu'ici, notre solution provisoire consistait à dire au client de ne pas se déconnecter d'un compte, mais plutôt de n'utiliser qu'un autre utilisateur.
Y at-il autre chose qui me manque ou que je devrais essayer? Cela dépend également du temps, car une fois que ces unités sont mises hors service, il peut s'avérer extrêmement difficile de mettre en œuvre un correctif sur site.
la source