如何在AppEngine Standard中运行的Spring Boot中设置上下文路径

时间:2018-09-27 12:35:34

标签: java spring spring-boot google-app-engine servlets

是否可以在以GCP AppEngine Standard运行的Spring Boot应用程序中设置上下文路径?

我想为所有资源添加一个隐式前缀。因此,如果@RestController/a/b,我希望访问它们,它们的URL始终是/my/prefix/a/my/prefix/b。在Spring Boot的常规嵌入式模式下,这可以通过设置server.servlet.context-path来实现。但是,AppEngine不遵守此设置。在其中,/my/prefix/a返回404,而我不得不使用/a

如何在AppEngine Standard中为所有资源添加通​​用前缀?对于AppEngine的服务/模块支持来说,这似乎是基本的,可以避免在所有控制器中重复前缀,但我找不到解决方法

1 个答案:

答案 0 :(得分:1)

根据我与Google Cloud Support小组的交谈-我得到确认,确认App Engine标准不支持/不支持spring-boot中设置的端口和上下文路径。

这是我从他们那里得到的答复:

“关于您对App Engine不遵守手动设置的端口号和上下文路径的担心,这是因为它应该在yaml文件中设置。

要将端口设置为7777,应通过端口转发来完成。但是,端口转发仅在App Engine Flex中可用。有关此的更多详细信息,您可以访问此页面[1]。

对于上下文路径,您可以使用标签并将其包含在appengine-web.xml文件中。这将在应用程序中设置包含静态文件的路径。您可以查看此文档[2]以获取更多信息。

您还可以在appengine-web.xml中包含标记,因为它对于提供静态内容(例如图像,CSS样式表或JavaScript文件)也很有用。您可以使用此参考文献[3]。

使用此解决方案或解决方法,这也解决了可以在App Engine中部署spring-boot应用程序的情况。

如果您还有其他问题,请告诉我。

谢谢您,祝您愉快!

[1] https://cloud.google.com/appengine/docs/flexible/custom-runtimes/configuring-your-app-with-app-yaml#port_forwarding [2] https://cloud.google.com/appengine/docs/standard/java/config/appref#public_root [3] https://cloud.google.com/appengine/docs/standard/java/config/appref#static_files

但是,将设置为某个值仍然不能将其用作上下文路径。因此,不得不放弃GAE。在此上浪费了很多时间-希望这对其他为此感到挣扎的人有用。