如何在主页生成时知道GWT序列化策略的强名称?

时间:2009-12-15 11:39:38

标签: gwt

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

强名称在编译时计算,放入客户端并进行参考。强名称以described here的RPC请求发送到服务器。你建议在主页生成时使这个参数可用吗?

2 个答案:

答案 0 :(得分:2)

我已将GWT与spring集成在一起,并使用自定义SerializationPolicyProvider我必须重命名<strong name>.gwt.rpc文件并在自定义SerializationPolicyProvider类中对该名称进行硬编码。我通过查看GWT文档来解决问题。强名称是MD5哈希,长度为32.每次对基于Spring的Controller方法进行RPC调用: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");

答案 1 :(得分:0)

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