Frage

müssen wir eine Funktion in regelmäßigen Abständen in Java-Web-Anwendung ausgeführt werden. Wie Funktion einer Klasse in regelmäßigen Abständen nennen? Gibt es eine Möglichkeit, dass die Anruffunktion, wenn ein Ereignis wie hohe Belastung in Server aufgetreten und so weiter. was ist crontab? Ist das Arbeiten in regelmäßigen Abständen?

War es hilfreich?

Lösung

rufen, um etwas in regelmäßigen Abständen finden Sie unter Timertask

Andere Tipps

Wenn Sie etwas robustere benötigen, können Sie verwenden Quartz

Wie bei crontab ist das Planungstool auf Unix-Rechnern.

Für Methoden aufrufen, wenn der Server hohe Last hat, müssen Sie mindestens zwei mögliche Ansätze. Ihre App Server möglicherweise Management Haken haben, die Ihnen erlauben würde, sein Verhalten und nehmen progrommatic Aktion zu überwachen. Alterntaively haben Sie einige Systemüberwachungsfähigkeit (z. B. Tivoli oder Openview) und erzeugt „Ereignisse“, sollte es nicht allzu schwierig sein, solche Ereignisse zu liefern, wie (zum Beispiel) JMS-Nachrichten und Ihre Server sie abholen.

Allerdings möchten Sie vielleicht ein wenig mehr darüber erklären, was Sie erreichen wollen. Adaptive Anwendung beahviour könnte ziemlich schwierig sein, richtig zu machen.

Wenn Sie etwas regelmäßig ausführen möchten, tun Sie es nicht in den Webserver. Das wäre IMO ein sehr falscher Ansatz. Es ist besser zu Einsatz cron stattdessen, wenn Sie auf einem Unix-ähnliches Betriebssystem sind. Windows-Server bieten eine ähnliche Funktionalität.

Wenn Sie bereits Frühling verwenden, könnten Sie einen Blick auf Spring Aufgabenausführung Rahmen haben wollen - mit @Scheduled und @Async für Methoden wie Aufgaben mit Anmerkungen versehen und Umsetzung der Funktionalität in einem Prozessor, dass die Delegierten die eigentliche Arbeit an einen Arbeiter, als beschrieben in:

http: // blog .springsource.com / 2010/01/05 / Task-Scheduling-Vereinfachungen-in-Feder-3-0 /

Der Vorteil ist, dass Sie Timer mit einer cron-ähnlichen Syntax im Frühjahr Kontext definieren können und Sie nicht etwas Besonderes benötigen weitere Aufgaben einzurichten, ist es auch gut integriert in Java EE-Anwendungen und soll gut mit Web-Servern spielen (die benutzerdefinierten Themen sind in der Regel nicht immer zu tun).

  

Wie Funktion einer Klasse rufen regelmäßig?

Es gibt mehrere Lösungen: a Timer , eine Java-Implementierung cron wie cron4j , Quartz oder sogar die EJB Timer-API . Die Wahl der einen oder der anderen hängt stark vom Kontext ab: der Art der Anwendung, die verwendeten Technologien, die Zahl der Arbeitsplätze, etc.

.
  

Gibt es eine Möglichkeit, dass die Anruffunktion, wenn ein Ereignis wie hohe Belastung in Server aufgetreten ist, und so weiter

Sie könnten vielleicht JMX verwenden in Ihren Jobs für den Zugriff und Monitor Informationen und lösen eine Aktion unter einem bestimmten Zustand. Aber das ist mehr ein Pull-Modus, nicht Ereignis basiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top