我有像
这样的请求5|0|7|http://localhost:8080/testproject/|29F4EA1240F157649C12466F01F46F60|com.test.client.GreetingService|greetServer|java.lang.String|myInput1|myInput2|1|2|3|4|2|5|5|6|7|
我想知道GWT如何生成md5值29F4EA1240F157649C12466F01F46F60
?它是基于客户端IP和日期?谁能指出我正确的代码?我只是找到关于历史令牌的东西,但这看起来与我不同。
答案 0 :(得分:3)
好的,经过一番研究后我觉得我找到了答案
您应该寻找的关键字是“强名称”(或“ strongName ”)和/或排列,因为它似乎与RPC请求它们发出permuatation强名称(MD5哈希),这样你就可以在服务器端区分请求发送的排列。
核心函数是Util.computeStrongName
,它计算所提供的字节数组的MD5哈希值(d'oh),并添加了catch:
/*
* Include the lengths of the contents components in the hash, so that the
* hashed sequence of bytes is in a one-to-one correspondence with the
* possible arguments to this method.
*/
从那里,我追溯到linkers,然后追溯到通过此功能提供Util.computeStrongName
的{{3}}:
/**
* The compiled JavaScript code as UTF8 bytes.
*/
byte[][] getJs();
呃,我希望这至少有点帮助;)如果这仍然没有回答你的问题(或者你正在寻找不同的东西),请试试PermutationResult(从trunk/user/src/com/google/gwt/user/client/rpc
开始)。
答案 1 :(得分:0)
正如Igor所说,GWT使用应用程序代码的MD5哈希为每个版本的应用程序的每个排列生成唯一的名称。您引用的特定哈希是GWT RPC请求有效内容的一部分,用于标识服务器上的.gwt.rpc序列化策略文件。该策略文件说明哪些Java对象可以作为GWT RPC服务中的请求,响应或抛出异常的一部分进行序列化。