AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dienst "Wiederherstellen"-Option einstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst "Wiederherstellen"-Option einstellen

Ein Thema von gsh · begonnen am 22. Jan 2007 · letzter Beitrag vom 2. Feb 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

Dienst "Wiederherstellen"-Option einstellen

  Alt 22. Jan 2007, 12:11
Hi DPLer

ich möchte eigentlich das gleiche wie hier aber leider ist bei diesem thema ist keine antwort für mich rausgekommen.

Also nochmal fürs Protokoll: Ich programmiere einen Dienst der später auf einem Server laufen soll. D.h. er sollte die ganze Zeit durchlaufen. Da ich nur ein mensch bin hat dieser Dienst sicher Fehler drinnen und jetzt möchte ich halt wenn der dienst abstürzt das der Dienst neu gestartet wird. Dies kann ich ja über die Option Wiederherstellen (In der dienstverwaltung -> unter Eigenschaften des Dienstes) erreichen. Nur wie schaff ich des der Dienst sich des selber einträgt?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#2

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 23. Jan 2007, 13:32
*push*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 24. Jan 2007, 14:44
*push²*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 19:18
Nunja, der Dienst kann schwerlich abstuerzen, wenn du SEH (try/except und try/finally) sinnvoll einsetzt. Daher sollte es ausreichen, wenn du es als Schleife konzipierst, ala:


Delphi-Quellcode:
while(ServiceRunning)do
try
// Hauptarbeit erledigen
except
// Fehler melden und naechsten Schleifendurchlauf angehen
end;
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#5

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 20:35
bringt mir gar nichts
Da das programm sehr leicht über den tcpserver und so weiter abstürzen kann.

Aber des ist ja auch egal wenn ich des alles über try except machen könnte dann würde ich ja nicht hier fragen
Außerdem ist es halt vorallem wichtig falls ich was vergessen hab zu sichern oder sonst was für ein problem auftritt das er ohne den benutzer neu startet
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 20:44
Zitat von gsh:
Da das programm sehr leicht über den tcpserver und so weiter abstürzen kann.
Tcpserver? Aehem, du hast schon gelesen was ich geschrieben habe, oder? Ist doch piepegal ob innerhalb des try/except-Blocks was abstuerzt. Dann geht's eben weiter mit der naechsten Schleife. Service-Hauptfunktionen sind ohnehin ueblicherweise als Schleife implementiert. Es ist also ueberhaupt kein Problem, auch wenn du eins draus machen willst.

Oder reden wir hier von einem externen Prozess, mit dem dein Service kommuniziert?

Zitat von gsh:
Aber des ist ja auch egal wenn ich des alles über try except machen könnte dann würde ich ja nicht hier fragen
Außerdem ist es halt vorallem wichtig falls ich was vergessen hab zu sichern oder sonst was für ein problem auftritt das er ohne den benutzer neu startet
Okay, wenn es nicht via SEH geht, dann hast du hier offenbar wichtige Fakten verschwiegen, die unabdingbar fuer eine sinnvolle Antwort sind. Das ist dann aber eher dein Problem.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 21:06
Zitat von Olli:
Tcpserver? Aehem, du hast schon gelesen was ich geschrieben habe, oder? Ist doch piepegal ob innerhalb des try/except-Blocks was abstuerzt. Dann geht's eben weiter mit der naechsten Schleife. Service-Hauptfunktionen sind ohnehin ueblicherweise als Schleife implementiert. Es ist also ueberhaupt kein Problem, auch wenn du eins draus machen willst.
ja schon aber den service kann ich nicht in eine schleife packen. Da ich mit dem tcp server ereigniss orientiert bin.

Zitat von Olli:
Oder reden wir hier von einem externen Prozess, mit dem dein Service kommuniziert?
Weiss jetzt nicht genau was du meinst. Wenn du meinst des sich Clients auf dem server connecten und ab und zu mal ne message schicken worauf der server reagieren muss dann JA

Zitat von Olli:
Okay, wenn es nicht via SEH geht, dann hast du hier offenbar wichtige Fakten verschwiegen, die unabdingbar fuer eine sinnvolle Antwort sind. Das ist dann aber eher dein Problem.
SEH? Wichtige Fakten vergessen? Wenn ich frag wie man die Wiederherstellungs Optionen einstellen kann, was brauchst du dann für Fakten?
Außerdem will ich dieses Wissen dann nicht nur für diesen Fall nutzen. Da ich mir sicher bin das ich noch andere Service schreiben werde wo ich des auch gut gebrauchen kann
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 21:24
Zitat von gsh:
ja schon aber den service kann ich nicht in eine schleife packen. Da ich mit dem tcp server ereigniss orientiert bin.
Okay, an welcher Stelle kollidiert das jetzt mit meiner Aussage? Ich gehe mal davon aus, dass du eine TCP-Server-Komponente (Indy oder aehnliches) meinst. Dann wuerde der Absturz aber nach wie vor abgefangen und der "Server" (als neue Instanz) im naechsten Schleifendurchlauf neu erzeugt.

Zitat von gsh:
Weiss jetzt nicht genau was du meinst. Wenn du meinst des sich Clients auf dem server connecten und ab und zu mal ne message schicken worauf der server reagieren muss dann JA
Nein, ich meine das was du als "TCP-Server" und das was du als "Dienst" bezeichnest. Sind das separate Prozesse?

