Сбой моего приложения весенней загрузки после запуска с NPE на сервере Tomcat при запуске на службе Azure Kubernetes с SSL.
Во-первых, что работает успешно: у меня есть минимальное приложение Spring-boot, созданное с помощьюSpring Initializr:
- Проект Gradle
- Java 11
- Spring Boot 2.1.8
- Единственная зависимость: Spring Web
Я хочу использовать его с кластером kubernetes в лазурном облаке.Для этого у меня есть служба Azure Kubernetes (AKS).И я использую клив для создания образа докера.До этого момента все отлично работало.Я могу развернуть свой образ докера в реестре Azure Docker, запустить кластер kubernetes (с 1 узлом) и получить свой «мир приветствия» после вызова «http://public -ip : 8443 / hello».Я использую порт 8443, но с обычным http, чтобы убедиться, что этот порт не является источником моей проблемы.
Я хочу, чтобы мое приложение поддерживало HTTPS, поэтому я создал самозаверяющий сертификат с помощью keytool (как описано здесь: Включить HTTPS с самозаверяющим сертификатом в Spring Boot 2.0 ).Это прекрасно работает на localhost.Он также работает внутри миникуба, работающего на localhost.Но когда я использую этот образ Docker в AKS, мое приложение перестает работать через несколько секунд после запуска.
Я активировал
logging.level.org.apache.tomcat=DEBUG
logging.level.org.apache.catalina=DEBUG
в моем application.properties.Вывод моего приложения:
2019-09-19 08:22:51.291 INFO 1 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 9.623 seconds (JVM running for 10.419)
2019-09-19 08:22:53.775 DEBUG 1 --- [o-8443-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[https-jsse-nio-8443-Acceptor] latch=1
2019-09-19 08:22:58.764 DEBUG 1 --- [o-8443-Acceptor] o.apache.tomcat.util.threads.LimitLatch : Counting up[https-jsse-nio-8443-Acceptor] latch=2
2019-09-19 08:22:58.793 DEBUG 1 --- [nio-8443-exec-1] org.apache.tomcat.util.modeler.Registry : Managed= Tomcat:type=RequestProcessor,worker="https-jsse-nio-8443",name=HttpRequest1
2019-09-19 08:22:58.793 DEBUG 1 --- [nio-8443-exec-1] org.apache.tomcat.util.modeler.Registry : Looking for descriptor
2019-09-19 08:22:58.793 DEBUG 1 --- [nio-8443-exec-1] org.apache.tomcat.util.modeler.Registry : Introspecting
2019-09-19 08:22:58.793 DEBUG 1 --- [nio-8443-exec-1] m.m.MbeansDescriptorsIntrospectionSource : Introspected attribute virtualHost public java.lang.String org.apache.coyote.RequestInfo.getVirtualHost() null
<snipped 20 lines of "Introspected attribute xyz">
2019-09-19 08:22:58.796 DEBUG 1 --- [nio-8443-exec-1] m.m.MbeansDescriptorsIntrospectionSource : Introspected attribute lastRequestProcessingTime public long org.apache.coyote.RequestInfo.getLastRequestProcessingTime() public void org.apache.coyote.RequestInfo.setLastRequestProcessingTime(long)
2019-09-19 08:22:58.796 DEBUG 1 --- [nio-8443-exec-1] m.m.MbeansDescriptorsIntrospectionSource : Introspected attribute errorCount public int org.apache.coyote.RequestInfo.getErrorCount() public void org.apache.coyote.RequestInfo.setErrorCount(int)
2019-09-19 08:22:58.796 DEBUG 1 --- [nio-8443-exec-1] m.m.MbeansDescriptorsIntrospectionSource : Setting name: org.apache.coyote.RequestInfo
2019-09-19 08:22:58.797 DEBUG 1 --- [nio-8443-exec-1] o.a.tomcat.util.modeler.BaseModelMBean : preRegister org.apache.coyote.RequestInfo@21c6ab25 Tomcat:type=RequestProcessor,worker="https-jsse-nio-8443",name=HttpRequest1
2019-09-19 08:22:58.797 ERROR 1 --- [nio-8443-exec-1] o.a.coyote.http11.Http11NioProtocol : Error reading request, ignored
java.lang.NullPointerException: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.getSslSupport(NioEndpoint.java:1392) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1593) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.24.jar:9.0.24]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Может кто-нибудь подсказать мне, в чем может быть моя проблема?Спасибо!