Ich versuche, meine Spring Application programmatisch neu zu starten, ohne dass der Benutzer eingreifen muss.Neustart der Spring Boot-Anwendung/Refresh Spring Context
Grundsätzlich habe ich eine Seite, die es erlaubt, den Modus der Anwendung zu wechseln (eigentlich bedeutet das Umschalten des gerade aktiven Profils) und soweit ich weiß muss ich den Kontext neu starten.
Derzeit mein Code ist sehr einfach, es ist nur für das Neustarten Bit (dies ist Kotlin by the way):
context.close()
application.setEnvironment(context.environment)
ClassUtils.overrideThreadContextClassLoader(application.javaClass.classLoader)
context = application.run(*argsArray)
jedoch der Moment, als ich context.close()
tun die JVM sofort vorhanden ist. Ich habe auch versucht context.refresh()
, aber das scheint Tomcat/Jetty einfach zu töten (versuchte beide nur für den Fall, dass es ein Tomcat-Problem war) und dann passiert nichts.
Ich habe auch gesehen Programmatically restart Spring Boot application aber nichts scheint für mich aus diesen Antworten zu arbeiten. Außerdem habe ich mir Spring Actuator angeschaut, der angeblich den /restart
Endpunkt hat, aber das scheint nicht mehr da zu sein?
Hilfe wäre sehr willkommen. Vielen Dank.
Ich habe gerade gelesen, etwas über Federwolke letzte Mal, und es wurde endpoint' ein 'aufzufrischen, die al erfrischt die Bohnen im Kontext. Vielleicht findest du dort etwas hilfreiches. [Refresh Scope] (http://projects.spring.io/spring-cloud/spring-cloud.html) – Patrick
Warum ist das mit "java" markiert? –
Weil es mir egal war, wenn jemand eine Lösung in Java oder Kotlin hatte. Kotlin hat in dieser Frage keine Bedeutung. – Crembo