为什么不为所有RPC只有一个ServiceImpl?

时间:2012-06-21 23:10:50

标签: java gwt gwt-rpc

我正在开发一个足够大的Java GWT-GAE项目,我遇到了一些我以前没有LOC的问题。

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

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

安东尼奥

1 个答案:

答案 0 :(得分:1)

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

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

/**
 * 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();