2017-02-07 1 views
0

Ich habe ein Argument mit meiner Spring Boot powered Web-Anwendung. Ich versuche, einen @ Scheduled Cron-Ausdruck von der Befehlszeile zu überschreiben, aber Frühling reagiert mit einer java.lang.IllegalStateException.Spring Boot cmd Zeile Cron Ausdruck java.lang.IllegalStateException

Initialization of bean failed; 
nested exception is java.lang.IllegalStateException: 
Encountered invalid @Scheduled method 'work': 
Cron expression must consist of 6 fields (found 1 in "0") 

Ich habe eine Federkomponente mit einem Scheduled Annotation:

@Scheduled(cron="${myapp.cron}") 
public void work() { 
    ... 
} 

Es gibt eine application.properties-Datei wie folgt:

myapp.cron=0 0 1 * * * 

ich Bündelung der Anwendung mit Maven eine JAR-Datei. Die Anwendung läuft auf einem Ubuntu-Rechner mit Java 8 als Init-Task (/etc/init/myapp.conf).

description "My app" 

start on runlevel [2345] 
stop on runlevel [!2345] 
respawn 
respawn limit 10 5 

setuid <USER> 
setgid <GROUP> 

script 
    java -Xms2G -Xmx2G -jar /opt/myapp.jar \ 
     --server.port=4014 \ 
     --server.address=127.0.0.1 
     --logging.file=/opt/myapp.log \ 
     --logging.level.root=INFO 
end script 

Bis zu diesem Punkt ist alles in Ordnung. Das Hinzufügen der folgenden Zeile gibt die oben erwähnte Ausnahme.

--myapp.cron=0 0 8 * * * 

Irgendwelche Ideen? Was ist los mit dir?

Cheers, Kai

Antwort

0

Kai,

Sie sind in den 0 0 8 * * * als Befehlszeilenparameter, um es im Frühjahr Umwelt zu erhalten vorbei. Allerdings bekommt Ihre App nur den ersten 0 als variablen Wert, daher die Ausnahme zu den benötigten 6 Teilen. Umgeben Sie den Wert mit Anführungszeichen statt:

--myapp.cron="0 0 8 * * *" 
+0

gut spoted, vielen Dank – Kai