davidfdm2002
Messages postés14Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention21 mai 2006
-
22 avril 2005 à 17:53
davidfdm2002
Messages postés14Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention21 mai 2006
-
4 mai 2005 à 10:10
Je souhaite réalisé un service Windows mepermettant de lancer une application java (un serveur Web) au demarrage du Systeme .( NT/2000 server/XP)
Donc j'ai créé une application Delphi avec un objet de type 'TService'.
Je lance dans l'evenement OnExecute ( j'ai aussi essayé OnStart avec un thread...) mon programme java avec la fonction CreateProcess.
Je relance Windows, et O miracle mon programme se lance, sans que je me connecte....super...oui Mais...
Si je me connecte avec n'importe quel utililisateur puis me deconnecte, mon application java se ferme egalement, pourtant le service lui tourne encore (mon appli service tourne dans le vide mais elle tourne comme le dirai gallilée...).
Visiblement mon service lance le programme java, mais ce dernier devient independant, et reagi a la demande de fermeture des applications lors de la fermeture d'une session...
Ma question est simple, quelqu'un a t il une idée pour "ancré" mon appli Java a mon service...et ou empeché sa fermeture innopinée....
Un grand merci au maitre Delphi qui sera me repondre!!!!
Ci dessous mon code de test :
chdir('C:\divers\java\serveurweb\');
If CreateProcess(Nil, PChar(repertoire+programme), Nil, nil, false,0, Nil, 'C:\divers\java\serveurweb\', StartInfo,ProcessInfo) Then
Begin
{ L'application est bien lancée, on va en attendre la fin }
{ ProcessInfo.hProcess contient le handle du process principal de l'application }
Fin:=False;
Repeat
{ On attend la fin de l'application }
Case WaitForSingleObject(ProcessInfo.hProcess, 200)Of
WAIT_OBJECT_0 :Fin:=True; { L'application est terminée, on sort }
WAIT_TIMEOUT :; { elle n'est pas terminée, on continue d'attendre }
End;
davidfdm2002
Messages postés14Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention21 mai 2006 4 mai 2005 à 10:10
Je repond a ma question, comme j'ai trouvé la reponse.
Il suffit d 'executer le java.exe avec l'option -Xrs.
Cette option "court circuite" les messages de fermetures de windows.
Ne pas oublier de gerer la fermeture dans le programme JAVA.
davidfdm2002
Messages postés14Date d'inscriptionlundi 18 avril 2005StatutMembreDernière intervention21 mai 2006 23 avril 2005 à 01:11
La montagne ne vient pas a moi, donc j'essaye d'aller a la montagne.
Java est normalement independant de la plateforme, tout ce qui est specifique a un systeme est donc difficilement réalisable. Un service Windows Java est donc presque une absurdité puisque cela rend mon aplication non portable sur les autres systemes (mac et lynux).
Cependant mon application se connectant a mon serveur est fait en java , il est donc plus simple d'avoir le serveur en java.
Malheureusement pour lancer le serveur web il est necessaire de garder une session utilisateur ouverte, ce qui sur windows n'est pas tres pratique.
Il existe bien un outils java pour la realisation de services (utilisé par le serveur tomcat par exemple ), mais il est lourd et contraignant, et n'etant pas proprietaire du code, tout changement ou bug risque de rendre mon programme egalement buggé. Donc je prefererai etre proprietaire a 100% de l'ensemble du code. Delphi me permet de realiser facilement un service, mais voila, il me manque un petit quelque chose, un je ne sais quoi qui empeche l'appli java d'etre vu comme dependant du service.
Voila
Toute aide sera la bienvenue.