使用本地开发服务器上的模块进行Java

时间:2014-09-29 19:22:25

标签: google-app-engine

我正在开发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作为我的测试网址。我错过了什么吗?

4 个答案:

答案 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)

在devserver上忽略

dispatch.xml documentation表示以下内容。

  

发送文件

     

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

这意味着只能在配置的端口(通常为8888或8080)访问默认模块。我刚用app引擎1.9.25对它进行了测试,但它没有用,所以没有任何改进。

另一方面,您始终可以通过其端口引用模块。应用程序启动时,模块的位置会记录在控制台中,您将看到如下内容:

  

信息:模块实例module2-auto正在http://localhost:37251/

运行

在我的情况下,这是无用的,因为我期望通过使用相同的主机(但不同的URL)向不同的模块发出AJAX请求。例如: