В моем проекте уже некоторое время используется стандарт Python в App Engine, и мы смогли локально запустить службы с помощью dev_appserver.py.
Недавно мы начали разрабатывать сервисы и на Java 8. Новый сервис создается с помощью плагина app-gradle и может быть запущен на сервере разработки с помощью задачи appengineRun. Однако эти службы должны взаимодействовать друг с другом, поэтому я ищу способ запускать их параллельно, особенно в одном и том же процессе dev_appserver.
Что я пробовал:
Запуск dev_appserver.py и указание его на файлы конфигурации как для служб Python, так и для службы Java. Похоже, это почти работает: dev_appserver не сообщает об ошибках и запускает приложения Python и Java на портах 8080 и 8081. Затем он запускает второй сервер 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 просто возвращает 404 от Jetty:
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 локально и одновременно? Я пропустил какую-либо конфигурацию?
Редактировать: я попытался запустить только приложение Java с помощью dev_appserver.py, например так: dev_appserver.py public-api/build/exploded-public-api/
, после чего я смог получить доступ к статическим файлам в службе, но ни один из путей, настроенных с помощью Spring Boot. Похоже, что SpringBootServletInitializer не вызывается. Нужно ли мне добавлять файл web.xml или какую-либо другую конфигурацию для правильной загрузки сервера?