0

我刚刚安装了 Google Eclipse 插件并创建了我的第一个测试 Web 应用程序项目(使用 GWT 和 GAE SDK)。该插件自动生成了一个项目,其中包含一个war/目录,其中包含一些特殊的子目录和文件。对其中许多的在线搜索只返回了它们的其他类似自动生成,但没有任何关于它们是什么或它们做什么的真正解释:

  • war/WEB-INF/deploy/<myapp>/rpcPolicyManifest/**
  • war/WEB-INF/deploy/<myapp>/symbolMaps/**
  • war/<myapp>/symbolmanifest.json
  • gwt-unitCache/**

对于将要部署到 GAE 的 GWT WAR 的正确结构应该是什么,我也有点困惑。应该打包在什么内容下war/WEB-INF/?根目录下应该打包什么内容war/?GWT/GAE WAR 的任何其他特殊注意事项?提前致谢!

4

1 回答 1

1

war/文件夹中的几乎所有内容都部署到 GAE。插件使用的临时文件除外,例如 war/WEB-INF/appengine-generated/

war/WEB-INF/文件夹包含设置 GAE 所需的内容。这包括 servlet、队列、日志记录、RPC 等的 GAE 设置。它还包括用于服务器端的库和一些 GWT 映射。

请注意,GWT 库仅在编译时需要,而不是在服务器上。您可以将所有 GWT 库放在 war/ 之外的 lib/ 文件夹中。


  • 战争/WEB-INF/deploy/<myapp>/rpcPolicyManifest/**

RPC用于直接从 GWT 代码调用服务器方法。GWT/GAE 旨在允许 RPC 开箱即用。我的猜测是 RPC 策略清单文件的存在足以配置 GAE 以允许 GWT 代码使用 RPC,所以他们只是把它放在那里所以你不必担心它。


  • 战争/WEB-INF/deploy/<myapp>/symbolMaps/**

插件自动添加这里需要的东西,所以你不用碰它。但 symbolMaps 似乎是 GWT 使用的字典,用于根据浏览器版本提供不同版本的应用程序。我的一个符号映射文件中的前几行如下所示:

# { 1 }
# { 'user.agent' : 'gecko1_8' }
# jsName, jsniIdent, className, memberName, sourceUri, sourceLine
Duration,,com.google.gwt.core.client.Duration,,jar:file:/opt/eclipse/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201208080121-rel-r42/gwt-2.4.0/gwt-user.jar!/com/google/gwt/core/client/Duration.java,21

鉴于用户代理是 gecko 1.8,它指定如何解释 JavaScript 符号“持续时间”。每个浏览器编译(FF、Opera、Safari、IE 等)都有自己的映射,允许 GWT 编译器针对浏览器进行优化。


  • 战争/<myapp>/symbolmanifest.json

我的项目中没有这个文件,但它可能与上面提到的 GWT 符号映射有关。我的猜测是它定义了 GWT 应用程序使用的 JavaScript 符号。如果您从中发布一个片段,我们将能够查看是否是这种情况。


  • gwt-unitCache/**

这是一个仅在开发期间使用的缓存文件夹。请参阅GWT 2.4.0 的发行说明

持久单元缓存:GWT 编译器和开发模式现在缓存运行之间的编译工件。这可以加快迭代开发的启动时间。

于 2012-09-24T12:08:10.057 回答