2014-09-29 64 views
3

我正在开发Google Appengine Java应用程序,并且面临着使用本地开发服务器进行测试的主要挑战。我倾销了Eclipse工具,因为我使用Netbeans更灵活,并且我使用Appengine Maven插件来开发我的开发。使用Java的本地开发服务器上的模块

这是我的样本项目结构:

MYAPP
     模块的端点
     模块的Web
     模块耳
      POM。 xml

应用程序,当我建立与mvn clean install上的根文件夹(MYAPP),也当我使用mvn appengine:devserver命令来运行模块耳应用,但是我似乎无法通过http://localhost:8080/_ah/api访问云终端工作。当我通过管理控制台http://localhost:8080/_ah/admin访问端口时,我只能通过动态发布的端口访问端点的API。

这个问题是,当根据教程在module-web项目上测试云端点Javascript客户端时,我应该使用localhost:8080/_ah/api作为我的url来测试。我错过了什么吗?

+0

您确定您使用的是本地API资源管理器的正确URL吗?它应该是'http:// localhost:8080/_ah/api/explorer'(但实际上它是一个重定向)。你知道你可以在应用程序的'pom.xml'的''中指定一个''吗? – tx802 2014-09-29 20:39:12

+0

你知道当你在开发服务器上运行耳朵应用程序时,它会为云终端应用程序生成一个随机端口,如果你检查你的控制台你会发现列出的两个应用程序,那么war应用程序将在8080上运行,而云端点应用程序运行在不同的端口上(每次运行时大多是随机的)。如果我访问端点模块,例如http:// localhost:6789/_ah/api/explorer,它可以工作,但是当我尝试像这样访问http:// localhost: 8080/_ah/api/explorer它不。谢谢。 – 2014-09-29 22:36:48

+0

对,我正在看的应用程序在同一模块中有端点。也许我会尝试拆分端点或新模块,看看我是否可以重现问题。您的端点模块是默认模块吗? – tx802 2014-09-30 06:31:49

回答

1

它工作时,我所做的端点项目的默认模块。

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 /浏览器来测试您的API

+0

认真@Herring,你是如何知道'devappserver_module.mymodule2.port'的?你还有其他什么黄金知识?你有没有在Intellij中运行耳机设置,并看到“你的工作目录ear-xxx'与ear-xxx/module-xxx不匹配,所以没有新的File(”WEB-INF“)工作? – 2015-08-22 13:43:09

0

dispatch.xml在devserver上被忽略,documentation声明如下。运行开发服务器时

调度文件

所有调度文件将被忽略。 定位实例的唯一方法是通过它们的端口。

这意味着只有默认模块将在所配置的端口(通常为8888或8080)可达。我刚刚使用应用程序引擎1.9.25进行了测试,并且无法正常工作,因此未做任何改进。

另一方面,您始终可以通过其端口引用该模块。该模块的位置被记录在控制台应用程序启动时,你会看到类似这样的:

信息:因为我模块实例模块2,自动在http://localhost:37251/

在此我的情况下运行是没有用的期望通过使用相同的主机(但不同的url)向不同的模块发出AJAX请求。例如:

+0

下面是我解决你所提到的问题的方法(“我期待通过使用相同的主机(但不同的URL)”向不同的模块发出AJAX请求):http://blog.tomtasche.at/2015/12/multi -module-调度换appengine.html – TomTasche 2016-03-01 11:30:35

相关问题