2009-04-02 5 views
1

Wir haben derzeit Batchjobs in Java, die mehrere (manchmal große) Dateien verarbeiten. Diese Jobs können einige Zeit dauern. Wir führen diese Dateien direkt in der JVM unter Verwendung von Java-Threads aus, die weiterhin in einer Schleife ausgeführt werden. (verarbeite Dateien und warte dann eine Weile).Laufende Batchprozesse in Bea Weblogic

Jetzt möchte die Firma, für die ich arbeite, diese Jobs im Weblogic-Anwendungsserver ausführen. Nicht weil es besser ist, sondern weil es die Standardplattform des Unternehmens ist.

Ein potenzielles Problem, das ich sehe, ist, dass BEA weblogic alle Threads überwacht und default sagt, dass Threads, die länger als 10 Minuten laufen, STUCK-Threads sind, die möglicherweise zu einem Server im FAILED-Zustand führen können.

Was ist die beste Vorgehensweise, dies in BEA Weblogic zu tun?

+0

Ich endete mit Quartz in Weblogic. Das funktioniert gut und gibt keine STUCK-Threads. – Edwin

Antwort

3

BEA Weblogic-Monitore fordern nur Threads für eine bestimmte Zeit an. Für Threads, die durch Code zur Bearbeitung von Anforderungen generiert werden, ist dies nicht der Fall. Wir haben den Quartz-Scheduler (von OpenSymphony) verwendet, um den Job in Weblogic zu planen, der bis zu 3-4 Stunden dauerte, um ihn zu beenden.

1

Weblogic Server bieten WorkManager, die längere Thread-Laufzeit unterstützen und für lange Arbeit optimiert sind (im Allgemeinen sind sie ein Framework um die guten alten ThreadPools). Für WorkManager können Sie die MaxThreadStuckTime definieren, die Zeit, nach der ein Thread als fest und wahrscheinlich getötet gilt.