GWT:在另一个模块中调用 RPC 服务
Posted
技术标签:
【中文标题】GWT:在另一个模块中调用 RPC 服务【英文标题】:GWT: Calling RPC Service inside another module 【发布时间】:2011-03-12 17:35:42 【问题描述】:我有一个模块 B,它继承了模块 A。当我从 A 内部的 A 调用 RPC 服务时,它们工作正常。但是当我从 B 中的 A 调用服务时,RPC 调用总是失败。我错过了什么吗?
提前感谢您的帮助。
【问题讨论】:
【参考方案1】:我在这里找到了我的问题的答案:http://blog.cloudglow.com/2010/03/making-gwt-rpc-endpoint-independent-of.html
默认的 GWT RPC 服务 (Servlet) 端点是 @RemoteServiceRelativePath("some_name"),它在客户端运行时解析为 /module_base/some_name。这种方法的问题是您的 RPC 端点现在绑定到 GWT 模块。虽然这在某些情况下可能没问题,但不适用于我们的情况。因此这篇文章。
我们最终创建了一个 RPC 服务工厂类,该类将创建服务端点的静态实例,并使用正确的端点为其播种;像这样:
public class ServicesFactory
public static final RPCServiceAsync RPCService = GWT.create(RPCService.class);
static
((ServiceDefTarget) RPCService).setServiceEntryPoint(GWT.getHostPageBaseURL() + RPCService.END_POINT);
【讨论】:
【参考方案2】:还有另一种解决方法。 只需为每个新方法添加一个新的 servlet 映射即可。
<servlet-mapping>
<servlet-name>serverName</servlet-name>
<url-pattern>/Module1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>serverName</servlet-name>
<url-pattern>/Module2</url-pattern>
</servlet-mapping>
【讨论】:
以上是关于GWT:在另一个模块中调用 RPC 服务的主要内容,如果未能解决你的问题,请参考以下文章
调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)