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 服务的主要内容,如果未能解决你的问题,请参考以下文章

调用 GWT RPC 服务

调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)

gwt 初学者-当我在服务器上进行 RPC 调用时出错-相同的代码在 gwt 开发模式下工作

直接从 Java 调用 GWT RPC 服务

从 GWT 客户端访问另一台服务器中的文件

GWT RPC 调用失败