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

3
我正在开发一个将部署到GAE的GWT应用程序。我已经安装了Google-Eclipse插件,该插件还拉取了GWT和GAE SDK。但是,现在我坐下来认真思考问题后,我对如何在本地计算机上同时调试和运行应用程序变得非常困惑。
通常,当我有一个Java Web应用程序(我部署到Tomcat;我只熟悉它)时,我的选项如下:
- 为我的应用程序创建一个远程调试配置,在本地Tomcat容器中部署WAR文件,但以这种方式可以从Eclipse内部进行调试(设置断点,逐步执行服务器端代码)。 - 只需将其部署到Tomcat容器中,启动浏览器并在http://localhost:8080/MyApp处使用/手动测试本地应用程序。
我想做到同样的事情,但是对于GWT和GAE,两者都有很多选项,并且当您在同一台计算机上将它们配对时(像我这样的新手),它们变得更加混乱:
最终,我想能够执行以下操作:
- 直接从Eclipse内部调试服务器应用程序,包括设置断点、逐步执行代码等。 - 直接从浏览器插件(如Firebug或Chrome Developer Tools)内部调试客户端应用程序,包括设置断点、逐步执行代码等。 - 直接从Eclipse内部调试应用程序(同时调试客户端和服务器端代码),包括设置断点、逐步执行代码等。 - 与上述相同,但是服务器在不同的(远程)计算机上运行。这样我就可以从我的开发机器上的Eclipse实例中调试我的应用程序,因为它正在我的QA机器/环境上运行。 - 在本地运行应用程序并模拟生产环境;也就是说,将后端部署到我的GAE应用程序开发服务器,并打开浏览器并转到正确的URL以访问由本地GAE dev appserver提供的应用程序。
我认为我的困惑根源在于GWT和GAE SDK都以所谓的“dev模式”运行,并且因为它们处理不同的层次(客户端和服务器),如果需要隔离它们或者需要同时测试它们,很难理解需要哪些设置/配置。非常感谢您的帮助!

找到了这个:https://dev59.com/VnNA5IYBdhLWcg3wcNbF - Peter
我的回答有帮助吗? - quarks
2个回答

6
我将尽力回答您的问题。最近我继承了一个GWT代码库,并使用了应用程序引擎,所以我会尽力帮助您。
首先,您的服务器端代码由GWT SDK在Jetty Servlet容器中运行。客户端代码被编译为JavaScript并在浏览器中运行。因此,您可以轻松地针对任何Servlet服务器后端运行客户端代码。因此,在运行GAE的“dev模式”时,您已经编译了Java,并在GAE dev Servlet容器中运行了一个具有GWT入口点的Servlet。
设置本地环境相当容易。在Eclipse中,您可以右键单击项目,然后选择“Run As”或“Debug As”。在“Run Configurations”和“Debug Configurations”选项中,您会看到列表中的Google图标,标题为“Web Application”。您应该创建一个配置文件以记住选项。
此配置提供了几个选项。如果您拥有适当的GAE文件,可以转到“App Engine”选项卡,并在那里配置选项。在“Sever”选项卡下,您有两个选项。如果选中“run built-in server”选项,则GWT将在其Jetty容器中运行您的Servlet,并运行GWT客户端代码服务器。否则,它只会运行客户端代码服务器,从而使您能够实时更改客户端代码并在Eclipse中调试客户端代码。Eclipse将为您提供一个很棒的URL,例如以下内容。
http://127.0.0.1:8888/index.jsp?gwt.codesvr=127.0.0.1:9997

这实际上是两部分内容,无论您是否使用内置的jetty servlet容器,它看起来都一样。
第一部分是http://127.0.0.1:8888/index.jsp -这是正在运行的servlet容器,可以在tomcat、web-logic或GWT dev server上运行,也可以在任何servlet容器上运行。
第二部分是?gwt.codesvr=127.0.0.1:9997 -这是一些GWT魔法,与浏览器GWT开发插件一起使用时,将允许您在运行时更改客户端代码,并在eclipse中调试您的javascript作为java。
如果我只做客户端代码更改,有时会用我们的dev服务器url替换http://127.0.0.1:8888/index.jsphttp://mydevserver:1234/myapp/index.jsp?gwt.codesvr=127.0.0.1:9997 这允许我在本地运行客户端代码服务器,而不必在本地运行服务器端代码。请注意,我可以通过直接访问dev servlet而不使用gwt.codesvr参数来访问已部署到dev的客户端代码。
希望这可以帮助您。如果您有问题,我可能能够详细解释其中的某些部分。

0

这个Google Eclipse Plugin应该可以帮助您开始。它基本上是Eclipse的一个插件,可以帮助您创建GWT + GAE应用程序(只需点击几下和输入),然后能够直接从Eclipse运行您的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接