java - Google App Engine Warfile 目录结构

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

我刚刚安装了 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 还有其他特殊注意事项吗?提前致谢!

最佳答案

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

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

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

<小时/>
  • war/WEB-INF/deploy//rpcPolicyManifest/**

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

<小时/>
  • war/WEB-INF/deploy//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 符号“Duration”。每个浏览器编译(FF、Opera、Safari、IE 等)都有自己的映射,允许 GWT 编译器进行特定于浏览器的优化。

<小时/>
  • war//symbolmanifest.json

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

<小时/>
  • gwt-unitCache/**

这是一个仅在开发期间使用的缓存文件夹。请参阅the release notes for GWT 2.4.0 :

Persistent Unit Cache: GWT Compiler and Development mode now cache compilation artifacts between runs. This results in faster startup time for iterative development.

关于java - Google App Engine Warfile 目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368427/

相关文章:

java - 简单的 XML 框架 : Having an "inline like" behaviour for objects in ElementMap

java - Spring Data Rest 能否提供足够的灵活性以用于现实世界的应用程序?

python - 在 Google App Engine 下从数据库动态加载 Python 应用程序代码

java - 从命令行运行 AppEngine

java.lang.NullPointerException : No FileItemFactory has been set

java - 内容安全策略 : The page's settings blocked the loading of a resource at self?

java - 在 GWT 中遍历动态无序列表

java - 让 eclipse 使用 Java 1.7

javascript - 如何将整个 GWT 包装在 div 中?

java - 无法通过 eclipse 找到 XML 模式命名空间的 Spring NamespaceHandler [http ://camel. apache.org/schema/spring]