Appengine多个模块本地开发 - Java

时间:2018-02-23 18:57:44

标签: java spring google-app-engine dev-appserver

我有3个使用Google Appengine Standard的java模块:

第一个模块使用Java 7和Servlet 2.5 + web.xml + Spring 4

第二个模块使用Java 8和Servlet 3.1而不使用web.xml + Spring 5使用WebApplicationInitializer。

第三个模块只是前端文件(HTML,CSS)。

我有一个dispatch.yaml,其中包含每个模块的路由。

如果我只使用:

运行java8模块
mvn appengine:run OR /usr/lib/google-cloud-sdk/bin/java_dev_appserver.sh, 

没关系,模块运行。

如果我使用:dev_appserver.py theJava8Module,则会出现以下问题:

google.appengine.tools.devappserver2.errors.AppConfigNotFoundError: The "target/theJava8Module/WEB-INF" subdirectory exists but is missing web.xml

在我使用这个java8模块之前,我曾经使用这个命令运行:

dev_appserver.py --max_module_instances=1 frontendmodule/frontendmodule.yaml dispatch/dispatch.yaml java7Module/target/java7Module --dev_appserver_log_level=debug

当我使用此命令时,没关系,2个模块运行,我可以使用应用程序和调度规则。

我的问题是,有没有办法运行多个模块并使用调度规则? 我可以使用dev_appserver.py(python)来运行没有web.xml的java8应用程序吗? 或者我可以使用mvn:appengine来运行多个模块并使用dispatch.xml或dispatch.yaml吗?

重要提示:我可以使用mvn:appengine和dev_appserver运行separete模块,问题是端口会有所不同,因此调度规则不起作用。

示例:

dev_appserver.py --max_module_instances=1 frontendmodule/frontendmodule.yaml dispatch/dispatch.yaml java7Module/target/java7Module --dev_appserver_log_level=debug (port 8080)
mvn appengine:run java8module (port 9090)

enter image description here

2 个答案:

答案 0 :(得分:1)

User Guide for the appengine-maven-plugin涵盖了运行多个模块的内容。看看它是否有帮助。

答案 1 :(得分:0)

关于使用Java7的模块,您应该了解Google Cloud的deprecation Java7运行时环境。

我可以用dev_appserver.py(python)来运行没有web.xml的java8应用程序吗?

本地开发服务器for Java记录在案here

  

App Engine SDK for Java包含本地开发服务器   在您的计算机上测试您的应用当地的发展   服务器模拟App Engine Java运行时环境和所有   它的服务,包括Datastore。

appengine-web.xml reference的语法说明说明:

  

..... App Engine Java应用程序必须有一个名为appengine-web.xml的文件   在其WAR中,在目录WEB-INF/中。这是一个XML文件   根元素是<appengine-web-app>。 ....

我可以使用mvn:appengine来运行多个模块并使用dispatch.xml或dispatch.yaml吗?

根据doc

  

运行本地开发时会忽略所有调度文件   服务器即可。目标实例的唯一方法是通过他们的端口。