【问题标题】:Debugging and Running Client/Server Code for GWT/GAE App调试和运行 GWT/GAE 应用程序的客户端/服务器代码
【发布时间】:2012-09-08 11:58:32
【问题描述】:

我正在开发一个将部署到 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 都在所谓的“开发模式”下运行,并且因为它们针对不同的层(客户端和服务器),我很难理解什么设置/configs 是必要的,以便能够在需要时隔离它们,或者在需要时串联测试它们。在此先感谢您的帮助!

【问题讨论】:

标签: java eclipse google-app-engine gwt google-eclipse-plugin


【解决方案1】:

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

首先,您的服务器端代码由 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 的客户端代码。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多