尝试在我们的应用程序中使用GWT RPC。我们的应用服务静态
内容和动态内容与不同的基本网址。例如,网址
foo.jsp可能有http://localhost/context/foo.jsp
服务
websphere,对于jsp中的img / js,我们会有url之类的
由{i}提供服务的http://localhost/uistatic/foo.js
和GWT生成
代码将包含在http://localhost/uistatic/
......
现在,当使用GWT RPC时,modulebaseurl GWT默认是实际的
指向http://localhost/uistatic/
,这是不正确的
调用rpc服务,我们可以通过覆盖ServiceEntryPoint
以下(使用HostPageBaseURL):
serviceDef.setServiceEntryPoint(GWT.getHostPageBaseURL() +
GWT.getModuleName() + ......);
但是,要使用可序列化的DTO进行rpc调用,GWT加载序列化
使用modulebaseurl的策略文件,这又是错误的(http://localhost/uistatic/
),任何人都知道如何覆盖它,或任何其他
建议是受欢迎的。
Thx
答案 0 :(得分:1)
RPC现在在GWT编译期间生成序列化策略文件。序列化策略文件包含可以序列化的允许类型的白名单。它的名称是一个强大的哈希名称,后跟.gwt.rpc。为了启用对java.io.Serializable的支持,应用程序将通过网络发送的类型必须包含在序列化策略白名单中。此外,序列化策略文件必须作为公共资源部署到Web服务器,可通过ServletContext.getResource()从RemoteServiceServlet访问。如果未正确部署,RPC将以1.3.3兼容模式运行,并拒绝序列化实现java.io.Serializable的类型。
也许你可以覆盖/拦截对getResource的调用。
同时检查一下...... http://code.google.com/webtoolkit/doc/1.6/FAQ_Server.html#What_is_the_Same_Origin_Policy,_and_how_does_it_affect_GWT?
迈克尔
答案 1 :(得分:0)
您可以覆盖RemoteServiceServlet中的doGetSerializationPolicy来控制策略文件的加载方式。