3

我正在开发一个将部署到 GAE 的 GWT 应用程序。我已经安装了 Google-Eclipse 插件,它也拉下了 GWT 和 GAE SDK。但是现在我坐下来真正思考事情,我对如何在我的机器上本地调试和运行应用程序感到非常困惑。

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

  • 为我的应用程序创建一个远程调试配置,将其部署WAR到我的本地 Tomcat 容器,但是我可以直接从 Eclipse 内部调试它(设置断点,单步执行服务器端代码)
  • 只需将其部署到 Tomcat 容器,启动浏览器http://localhost:8080/MyApp并开始在本地使用/手动测试应用程序

我也想完成同样的工作,但是对于 GWT 和 GAE,两者都有很多选择,当您在同一台机器上将它们配对时,它们会变得更加混乱(对于像我这样的新手来说):

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

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

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

4

2 回答 2

6

我会尽力回答你的问题。我最近继承了一个GWT的代码库,并且使用了app引擎,所以我会尽力而为。

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

设置本地环境相当容易。在 Eclipse 中,您可以右键单击您的项目并执行“运行方式”或“调试方式”。在“运行配置”和“调试配置”选项中,您会在标题为“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

这实际上是两部分,无论您是否使用内置的 jetty servlet 容器,它看起来都是一样的。

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

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

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

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

于 2012-09-14T13:18:58.460 回答
0

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

于 2013-04-07T22:27:34.467 回答