我的项目在 App Engine 标准上使用 Python 已经有一段时间了,我们已经能够使用 dev_appserver.py 在本地运行服务。
最近,我们也开始在 Java 8 上开发服务。新服务正在使用 app-gradle-plugin 构建,并且可以使用 gradle 任务 appengineRun 在开发服务器上运行。但是,这些服务需要相互交互,所以我正在寻找一种方法来并行运行它们,尤其是在同一个 dev_appserver 进程上。
我尝试过:
运行 dev_appserver.py 并将其指向 Python 服务和 Java 服务的配置文件。这几乎似乎工作:dev_appserver 没有报告任何错误,它在端口 8080 和 8081 启动 Python 和 Java 应用程序。然后它在随机端口启动似乎是第二个 Jetty 服务器:
$ dev_appserver.py public-api/src/main/appengine/app.yaml api/api.yaml
INFO 2018-02-16 21:23:05,712 devappserver2.py:105] Skipping SDK update check.
INFO 2018-02-16 21:23:05,758 api_server.py:308] Starting API server at: http://localhost:58551
INFO 2018-02-16 21:23:05,764 dispatcher.py:255] Starting module "public-api" running at: http://localhost:8080
WARNING 2018-02-16 21:23:05,764 dispatcher.py:316] Your python27 micro version is below 2.7.12, our current production version.
INFO 2018-02-16 21:23:05,775 dispatcher.py:255] Starting module "api" running at: http://localhost:8081
INFO 2018-02-16 21:23:05,781 admin_server.py:146] Starting admin server at: http://localhost:8000
WARNING 2018-02-16 21:23:05,781 devappserver2.py:176] No default module found. Ignoring.
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.AbstractContainerService configure
WARNING: Null value for containerConfigProperties.get(devappserver.portMappingProvider)
2018-02-16 21:23:07.343:INFO::main: Logging initialized @521ms
2018-02-16 21:23:07.553:INFO:oejs.Server:main: jetty-9.3.18.v20170406
2018-02-16 21:23:07.667:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=0ms
2018-02-16 21:23:07.865:INFO:oejsh.ContextHandler:main: Started c.g.a.t.d.j.DevAppEngineWebAppContext@5fbe4146{/,file:///Users/gmiller/workspace/skynet/public-api/src/main/appengine/,AVAILABLE}{/Users/gmiller/workspace/skynet/public-api/src/main/appengine}
2018-02-16 21:23:07.878:INFO:oejs.AbstractConnector:main: Started NetworkTrafficSelectChannelConnector@45b4c3a9{HTTP/1.1,[http/1.1]}{localhost:58560}
2018-02-16 21:23:07.888:INFO:oejs.Server:main: Started @1065ms
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.AbstractModule startup
INFO: Module instance public-api is running at http://localhost:58560/
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.AbstractModule startup
INFO: The admin console is running at http://localhost:58560/_ah/admin
Feb 16, 2018 9:23:07 PM com.google.appengine.tools.development.devappserver2.DevAppServer2Impl doStart
INFO: Dev App Server is now running
现在服务已经启动,我希望能够联系到任何一个。Python 服务按我的预期运行,但对 Java 服务使用任一端口只会从 Jetty 返回 404:
Feb 16, 2018 9:30:01 PM com.google.appengine.tools.development.jetty9.LocalResourceFileServlet doGet
WARNING: No file found for: /public-api/docs/view
INFO 2018-02-16 21:30:01,667 module.py:833] public-api: "GET /public-api/docs/view HTTP/1.1" 404 83
是否在本地运行 Python 和 Java 服务并同时支持/可能?我是否缺少任何类型的配置?
编辑:
我试过像这样使用 dev_appserver.py 运行 Java 应用程序:
dev_appserver.py public-api/build/exploded-public-api/
然后我能够访问服务中的静态文件,但没有使用 Spring Boot 配置的路径。似乎没有调用 SpringBootServletInitializer 。我是否需要添加 web.xml 或其他配置才能正确加载服务器?