2011-02-17 3 views
2

GWT 2.1.1 및 클라이언트 - 서버 통신 (AsyncService (RequestFactory가 아님))을 사용하고 있습니다. "기금"개체를 반환하는 개체가 있습니다. 기금에는 "기금"개체의 컬렉션이있는 "배포자"개체에 대한 참조가 있습니다.GWT RPC 직렬화 및 순환 참조 - 닭고기 및 계란 문제

한 시나리오에서 배급사 참조에 "foo", "bar"및 "joe"자금이있는 "foo"펀드가 서버에서 반환됩니다. 이것은 일반적인 비즈니스 시나리오입니다. 클라이언트 측에서 역 직렬화 할 때 배포자의 자금 모음에있는 "foo"참조가 채워지지 않으므로 오류가 발생합니다. 특히, fund-id (문자열)가 채워지지 않고 해시 코드 구현에 사용됩니다. 클라이언트 측 직렬화가 진행되는 동안 "bar"및 "joe"펀드는 제대로 직렬화 해제되지만 foo는 실패합니다. 즉, 몇 가지 속성 만 사용하여 직렬화 해제됩니다.

"foo"가 deserialize 될 때, 그것은 몇개의 속성이 deserialize 된 다음 배포자를 deserialize하려고 시도합니다. Foo의 fund-id 속성은 아직 deserialize되지 않았습니다. 따라서 배급 자의 컬렉션이 deserialize되고 "foo"가 발생하면 deserializer는 fund-id가없는 현재 비 직렬화 된 "foo"에 대한 참조를 제공합니다. 따라서 GWT를 배포자의 Set (HashSet)에 추가하려고하면 해시 코드 구현이 실패합니다.

내 질문에 그런 경우 GWT가 특정 속성 (이 경우에는 hashCode가 종속 된 fund-id)을 serialize하도록 할 수있는 방법이 있습니까?

답변

2

실제로 알려진 문제인지 확인했습니다. 검색을 통해이 질문에이를 통해 실행하고, 발견 다른 사람을 위해 :

http://code.google.com/p/google-web-toolkit/issues/detail?id=3577

나는 그것을 읽어 일단 사람들이 풀러 사진을 그래서 사용자 지정 serializer를 구현하는 방법에 대한 정보를 게시합니다. 나는 다른 사람들도 그렇게하도록 권유한다.