Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调试并运行GWT/GAE应用程序的客户端/服务器代码_Java_Eclipse_Google App Engine_Gwt_Google Eclipse Plugin - Fatal编程技术网

Java 调试并运行GWT/GAE应用程序的客户端/服务器代码

Java 调试并运行GWT/GAE应用程序的客户端/服务器代码,java,eclipse,google-app-engine,gwt,google-eclipse-plugin,Java,Eclipse,Google App Engine,Gwt,Google Eclipse Plugin,我正在开发一个将部署到GAE的GWT应用程序。我已经安装了GoogleEclipse插件,它还拉下了GWT和GAE SDK。但现在我坐下来认真思考,对于如何在我的机器上本地调试和运行应用程序,我变得非常困惑 通常,当我有一个Java web应用程序(我部署到Tomcat;我只是熟悉它)时,我的选项如下: 为我的应用程序创建一个远程调试配置,将WAR部署到我的本地Tomcat容器中,但我可以从Eclipse内部调试它(设置断点,逐步执行服务器端代码) 只需将其部署到Tomcat容器,在http:

我正在开发一个将部署到GAE的GWT应用程序。我已经安装了GoogleEclipse插件,它还拉下了GWT和GAE SDK。但现在我坐下来认真思考,对于如何在我的机器上本地调试和运行应用程序,我变得非常困惑

通常,当我有一个Java web应用程序(我部署到Tomcat;我只是熟悉它)时,我的选项如下:

  • 为我的应用程序创建一个远程调试配置,将
    WAR
    部署到我的本地Tomcat容器中,但我可以从Eclipse内部调试它(设置断点,逐步执行服务器端代码)
  • 只需将其部署到Tomcat容器,在
    http://localhost:8080/MyApp
    并开始在本地使用/手动测试应用程序
我也想做到这一点,但对于GWT和GAE,两者都有很多选择,当你在同一台机器上将它们配对时,它们会变得越来越令人困惑(对我这样的新手来说):

最终,我希望能够做到以下几点:

  • 从Eclipse内部调试服务器应用程序,包括设置断点、单步执行代码等
  • 从Firebug或Chrome Developer Tools等浏览器插件中,在我的机器上本地调试客户端应用程序,包括设置断点、单步执行代码等
  • 调试应用程序(同时调试客户端和服务器端代码),包括从Eclipse内部设置断点、单步执行代码等
  • 与上面相同(调试整个应用程序,客户端和服务器端),从Eclipse内部,但服务器运行在不同的(远程)机器上。这样我就可以调试我的应用程序,因为它正在我的QA机器/环境上运行,就在我的开发机器上的Eclipse实例内部
  • 在本地运行应用程序并模拟生产;也就是说,将后端部署到我的GAE应用程序开发服务器,然后打开浏览器并转到正确的URL以访问我的应用程序,因为它由本地GAE应用程序开发服务器提供服务

我认为我困惑的根源在于GWT和GAE SDK都以所谓的“开发模式”运行,并且因为它们针对不同的层(客户机和服务器),所以很难理解需要什么样的设置/配置才能在需要时隔离它们,或者在需要时对它们进行串联测试。在此提前感谢您的帮助

我会尽力回答你的问题。我最近继承了GWT的一个代码库,并使用了AppEngine,所以我会尽全力

首先,服务器端代码由GWT SDK在Jetty Servlet容器中运行。客户端代码被编译为javascript,并在浏览器中运行。因此,您可以非常轻松地针对任何servlet服务器后端运行客户机代码。因此,当您在“dev模式”下运行GAE时,您已经编译了java,并且正在GAE dev servlet容器中运行一个带有GWT入口点的servlet

建立本地环境相当容易。在eclipse中,您可以右键单击项目并执行“运行方式”或“调试方式”。在“运行配置”和“调试配置”选项中,您将在标题为“Web应用程序”的列表中看到一个Google图标。您应该创建一个配置文件来记住选项

此配置为您提供了一些选项。如果您有适当的GAE文件,您可以转到“应用程序引擎”选项卡并在那里配置选项。在“服务器”选项卡下,您有两个选项。如果选中“运行内置服务器”选项。GWT将在它的Jetty容器中运行servlet,并运行GWT客户机代码服务器。否则,它将只运行客户机代码服务器,该服务器允许您动态更改客户机代码,并在eclipse中调试客户机代码。Eclipse将为您提供一个漂亮的URL,如下所示

http://127.0.0.1:8888/index.jsp?gwt.codesvr=127.0.0.1:9997
这实际上是两个部分,不管您是否使用内置的JettyServlet容器,它看起来都是一样的

第一部分是
http://127.0.0.1:8888/index.jsp
-这是您正在运行的servlet容器,它可以在tomcat、web logic、GWT dev服务器或任何servlet容器上运行

第二部分是
?gwt.codesvr=127.0.0.1:9997
-这是一些GWT魔法,当与浏览器GWT开发插件结合使用时,将允许您在运行时更改客户端代码,并在eclipse中作为java调试javascript

如果我只做客户端代码更改,我有时会替换
http://127.0.0.1:8888/index.jsp
与我们的开发服务器url:
http://mydevserver:1234/myapp/index.jsp?gwt.codesvr=127.0.0.1:9997
这允许我在本地运行客户端代码服务器,而无需在本地运行服务器端代码。注意,我可以通过直接访问devservlet而不使用gwt.codesvr参数来访问部署到dev的客户机代码


我希望这有帮助。如果您有任何疑问,我可以详细说明其中的部分内容。

这应该可以帮助您跑步。它基本上是一个Eclipse插件,可以帮助您创建GWT+GAE应用程序(只需几次单击和键入),然后可以直接从Eclipse运行您的应用程序。

发现:我的答案有帮助吗?