2009-08-03 3 views

답변

0

GWT는 Rails와 같은 완전한 응용 프로그램 스택이 아니므로 Rails와 같이 통합 된 상태로 제공되는 솔루션을 찾을 수 없습니다. GWT는 주로 뷰 레이어입니다. 여전히 영속성 레이어가 필요합니다.

+0

나는 그것을 이해하지만, 그것은 영속 계층을위한 다른 프레임 워크와 번들로 묶어두면 괜찮을 것이다. – Otavio

3

Spring Roo이 Google I/O 2010에서 발표되었습니다. 그게 당신이 원하는 것일 수 있습니다.

+0

+1, 봄 Roo 아마 당신이 찾고있는 것입니다. [GWT 사이트] (http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html#MvpFramework)에도 언급되어 있습니다. 그러나 GWT 2.1이 작동해야합니다. – Piotr

+0

[여기] (http://www.youtube.com/watch?v=GQHlhIIxCIc)에서 Spring Roo와 GWT 통합에 대한 Google I/O 프레젠테이션을 찾을 수 있습니다. – Piotr

0

GWT는 거의 모든 IMO를 해결하는 모든 교과서 CRUD 프레임 워크와 비교할 때 다른 패러다임을 사용합니다. 좋은 오래된 스윙이라고 생각하십시오. 통신은 이미 내장되어 있습니다 (GWT-RPC). CRUD 프레임 워크가 제공하지 않는 한 개선 할 수있는 유일한 방법은 일부 통합 된 데이터에서 작동하는 일부 패턴 (자신 만의 풍부한 위젯 세트 등)을 만드는 것입니다. 물론 서버에서 일치하는 코드. 이런 식으로 일반 GWT-RPC 메소드와 일반적인 데이터 구조를 사용하여 모든 인터페이스에서 수백만 가지 메소드가 아닌 데이터를 전달할 수 있습니다. 그렇지 않으면 GWT-RPC는 "서비스 외관"에서 수백만 가지 방법을 사용하는 일반적인 CRUD "프레임 워크"만큼이나 좋습니다.

당신이 할 수있는 한 가지는 GWT-RPC를 Spring MVC와 "통합"하는 것이다. 몇 줄의 코드 만 - GWT-RPC 서비스를 표준 Spring @Controllers로 구현할 수 있습니다. 그들은 모든 자동 구성 요소에 액세스 할 수 있습니다. 더 필요한 것이 있습니까? Spring을 통해 절대적으로 액세스 할 수 있습니다. 그래서 여기

입니다 당신은 어떻게 :

public abstract class GwtRpcController extends RemoteServiceServlet implements Controller, ServletConfigAware { 
private static Log log = LogFactory.getLog(GwtRpcController.class); 

private ServletConfig servletConfig; 

@Override 
public ServletConfig getServletConfig() { 
    return servletConfig; 
} 

@Override 
public void setServletConfig(ServletConfig servletConfig) { 
    try { 
     this.init(servletConfig); 
    } catch (ServletException e) { 
     throw new RuntimeException(e); 
    } 
    this.servletConfig = servletConfig; 
} 

@Override 
protected void onAfterRequestDeserialized(RPCRequest rpcRequest) { 
    super.onAfterRequestDeserialized(rpcRequest);  
} 

@Override 
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    super.doPost(request, response); 
    return null; 
} 

@Override 
protected void doUnexpectedFailure(Throwable e) { 
    log.error(e.getMessage(), e); 
} 

}

그리고 당신의 GWT-RPC 서비스 :

@RemoteServiceRelativePath("gwtrpc/xxx") 
public interface XxxService extends RemoteService { 
... 
} 

@Controller 
@RequestMapping(value = "xxx") 
public class XxxServiceImpl extends GwtRpcController implements XxxService { 
... 
} 

것은 확실 "gwtrpc/*"에 SpringDispatcher 서블릿에 매핑되어 있는지 확인을 web.xml. 일반적으로 모든 것을 ("/") 매핑하고 CSS와 같은 비 스프링 리소스에 대한 예외를 만들면 명시 적으로 처리해야 할 필요가 없습니다.