在AppEngine中的RPC序列化策略文件

4
GWT / AppEngine RPC接口让我头疼!我会收到这样的错误信息:每次启动Devserver时都会出现 "javax.servlet.ServletContext日志:UserService:ERROR:未找到序列化策略文件'/55585D0849A4549E3FCE91B33725B02F.gwt.rpc',您是否忘记在此部署中包含它?"。尽管我已经在appengine-web.xml中正确设置了public-root(应用程序的其余部分可以正常服务,除了.gwt.rpc文件)。
  <static-files>
    <include path="**" />
    <include path="**.nocache.*" expiration="0s" />
    <include path="**.rpc" expiration="0s" />
    <include path="**.cache.*" expiration="365d" />
  </static-files>

  <resource-files>
    <include path="**.gwt.rpc" />
  </resource-files>

我做错了什么?请帮忙!
2个回答

4
经过一些实验,我得出了以下结论:
  • 不要忘记将.rpc文件包含在appengine部署中(即appengine-web.xml文件),并注意缓存问题!(例如,序列化策略的更改)
  • 最好不要在appengine-web.xml中使用public-root标签:将welcome file (例如index.html)放在war目录的/下,并进行适当的更改以使GWT能够找到其文件。
  • 更新servlet的url-pattern标签以指向war目录中GWT生成的目录内部

  • 对于与tasks(即web hooks)相关联的servlet,请不要更改url-pattern

因此,唯一需要了解GWT生成文件夹的地方就在web.xml中。当然,也必须调整GWT项目的welcome-file

希望这对某人有所帮助。


嗨,我在我的App Engine日志中看到了类似的错误。你能详细解释一下“注意缓存问题!(例如序列化策略的更改)”吗?谢谢。 - DFB
在客户端缓存 .rpc 文件,即必须传播 .rpc 中的更改。 - jldupont
我出现了一个错误,因为我的<resource-files>块没有包括“**.gwt.rpc”。我将其移除后,现在它可以工作了。 - slugmandrew

3

我在部署的GAE服务器上遇到了同样的问题,直到我为resource-files部分添加了rpc include后,错误才消失。以下是我的最终代码:

<resource-files>
    <include path="/resources/**" />
    <include path="**.gwt.rpc"/>
</resource-files>

<static-files>
  <include path="**" />
  <include path="**.nocache.*" expiration="0s" />
  <include path="**.cache.*" expiration="365d" />
  <exclude path="**.gwt.rpc"/>
</static-files>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接