Я создаю API с помощью Spring Boot, который развертывается в Google App Engine с Travis CI.
Я запустил свой код из начального проекта Google (https://github.com/GoogleCloudPlatform/getting-started-java/tree/master/appengine-standard-java8/springboot-appengine-standard),, который не использует зависимость spring-boot-starter-jetty
. Таким образом, мой проект также не нуждался в этом, и все развертывалось нормально.
Это было до тех пор, пока я не решил добавить тест, использующий метод Spring * TestRestTemplate.getForEntity()
, чтобы достичь базовой конечной точки, на которую я мог утверждать, просто чтобы дать мне некоторое спокойствие, что конечная точка может быть достигнута сквозной. Тем не менее, я получил следующую ошибку при локальном запуске теста:
java.lang.IllegalStateException: Failed to load ApplicationContext
[stacktrace]
Caused by: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
[stacktrace]
Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
Оглядевшись, стало очевидно, что я должен добавить spring-boot-starter-jetty
, и тест начал проходить! Все выглядело отлично.
Однако после фиксации и развертывания в GAE я теперь получаю 500 Ошибка при попытке попасть в конечную точку.
Я немного покопался в Stackdriver, и выдается ошибка:
java.lang.RuntimeException: javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailable
Я предполагаю, что поддержка JSR-356 требуется spring-boot-starter-jetty
, что, как я полагаю, GAE не поддерживает, следовательно, ошибка. Я сообщил об этом вверх по течению здесь: https://issuetracker.google.com/issues/79235250
Есть ли способ добавить зависимость без поддержки JSR-356 или есть другой способ получить тест HTTP сквозной проверки для прохождения?
Вы можете посмотреть мой исходный код здесь: https://github.com/bytelucas/nohold - тест, о котором идет речь, HTTPRequestTest.java
.