2012-06-21 5 views
1

충분히 커지고있는 Java GWT-GAE 프로젝트를 개발 중이며 전에 LOC가 없었던 몇 가지 문제에 직면하고 있습니다.모든 RPC에 대해 ServiceImpl을 하나만 사용하는 것이 어떨까요?

다른 ServiceImpl 클래스 및 RPC에서도 직접 호출해야하는 ServiceImpl 클래스에는 몇 가지 메서드가 있습니다. 나는 Service s = new ServiceImpl()과 같은 선언을 피하는 편이 낫다고 생각한다. 그래서 메소드 본문을 적절한 서버 사이드 클래스로 옮기고 ServiceImpl 클래스의 메소드로 호출하도록 생각했다. 올바른 해결책이 될 것입니까, 따라야 할 구체적인 패턴이 있습니까? 그렇다면 모든 RPC 메서드를 래핑하는 ServiceImpl을 하나만 갖는 것이 더 낫지 않습니까? 클라이언트가 조금 느려지고있다. 나는 다음과 같은 몇 가지 선언문을 가지고 있다고 생각한다. public static final * ServiceAsync * Service = GWT.create (* Service.class);

나는 분명히했으면 좋겠다. 미리 감사드립니다.

안토니오

서버 측 구현의
+0

올바른 생각을 갖고있는 것 같습니다. 직접 호출 할 메소드를 별도의 클래스로 이동하십시오. 직접 ServiceImpl 객체를 생성하면 안됩니다. – awmross

+0

App Engine! = GWT. –

답변

1

, 당신은 봄과 GWT를 통합 할 수 있습니다 GWT-SL (Server Library)을 사용하는 것이 좋습니다. 서비스 구현 클래스는 단순한 Pojos가되며, 생성에 대해 걱정하지 않아도됩니다.

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