Spring Boot Jetty не поддерживается в GAE, но приводит к сбою моих тестов при удалении? - PullRequest
0 голосов
/ 06 мая 2018

Я создаю 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.

1 Ответ

0 голосов
/ 06 мая 2018

Похоже, что при загрузке Spring по умолчанию начальный Jetty по умолчанию равен 9.1. Можете ли вы попробовать переопределить значение по умолчанию для более ранних версий Jetty, добавив его (в POM), который использует JSR-353, чтобы увидеть, устраняет ли это проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...