Zitat von gsh:
SEH?
Structured Exception Handling -> try/except und try/finally

Zitat von gsh:
Wichtige Fakten vergessen? Wenn ich frag wie man die Wiederherstellungs Optionen einstellen kann, was brauchst du dann für Fakten?
Okay, was genau meinst du dann mit "Wiederherstellung-Optionen". Offenbar ein weiteres Missverstaendnis?! Ich habe NT-Dienste schon vor ueber 6 Jahren geschrieben aber davon noch nichts gehoert, weswegen es sich entweder um etwas Bekanntes unter neuem Namen oder um etwas neues und Unbekanntes handeln duerfte.

Zitat von gsh:
Außerdem will ich dieses Wissen dann nicht nur für diesen Fall nutzen. Da ich mir sicher bin das ich noch andere Service schreiben werde wo ich des auch gut gebrauchen kann
Ja, genau deshalb solltest du robusten Code schreiben und SEH (sinnvoll) benutzen.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#9

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 21:44
Zitat von Olli:
Okay, an welcher Stelle kollidiert das jetzt mit meiner Aussage? Ich gehe mal davon aus, dass du eine TCP-Server-Komponente (Indy oder aehnliches) meinst. Dann wuerde der Absturz aber nach wie vor abgefangen und der "Server" (als neue Instanz) im naechsten Schleifendurchlauf neu erzeugt.
ja ich meine einen Indy server.
1. macht der Dienst nicht nur des.
2. wenn ich den server in deiner schleife auf active := true setzten würde dann würde er in einem anderen thread arbeiten anfangen und er würde die schleife weiter abarbeiten da kein fehler aufgetreten ist würde er wieder an den anfang der schleife springen und wieder den server auf True setzten. ... Ich glaub das wäre sehr schwer zu realiesieren und außerdem möchte ich nicht das die ganze zeit ein schleife durchläuft
3. Bevor mir da jetzt noch länger streiten. Es ist doch eigentlich egal was der dienst macht

Zitat von Olli:
Nein, ich meine das was du als "TCP-Server" und das was du als "Dienst" bezeichnest. Sind das separate Prozesse?
Der TCP-Server ist ein idTCPServer (Indy) der als komponente auf dem Dienst läuft.

Zitat von Olli:
Okay, was genau meinst du dann mit "Wiederherstellung-Optionen". Offenbar ein weiteres Missverstaendnis?! Ich habe NT-Dienste schon vor ueber 6 Jahren geschrieben aber davon noch nichts gehoert, weswegen es sich entweder um etwas Bekanntes unter neuem Namen oder um etwas neues und Unbekanntes handeln duerfte.
Geh mal Systemsteuerung -> Verwaltung -> Dienste
Dort klickst du auf einen dienst rechts drauf -> Eigenschaften
Dort gibt es einen Reiter "Wiederherstellung". Genau des meine ich

Zitat von Olli:
Ja, genau deshalb solltest du robusten Code schreiben und SEH (sinnvoll) benutzen.
Ja das versuche ich ja, aber ich bin auch nur ein Mensch
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Dienst "Wiederherstellen"-Option einstellen

  Alt 25. Jan 2007, 22:02
Zitat von gsh:
ja ich meine einen Indy server.
1. macht der Dienst nicht nur des.
2. wenn ich den server in deiner schleife auf active := true setzten würde dann würde er in einem anderen thread arbeiten anfangen und er würde die schleife weiter abarbeiten da kein fehler aufgetreten ist würde er wieder an den anfang der schleife springen und wieder den server auf True setzten. ... Ich glaub das wäre sehr schwer zu realiesieren und außerdem möchte ich nicht das die ganze zeit ein schleife durchläuft
Angenommen es ist in einem Thread (der ja seine eigene SEH-Sicherung von Windows bekommt), wuerde sich ja genau dieser Thread beenden. Damit waeren wir wieder am Ausgang unseres Gespraeches: du koenntest die Beendigung des Threads in einer Schleife mit WaitForSingleObject ueberwachen und darauf reagieren indem du den Thread neu startest oder eine neue Serverinstanz erzeugst.

Somit muesstest du noch nichtmal die Failure-Optionen setzen ... aber naja, scheint wohl eine Geschmacksfrage zu sein, ob man fuer die TCB robusten Code bevorzugt, oder lieber moegliche Sicherheitsloecher aufreisst.

Zitat von gsh:
3. Bevor mir da jetzt noch länger streiten. Es ist doch eigentlich egal was der dienst macht
Stimmt genau.

Zitat von gsh:
Geh mal Systemsteuerung -> Verwaltung -> Dienste
Dort klickst du auf einen dienst rechts drauf -> Eigenschaften
Dort gibt es einen Reiter "Wiederherstellung". Genau des meine ich
Ah, gut. Danke.

Dazu benutzt du MSDN-Library durchsuchenQueryServiceConfig2 und MSDN-Library durchsuchenChangeServiceConfig2 jeweils mit SERVICE_CONFIG_FAILURE_ACTIONS und der SERVICE_FAILURE_ACTIONS-Struktur. Sollte bei JEDI-Apilib enthalten sein ...

Zitat von gsh:
Ja das versuche ich ja, aber ich bin auch nur ein Mensch
Sind wir doch alle ... soweit ich weiss *g*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz