1

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

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

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

第三个模块只是前端文件(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

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


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

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

例子:

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)

在此处输入图像描述

4

2 回答 2

1

appengine-maven-plugin的用户指南涵盖了运行多个模块。看看有没有帮助。

于 2018-02-23T19:29:05.053 回答
0

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

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

Java 的本地开发服务器记录在这里

App Engine SDK for Java包含一个本地开发服务器,用于在您的计算机上测试您的应用程序。本地开发服务器模拟 App Engine Java 运行时环境及其所有服务,包括 Datastore。

appengine-web.xml 参考的语法描述说:

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

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

根据这个文档

运行本地开发服务器时,所有调度文件都将被忽略。定位实例的唯一方法是通过它们的端口。

于 2018-03-13T08:20:46.743 回答