المزالق التي صعدت إليها في المرحلة المبكرة (Spring Boot 1.x)
1. إضافة تبعيات مافني
<!-مراقبة Springboot-> <reperency> <roupiD> org.springframework.boot </rougeid> <StifactId> spring-boot-starter-actuator </stifactid> </rependency>
2. تمكين الإغلاق
أضف ملف التكوين التالي
#ENable HTTP Access of Unddown Endpoint Endpoint Endpoint Point Point Pointpoint Point.Shutdown.endabled = True#لا حاجة للتحقق
يمكنك رؤية السجل التالي عند البدء ، مما يعني أنه ناجح
3. إغلاق أنيقة
أرسل طلب البريد http: // localhost: 8080/stakning
إذا كان رمز الاستجابة هو 404 ، فيمكنك تجربة نشر http: // localhost: 8080/actuator/staken
SPRING BOOT 2.0
إذا كان إصدار SPRING BOOT الذي تستخدمه هو 2.x ، فستجد أن هذه الطلبات المنشورة ستكون نتيجة 404.
إليكم كيف يتم تنفيذ عملية التوقف عن العمل الأنيقة Spring Boot 2.0.
1. تعديل فئة بدء تشغيل التطبيق
حاوية tomcat
springbootapplicationpublicpublic stheDdownApplication {public static void main (string [] args) {springapplication.run (sthowddownapplication.class ، args) ؛ } / *** تستخدم لقبول أحداث الإغلاق* / bean public graceshutdown gracefulshutdown () {return new gracehutdown () ؛ } / ** * تكوين tomcat * * return * / bean public servleTwebServerFactory servletContainer () {tomcatservletwebletserverfactory tomcat = newCatservleTwebServerFactory () ؛ Tomcat.AddConnectorCustomizers (Gracefulshutdown ()) ؛ إرجاع Tomcat. } /*** أغلق صندوق الربيع بأمان. يجب أن تكون الحاوية tomcat */ private class gracehutdown تنفذ tomcatconnectorcustomizer ، applicationListener <ContextClosedEvent> {private final logger log = loggerfactory.getLogger (gracefulshutdown.class) ؛ موصل الموصل المتقلبة الخاص ؛ Final Final Waittime = 10 ؛ Override public void تخصيص (موصل الموصل) {this.connector = connector ؛ } Override public void onapplicationEvent (contextClosedEvent contextClosedEvent) {this.connector.pause () ؛ Executor executor = this.connector.getProtocolhandler (). getExecutor () ؛ if (مثيل Executor of threadpoolexecutor) {try {threadpoolexecutor threadpoolexecutor = (threadpoolexecutor) executor ؛ threadpoolexecutor.shutdown () ؛ if (! threadpoolexecutor.awaitTermination (waittime ، timeUnit.Seconds)) {log.warn ("لا يمكن أن تنتهي عملية tomcat في" + waittime + "Seconds ، حاول فرض النهاية") ؛ }} catch (interruptedException ex) {thread.currentThread (). interrupt () ؛ }}}}}}}}}}}}}تعهد حاوية (غير مستخدم ، وليس مضمونًا ليكون متاحًا)
springbootapplicationpublicpublic application {public static void main (string [] args) {springapplication.run (application.class ، args) ؛ } / ** * أغلق SPRING BOOT بشكل أنيق * / component فئة عامة GRACKULSHUTDOWN تنفذ ApplicationListener <ContextClosedEvent> {AUTOWIRED PRIVATE GRACKULSHUTDOWNWRAPPER GRACKULSHUTDOWNWRAPPER ؛ @autowired servletWebServerApplicationContext السياق ؛ Override public void onapplicationEvent (contextClosedEvent contextClosedEvent) {gracefulshutdownwrapper.getGracefulshutDownler (). stapdown () ؛ حاول {endrentowservletwebserver webserver = (endrentowservletwebserver) context.getWebserver () ؛ حقل الحقل = webserver.getClass (). Field.SetAccessible (صحيح) ؛ Undertow endrudtow = (endretow) field.get (WebServer) ؛ قائمة <UnderTow.ListenerInfo> leaderInfo = endrettow.getListenerInfo () ؛ undertow.ListenerInfo Bearner = leaderInfo.get (0) ؛ ConnectorStatistics ConnectorStatistics = leader.getConnectorStatistic () ؛ بينما (ConnectorStatistics.getActivEconnections ()> 0) {}} catch (استثناء e) {// application kughdown}}} @class public class gracehutdownwrapper تنفذ HandlerWrapper {private gracehuthutdownler graceshutdownler ؛ Override public httphandler wrap (httphandler handler) {if (gracefulshutdownhandler == null) {this.gracefulShutDownler = new GraceShutDownler (Handler) ؛ } إرجاع GracefulShutDownler ؛ } Gracefulshutdownler getGraceflshutDownler () {return Graceflshutdownler ؛ }} @componentLArgSconstructor الفئة العامة endrTowExtRaconFiguration {private Final GraceShutDownWrapper GracefulshutDownWrapper ؛ Bean Public MeurntOwSerVletWebServerfactory servletWebServerFactory () {endrentowservletwebserverfactory = new MeurtowServletWebSterverFactory () ؛ مصنع. مصنع. عودة المصنع }}}2. استخدم أمر القتل لقتل العملية
استخدم الأمر التالي لقتل العملية. يرسل هذا الأمر إشارة إنهاء إلى عملية.
قتل -15 [PID]
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.