我正在开发一个将部署到GAE的GWT应用程序。我已经安装了Google-Eclipse插件,它也下载了GWT和GAE SDK。但是现在我坐下来实际考虑事情,我对如何在我的机器上本地调试和运行应用程序感到非常困惑。
通常,当我有一个Java Web应用程序(我部署到Tomcat;我只是熟悉它)时,我的选项如下:
WAR
部署到我的本地Tomcat容器,但是我可以从Eclipse内部调试它(设置断点,逐步执行服务器端代码) http://localhost:8080/MyApp
启动浏览器并开始在本地使用/手动测试应用程序我想要完成相同的工作,但是对于GWT和GAE,两者都有很多选择,当你在同一台机器上将它们配对时,它们会变得更加令人困惑(对于像我这样的新手):
最终,我希望能够做到以下几点:
我认为我的困惑的根源在于GWT和GAE SDK都在所谓的“开发模式”中运行,并且因为它们针对不同的层(客户端和服务器),所以难以绕过什么设置/ configs必须能够在需要时隔离它们,或者在需要时串联测试它们。提前感谢您的帮助!
答案 0 :(得分:6)
我会尽力回答你的问题。我最近继承了GWT的代码库,并使用了app引擎,所以我会尽我所能。
首先,您的服务器端代码由Jetty Servlet容器中的GWT SDK运行。您的客户端代码编译为javascript,并在浏览器中运行。因此,您可以非常轻松地针对任何servlet服务器后端运行客户端代码。因此,当您在'dev模式'中运行GAE时,您已编译了Java,并且正在GAE dev servlet容器中运行带有GWT入口点的servlet。
设置本地环境非常简单。在eclipse中,您可以右键单击您的项目并执行“Run As”或“Debug As”。在“运行配置”和“调试配置”选项中,您将在标题为“Web应用程序”的列表中看到Google图标。您应该创建一个配置文件来记住选项。
此配置为您提供了一些选项。如果您有相应的GAE文件,则可以转到“App Engine”选项卡并为其配置选项。在“服务器”标签下,您有两种选择。如果选中“运行内置服务器”选项。 GWT将在其Jetty容器中运行您的servlet,并运行GWT客户端代码服务器。如果没有,它将只运行客户端代码服务器,允许您动态更改客户端代码,并在eclipse中调试客户端代码。 Eclipse将为您提供一个漂亮的URL,如下所示。
http://127.0.0.1:8888/index.jsp?gwt.codesvr=127.0.0.1:9997
这实际上是两个部分,天气你使用内置的码头servlet容器,它看起来是一样的。
第一部分是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中将您的javascript调试为java。
如果我只进行客户端代码更改,我有时会用我们的dev服务器url替换http://127.0.0.1:8888/index.jsp
:http://mydevserver:1234/myapp/index.jsp?gwt.codesvr=127.0.0.1:9997
这允许我在本地运行客户端代码服务器而不运行服务器端本地代码。请注意,我可以通过直接访问dev servlet而不使用gwt.codesvr参数来访问部署到dev的客户端代码。
我希望这会有所帮助。如果您有疑问,我可能会详细说明其中的部分内容。
答案 1 :(得分:0)
这个Google Eclipse Plugin会让你跑步。它基本上是Eclipse的一个插件,可以帮助您创建GWT + GAE应用程序(只需点击几下和类型),然后就可以直接从Eclipse运行您的应用程序。