GWT RPC如何加载序列化策略文件?

maa*_*asg 9 gwt gwt-rpc

我正在研究GWT和OSGi + PAX-Web问题的解决方案.特别的问题是GWT无法加载序列化策略文件,给出以下错误:

ERROR: The serialization policy file '/ctx/ctx/6ExxxxxxxxxxxxxxxxF.gwt.rpc' was not found; did you forget to include it in this deployment?

问题出在Equinox OSGi和PAX-WEB之间.

为了找到解决方案,我想更好地了解GWT-RPC如何加载序列化策略文件.

  • 他们的生命周期是什么?他们什么时候装?(我看到它是在服务器启动时.生命周期中的任何特殊性?重新加载?)
  • GWT如何在其堆栈中加载此文件?在请求的调用堆栈中的什么位置?GWT如何知道从何处加载它们?我可以告诉GWT它应该在哪里寻找这个文件吗?

(免责声明:我已经在生成的文件中阅读了gwt文档[2].我正在寻找更多低级细节:我的印象是我们所遇到的错误必须处理HttpContext.getResource())

Tho*_*yer 11

一切都在RemoteServiceServlet.

他们的生命周期是什么?他们什么时候装?(我看到它是在服务器启动时.生命周期中的任何特殊性?重新加载?)

它们在第一次使用时加载(第一次请求收到)并缓存在servlet的一个字段中,因此它们的生命周期与servlet本身的生命周期相关联.

GWT如何在其堆栈中加载此文件?在请求的调用堆栈中的什么位置?GWT如何知道从何处加载它们?我可以告诉GWT它应该在哪里寻找这个文件吗?

servlet.getServletContext().getResourceAsStream.您可以通过覆盖来自定义doGetSerializationPolicy(如JavaDoc中所述).
文件名(资源URL)是根据请求的路径和X-GWT-Permutation请求标头构建的.