java - 为什么不为所有 RPC 使用一个 ServiceImpl?

标签 java gwt gwt-rpc

我正在开发一个 Java GWT-GAE 项目,该项目变得足够大,但我面临着一些问题,我以前没有一些 LOC。

我的 ServiceImpl 类中有几个方法,我需要直接从其他 ServiceImpl 类以及 RPC 调用它们。我认为最好避免像 Service s = new ServiceImpl() 这样的声明,因此我想将方法​​体移动到适当的服务器端类中,并让 ServiceImpl 类中的方法调用它们。这是正确的解决方案还是有特定的模式可以遵循? 如果是的话,只有一个 ServiceImpl 来包装所有 RPC 方法不是更好吗? 客户端变得有点慢,我认为这是因为我有几个这样的声明: public static final *ServiceAsync *Service = GWT.create(*Service.class);

我希望我已经说清楚了。 提前致谢。

安东尼奥

最佳答案

对于服务器端实现,请考虑使用 GWT-SL (Server Library)它允许您将 GWT 与 Spring 集成。您的 Service 实现类将变成简单的 Pojo,您不必担心创建它们,只需让 Spring 来担心!

要在客户端创建服务实例,请使用此模式(在 *Service 接口(interface)内)以确保您仅将服务作为单例创建一次:

/**
 * Utility class for simplifying access to the instance of async service.
 */
public static class Util {
    private static UserServiceAsync instance;
    public static UserServiceAsync getInstance(){
        if (instance == null) {
            instance = GWT.create(UserService.class);
        }
        return instance;
    }
}

在客户端创建服务:

private UserServiceAsync userService = UserService.Util.getInstance();

关于java - 为什么不为所有 RPC 使用一个 ServiceImpl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148115/

相关文章:

java - gwt中的Remote Service被执行了两次

java - 文件名包含 # 导致 Spring Batch StaxEventItemReader 无法打开

gwt - clientBundleFieldNameUnlikelyToCollideWithUserSpecifiedFieldOkay_33_g$(...).style_86_g$ 不是函数

java - 如何调试 GWT 开发/托管模式的问题?

java - gwt 应用程序客户端的 session 管理

gwt - com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException

java - 为什么这个相交功能不起作用?

java - 另一个 : Exception in thread "main" java. lang.NoClassDefFoundError

java - 时间执行 Groovy 与 Beanshell 的巨大差异

json - GWT POJO-JSON 映射器?