Stephan: Java als Windows Dienst laufen lassen?

Hallo zusammen,

mit den Tools aus dem NT4 Resource Kit hab ich es geschafft ein Java Programm (oc4j) per Dienst (unter XP) laufen zu lassen (srvany.exe und instsrv.exe). Soweit so gut, doch leider tauchen jetzt ein paar ganz komische Effekte auf.

Das Java wird direkt (ohne batch file) aufgerufen mit den entsprechenen Parametern. Der Dienst läuft im SYSTEM Kontext(ohne Kommunikation zum AW) und wird automatisch gestartet. Ist an der XP Maschine niemand eingeloggt und ich starte den Dienst per Remote von einer anderen Maschine dann läuft das Java an und alles funktioniert. Log ich mich jetzt an der Maschine an (egal ob lokal oder über remote) dann läuft der Dienst weiter, aber sobald ich mich auslogge stirbt das java.
Wenn ich nun per remote nachfrage wie es dem dienst geht (sc \computer query myservice) dann sagt er "running", obwohl die Java nicht mehr erreichbar ist. Danach kann ich den Dienst stoppen und wieder starten dann läuft wieder alles...

Was kann denn das sein? Jedesmal wenn sich lokal jemand ausloggt reisst er den Dienst mit runter...
Hat vielleicht jemand von den Profis eine Idee?

Schöne Grüße - Stephan

  1. Hi,

    Was kann denn das sein? Jedesmal wenn sich lokal jemand ausloggt reisst er den Dienst mit runter...

    Unter welchem User-Account läuft der Dienst?

    Wenn der Dienst user-unabhängig laufen soll, ist glaub ich "Lokales Systemkonto" das richtige (unter dem läuft z.B. das Java-Programm Tomcat)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas,

      der Dienst läuft im Systemkontext also "Lokales Systemkonto" und der Hacken für Clientkommunikation ist deaktivert.

      Gruß
      Stephan

  2. Hi,

    Hat vielleicht jemand von den Profis eine Idee?

    ist es eventuell eine Idee einen Windows-Dienst an den Start zu bringen, der dann bei Bedarf ganz trocken per shell die JVM incl. Package startet bzw. beendet? Das "lokale Systemkonto" (wie MudGuard schreibt) sollte dafuer geeignet sein. Du koenntest zudem in die Ereignisprozeduren des von M$ angelieferten Windowsdienst-Templates schreiben, was beim Starten des Dienstes oder beim Beenden desselben geschehen soll (z.B. Java-Package incl. JVM hochkommen lassen oder beides beenden).

    Gruss,
    Ludger

    --
    "Die SPD im Aufwind?"