【问题标题】:How to know strong name of GWT serialization policy at the time of host page generation?如何在生成主机页面时知道 GWT 序列化策略的强名称?
【发布时间】:2009-12-15 11:39:37
【问题描述】:

excellent article 描述了一种将 GWT RPC 有效负载嵌入到主机页面的方法。缺少一个关键要素是如何在运行时知道 RPC 序列化策略的强名称。

强名称在编译时计算,放入客户端并进行模糊处理。强名称通过 RPC 请求作为described here 发送到服务器。您建议如何在生成主机页面时使用此参数?

【问题讨论】:

    标签: gwt


    【解决方案1】:

    我已经将 GWT 与带有自定义 SerializationPolicyProvider 的 spring 集成在一起,我总是不得不重命名 <strong name>.gwt.rpc 文件并在我的自定义 SerializationPolicyProvider 类中硬编码名称。我通过查看GWT 文档来解决问题。 Strong Name 是长度为 32 的 MD5 哈希。每次 RPC 调用基于 Spring 的 Controller 的方法:public String processCall(String payload),我使用以下代码解析有效负载以获得强名称:

    String strongName = null;
         if(payload!=null){
             StringTokenizer tokens = new StringTokenizer(payload,String.valueOf(AbstractSerializationStream.RPC_SEPARATOR_CHAR));
             while(tokens.hasMoreTokens()){
                 String s = tokens.nextToken();
                 if(s.length() == 32){
                     strongName = s;
                    break;
                 }
             }
         }
    

    然后在您的 SerializationPolicyProvider impl 类中使用以下内容: 获取 SerializationPolicy:

    return SerializationPolicyLoader.loadFromStream(servletContext.getResourceAsStream(moduleBaseURL+"/"+strongName+"gwt.rpc");
    

    【讨论】:

      【解决方案2】:

      一种解决方案似乎是使用编译器 -gen 选项。从编译器输出中获取 _Proxy.java 并从中提取 SERIALIZATION_POLICY。

      【讨论】:

        猜你喜欢
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 2012-06-23
        • 2010-09-13
        • 1970-01-01
        相关资源
        最近更新 更多