2011-05-06 25 views
7

GWT 2.3にアップグレードした後、一部のRPCサービスが機能しなくなり、 が「応答をデシリアライズできませんでした」で失敗します。 は、@Temporal(TemporalType.TIMESTAMP)でアノテートされているオブジェクト オブジェクトを返すサービスに起こっているようです。 I はGilead 1.3.2とHibernate 3.6を使用していましたが、GWT 2.2では問題ありませんでした。 何が起こっているのか、デバッグを開始するにはどうすればよいですか?私は非常によく似た問題を抱えているGWT 2.3アップグレード後のRPCエラー

com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: The response could not be deserialized 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:221) 
    at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java: 287) 
    at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395) 
    at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:326) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:207) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:132) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:214) 
    at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:281) 
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:531) 
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: com.google.gwt.user.client.rpc.SerializationException: java.sql.Timestamp/1769758459 
Caused by: com.google.gwt.user.client.rpc.SerializationException: java.sql.Timestamp/1769758459 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.getTypeHandler(SerializerBase.java:153) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:114) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:111) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.lensoo.shared.entity.Course_FieldSerializer.deserialize(Course_FieldSerializer.java:320) 
    at com.lensoo.shared.entity.Course_FieldSerializer.deserial(Course_FieldSerializer.java:405) 
    at com.google.gwt.user.client.rpc.impl.SerializerBase.deserialize(SerializerBase.java:95) 
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:113) 
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119) 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter$ResponseReader$8.read(RequestCallbackAdapter.java:106) 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:214) 
    ... 26 more 
    ... 26 more 
+0

サービス側のGWT 2.3にもアップグレードしましたか?サーバーからスタックトレースがありますか? –

+0

あなたが使用しているオブジェクトは、インターフェイスシリアライザブルを実装していない可能性があります。 – Ankit

+0

この問題は最近のGWTリリースで修正されていますか?(私は2.5.0-rc1にアップグレードしようとしています)または、特定の修正プログラムを適用する必要がありますか? (Gilead 1.3.2) – rpr

答えて

3

- ギリアド1.3.1は、Hibernate:

は、ここでスタックトレースです。例外はタイムスタンプフィールドにも不平を言っています。

「Timestamp_FieldSerializerことは明らかGWT 2.2または2.3で導入された1とギリアドの競合に付属の」「詳細」の

http://sourceforge.net/tracker/index.php?func=detail&aid=3285026&group_id=239931&atid=1111398

終了:ここ

は、私はギレアデのウェブサイトで見つける何かセクションは簡単な修正を示唆していますが、まだ試していません。

+0

助けてくれてありがとう。 不思議なことに、gilead4gwt.jarからcom.google.gwt.user.client.rpc.core.java.sqlパッケージを削除してください – KevMo

3

JARに触れたくない場合 - Gilead 1.3.2をMavenに依存して使用するときは、私が今日見つけたより良い解決策があります。

競合するGileadシリアライザは、GWT 2.3からシャドウされる必要がありますが、両方のJARが同じレベルにあり、gwt.xml内のinheritの位置付けはプロジェクト構造内で再実装する必要がありません。サーバーとコンパイルされたクライアントの両方で "新しい"シリアライザが優先されます。最後に、GWT 2.3とGilead 1.3.2を手に入れます。手順で

  1. は、プロジェクト内のパッケージcom.google.gwt.user.client.rpc.core.java.sqlを作成します。
  2. Eclipseを使用してgwt-servlet-2.3.jarを開き、3つのファイルDate_CustomFieldSerializer.class,Time_CustomFieldSerializer.classおよびTimestamp_CustomFieldSerializer.classの3つのファイルを検索します。 Mavenがソースをダウンロードした場合、ソースが表示されます。
  3. プロジェクトでこれらのソースファイルを再作成します。

Gileadチームは、次回のリリースでシリアライザを削除して、プロジェクトから削除することをお勧めします。

0

単にライブラリjson.jarのためのlib [PROJECT_PATH] /戦争/ WEB-INF/を検索し、ビルド・パス(私はEclipseを使用しています)に追加することができます。

0

非常に簡単です。 gilead4gwt-1.3.2.1839.jarからcom.google.*パッケージを削除するだけで済みます。

実際にこの問題は解決します。