2016-08-20 2 views
0

Wie kann ich eine Methode starten, auch der Server ist ganz oben und läuft? Momentan implementiere ich einen Dateiwatcher. Ich möchte den Dateiwatcher beim Start vom Server starten. Aber aufgrund der while() Schleife in meiner Methode wird der Server nicht gestartet und in der Zeitüberschreitung gehen. Daher möchte ich den FileWatcher starten sobald der Server und meine Web App erfolgreich deployed sind.@Startup - Wildfly Server Start-Methode, wenn Anwendung erfolgreich bereitgestellt

@Startup 
@Singleton 
public class FileWatcher { 
    @PostConstruct 
    public void init() { 
     System.out.println("Init file Watcher "); 
     try { 
      doStartFileWatcher(); 
     } catch (Exception e) { 
     } 
    } 
} 

Wie kann ich das lösen?

+0

vielleicht entfernen @Startup tut, was Sie wollen. – xxlali

Antwort

0

Bei einer Schätzung führen Sie regelmäßig etwas für die FileWatcher-Klasse aus. Wie wäre es eine Änderung:

@Startup 
@Singleton 
public class FileWatcher { 

    @Schedule(hour = "*", minute = "*",persistent = false) 
    private void runFileWatcher() { 
    } 
} 

Die runFileWatcher Verfahren wird nun jede Minute am 0 Sekunden (das heißt 10.08.00) laufen. Würde das besser funktionieren?

+0

Nein, ich brauche dieses Adhoc. Sobald eine neue Datei im Ordner ist, muss ich in der App informieren –

+0

Aber haben Sie eine Endlosschleife ein Verzeichnis abfragen oder gibt es ein Ereignis? Sie könnten es zum Beispiel alle 5 Sekunden laufen lassen. Du würdest dafür eine Sekunde = "*/5" hinzufügen. – stdunbar

Verwandte Themen