Domino 9 und frühere Versionen > ND6: Administration & Userprobleme
Websphere JSP Seiten crashen Dominoserver
Marinero Atlántico:
Ralf,
ich bin mir zu 99.8% sicher, dass irgendwo in der Servlet-Spec 2.3 steht, dass bei einem stopp des Servers:
1. sämtliche service-Methoden Threads des Servlets (also doPost, doGet, etc, jspService (oder so ähnlich)) bis zu Ende ausgeführt werden
2. die destroy Methoden des Servlets aufgerufen werdne
3. die Servlets aus dem Speicher entfernt werden
4. der Server runterfährt.
Also, ein sehr geordneter Prozess.
Hilft natürlich nichts, wenn der Stecker rausgezogen wird, wobei IBM dieses Problem in WAS6 angehen will.
Du solltest aber auf jeden Fall den Teil:
--- Code: ---<%
NotesThread.sinitThread();
...
NotesThread.stermThread();
--- Ende Code ---
in einen try-catch einschliessen.
vielleicht hilfts ja
Axel
Ralf_M_Petter:
Hallo Axel!
Was meinst du mit Punkt1 was wird da aufgerufen, oder meinst du er wartet bis alle Threads fertig sind?
Mein Code sieht folgendermassen aus. natürlich vereinfacht.
<%@ page import="lotus.domino.*" %>
<%
try {
NotesThread.sinitThread();
ses = NotesFactory.createSession();
// Tue jetzt was immer du willst mit der Session
}
catch (NotesException ne) {
ne.printStackTrace();
}
finally {
ses.recycle();
NotesThread.stermThread();
}
%>
// Hier kommt dann alles was Design ist.
Das einzige Risiko, dass ich noch sehe ist, dass wenn er bei der Anweisung wo er die Session erstellt einen Fehler macht ses eventuell null ist und er dann im finally ein Problem hat. Weisst du zufällig was passiert wenn im finally eine Exception geworfen wird, also z.B. bei ses.recycle();
Das rätselhafte ist, ja wenn er einmal läuft so wie jetzt und keine Fehlermeldungen kommen wie z.B. die MCH3601 im Joblog des Websphere Servers dann läuft er über Stunden auch unter Last. Probleme gibts nur beim beenden und starten, wenn man das War updaten will.
Grüße und danke für die Anregungen.
Grüße
Ralf
Marinero Atlántico:
Die service() Methoden (also doPost, etc. s.o.) sind ja MultiThreaded, d.h. es wird pro Aufruf ein neuer Thread erzeugt.
Bsp.: Request1 von User hat zu einem neuen Thread des Servlets geführt. In diesem Thread wird die Methode org.apache.jsp._einbaut._jspService(_einbaut.java) durchgelaufen. Dort ist ja der meiste code des jsps.
Ich bin mir zu 99.8% sicher, dass bei einem "normalen" Beenden des Servers diese Methoden zu Ende bearbeitet werden. Der Server wartet solange mit dem Runterfahren.
Wenn in finally ein Fehler geworfen wird, wird das an den Aufrufer delegiert, d.h. der wirft die Exception und springt aus der Methode: normales Fehlerverhalten (es sei denn es wird gecached).
Du kannst ja mal versuchen im finally auf ses != null abzufragen.
Gruß Axel
Ralf_M_Petter:
Werde ich probieren, sind halt nur jede Menge JSP's aber sicher einen Versuch wert.
Grüße
Ralf
Marinero Atlántico:
kann mir jetzt nicht die Bemerkung verkneifen, dass mit einem einigermassen sauberen Objektmodell und Model2 Schichtung dieses Problem wesentlich kleiner wäre. ;D
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln