我正在开发Google Appengine Java应用程序,我正面临着使用本地开发服务器进行测试的重大挑战。我抛弃了Eclipse工具,因为我对Netbeans和我更灵活 我正在使用Appengine Maven插件进行开发。
这是我的示例项目结构:
MyApp的
模块的端点
模块的Web
模块耳
的的pom.xml
当我在根文件夹(myapp)上使用mvn clean install
构建时,以及当我使用mvn appengine:devserver
命令运行module-ear应用程序时,应用程序仍然有效,但是我似乎无法访问云端点通过http://localhost:8080/_ah/api
。当我通过管理控制台http://localhost:8080/_ah/admin
访问端点时,我只能通过动态发出的端口访问端点的API。
这个问题是,在根据教程测试模块web项目上的云端点Javascript客户端时,我应该使用localhost:8080/_ah/api
作为我的测试网址。我错过了什么吗?
答案 0 :(得分:3)
如果问题仍然存在,您可以随时使用标志更新pom.xml,以便定义所有模块的端口:
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>${appengine.target.version}</version>
<configuration>
<port>8080</port>
<jvmFlags>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n</jvmFlag>
<jvmFlag>-Dcom.google.appengine.devappserver_module.mymodule2.port=9090</jvmFlag>
</jvmFlags>
<disableUpdateCheck>true</disableUpdateCheck>
</configuration>
</plugin>
然后你可以使用localhost:9090 / _ah / api / explorer来测试你的API
答案 1 :(得分:2)
如果您部署了多个模块,则需要更新maven应用引擎启动器设置以识别不同的模块。请参阅https://github.com/GoogleCloudPlatform/appengine-modules-sample-java处的模块示例Java应用程序。
如果您已经这样做了,那么dispatch.xml文件将告诉应用引擎如何路由请求:https://cloud.google.com/appengine/docs/java/modules/routing
答案 2 :(得分:1)
当我将端点项目设为默认模块时,它有效。
答案 3 :(得分:0)
dispatch.xml ,documentation表示以下内容。
发送文件
运行开发服务器时,将忽略所有调度文件。 目标实例的唯一方法是通过他们的端口。
这意味着只能在配置的端口(通常为8888或8080)访问默认模块。我刚用app引擎1.9.25对它进行了测试,但它没有用,所以没有任何改进。
另一方面,您始终可以通过其端口引用模块。应用程序启动时,模块的位置会记录在控制台中,您将看到如下内容:
信息:模块实例module2-auto正在
运行http://localhost:37251/
在我的情况下,这是无用的,因为我期望通过使用相同的主机(但不同的URL)向不同的模块发出AJAX请求。例如: