【问题标题】:How GWT RPC loads the serialization policy files?GWT RPC 如何加载序列化策略文件?
【发布时间】:2012-06-23 19:38:25
【问题描述】:

我正在研究GWT and 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 它应该在哪里寻找这个文件吗?

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

【问题讨论】:

    标签: gwt gwt-rpc


    【解决方案1】:

    都在RemoteServiceServlet

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

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

    GWT 如何将这个文件加载到它的堆栈中?在请求的调用堆栈中的哪一点? GWT 如何知道从哪里加载它们?我可以告诉 GWT 它应该在哪里寻找这个文件吗?

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

    【讨论】:

    【解决方案2】:

    我在我的EAR文件中查找.rpc文件,发现文件名与报错不同。

    解决方法:清除浏览器缓存并刷新。

    【讨论】:

    • 所以您可能遇到了不同的问题。
    • 我怀疑这是大多数有此问题的人的解决方案。
    • +1 here 在我看来,我们应该找到一种方法让客户端在应用程序更新后获取新资源。
    【解决方案3】:

    答案是我的尼克为我工作。

    我的 Web 应用程序与某些类一起运行了很长时间。

    后来我在服务器上添加了新类,当我尝试启动网络应用程序时,它给了我以下错误:

    错误:序列化策略文件'/newapp/C3055CD048198D732D03CA6901E503 86.gwt.rpc' 未找到;您是否忘记将其包含在此部署中?

    警告:无法获取 SerializationPolicy 'C3055CD048198D732D03CA6901E5038 6' 用于模块'http://10.10.1.23:9200/newapp/';将使用与 1.3.3 兼容的旧版序列化策略。因此,您可能会遇到 SerializationExceptions。

    然后我在隐身窗口中启动了应用程序,它清除了缓存并且对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-10
      • 2012-04-29
      • 1970-01-01
      • 2011-09-30
      • 2012-04-18
      • 2012-03-21
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多