2009-08-29 8 views
1

나는 다음과 같은 모델 클래스가 있습니다GWT 내 GWT 응용 프로그램에서 java.io.Serializable을

import com.google.gwt.user.client.rpc.IsSerializable; 

public class TestEntity implements IsSerializable { 
    public String testString; 
} 

이 클래스는 GWT 사용자 정의 IsSerializable 마커 인터페이스 구현 -, 정말 싫어 내가 사용하기 때문에 내 GWT뿐만 아니라 모델 클래스. 그래서 java.io.Serializable 선호합니다.

그러나 IsSerializable 대신 Serializable을 구현하도록 클래스를 수정하면 GWT RPC 메커니즘이 더 이상 작동하지 않습니다. 서버 쪽에서 오류가 발생하지 않지만 AsyncCallback.onFailure 클라이언트가 호출됩니다.

내가 사용하고 ...

  • GWT 1.7.0.
  • 봄 2.5.6.SEC01
  • 봄과 GWT는 here과 같이 구성됩니다.
+0

어쩌면 힌트 : 클래스가 * .gwt.rpc 파일에 나타납니다 package.path.TestEntity 사실 –

답변

0

좋아, Gwt-Spring-Article (내가 게시 한 링크)의 의견을 살펴보고 해결책을 찾았습니다. 나는 공정 통화 법의 두 줄을 변경했다 :

RPCRequest rpcRequest = RPC.decodeRequest(payload, this.remoteServiceClass, this); 
return RPC.invokeAndEncodeResponse(this.remoteService, rpcRequest.getMethod(), rpcRequest.getParameters(), rpcRequest.getSerializationPolicy()); 
0

정확하게받는 오류는 무엇입니까? 우리는 우리의 DTO에 Serializable을 아무런 문제없이 사용하고 있습니다. 그래서 당신도 그렇게 할 수 있어야합니다.

+0

에 Throwable.getMessage() 클라이언트에서만 말한다 : 통화가 서버에 실패; 자세한 내용은 서버 로그를 참조하십시오. stacktrace가 비어 있습니다. 서버 로그에는 디버그 메시지 만 있습니다. 그리고 그들은 모든 것이 좋았다고 나에게 말한다. 나는 봄을 사용한다는 것을 잊어 버렸다.GWT와 Spring은 다음과 같이 구성됩니다. http://technophiliac.wordpress.com/2008/08/24/giving-gwt-a-spring-in-its-step/ –

1

그것은이 스프링 MVC와 GWT 하이브리드 기술은 내 새 직장에서의 코드베이스에 사용되는 것으로 나타났다을 - 오류가 나는 얻고 있었다 당연하지 비슷했다! 이 게시를 보내 주셔서 감사합니다. 문제를 확인하고 수정하는 데 도움이되었습니다. 우리가 작성한 코드는 게시 한 기사의 이전 코드 (또는 해당 코드의 기반이 무엇이든)를 기반으로했습니다. 표절은 풍부하다!

요약하면,이 기사에서는 GWT를 Spring-MVC와 통합하는 방법을 제안한다. 솔루션의 핵심은 Spring MVC 컨트롤러와 GWT RemoteServiceServlet을 결합한 Servlet 서블릿 클래스를 제공하는 것이다. Serializable DTO 객체는 GWT의 isSerializable 마커 인터페이스를 구현하지 않은 DTO를 처리 할 수없는 GWT-1.4 이전 코드를 기반으로 한 코드이므로 지원되지 않습니다. 무슨 일이 일어나고 있는지 알게되면 컨트롤러 클래스에 대한 업데이트는 매우 간단합니다 ...

두 고정 선은 단순히 SerializationPolicyProvider (이는 RPC.decodeRequest()의 마지막 매개 변수에있는 'this'입니다. 호출 클래스는 GWT의 RemoveServiceServlet (SerializationPolicyProvider)을 확장합니다. 이 간단한 수정으로 인해 업데이트 된 (1.4 이후) GWT 코드가 호출되어 Serializable 및 isSerializable 클래스를 처리 할 수 ​​있습니다. SerializationPolicyProvider는 serializationPolicy를 찾습니다.

두 번째 픽스는 serializationPolicy를 RPC.invokeAndEncodeResponse() 메서드로 전달합니다. GWT 모듈을 컴파일 할 때 확인 된 DTO 개체의 * .gwt.rpc 허용 목록입니다.