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文档[2]。我正在寻找更多低级细节:我有我们遇到的错误必须处理HttpContext.getResource()的印象)
全部在RemoteServiceServlet
。
他们的生命周期是什么? 他们什么时候加载? (我看到它在服务器启动时,生命周期中的任何特性?重新加载?)
它们在第一次使用时(首次接收到请求)加载并缓存在servlet的一个字段中,所以它们的生命周期与servlet本身的一个绑定在一起。
GWT如何将这个文件加载到它的堆栈中? 请求的调用堆栈中的哪个点? GWT如何知道从哪里加载它们? 我可以告诉GWT它应该在哪里查找这个文件?
servlet.getServletContext().getResourceAsStream
。 您可以通过重写doGetSerializationPolicy
来进行自定义(如在JavaDoc中所述)。
文件名(资源URL)是根据请求的路径和X-GWT-Permutation
请求标头构建的。
我查找了我的EAR文件中的.rpc文件,发现文件名与错误不同。
解决方案:清除浏览器缓存并刷新。
提供的答案我的尼克为我工作。
我有我的网络应用程序长时间运行一些类。
后来我在服务器上添加了新的类,当我尝试启动Web应用程序时,它给了我以下错误:
错误:未找到序列化策略文件'/ newapp / C3055CD048198D732D03CA6901E503 86.gwt.rpc'; 你忘了把它包含在这个部署中吗?
警告:无法为模块http://10.10.1.23:9200 / newapp /'获取SerializationPolicy'C3055CD048198D732D03CA6901E5038 6'; 将使用传统的兼容1.3.3的序列化策略。 作为结果,您可能会遇到SerializationException。
然后,我在隐身窗口中启动了应用程序,清除了缓存并为我工作。
链接地址: http://www.djcxy.com/p/51071.html上一篇: How GWT RPC loads the serialization policy files?
下一篇: Second compilation of same sources produces different set of gwt.rpc files