2012-02-20 9 views
1

GWTには、不明な型(JDBC型のみ)のオブジェクトをシリアル化する必要があります。私は、オブジェクトがuknown "jdbc"オブジェクトのリストを保持しているので、クライアントからサーバーへ、およびバックから転送する必要があります。このオブジェクトがgwtクライアント環境ではないファイルにシリアライズしている場合、私はObjectのリストにそれらの未知のオブジェクトを保持できます。しかし、GWTはタイプObjectのオブジェクトをシリアル化できません。どうすればこれを達成できますか?任意の提案GWTでJDBC型をシリアライズ

+0

これらはすべて実際にGWTシリアライザブルですか?これらのクラスはあなたによって作成されていますか? – Strelok

+0

私が作成したクラスはシリアライズ可能です。また、JDBC型(データベース型を表すjava型)もシリアライズ可能です(http://db.apache.org/ojb/docu/guides/jdbc-types.htmlを参照)。 BlobとClob、しかし私はそれらと一緒には動作しません – maks

答えて

0

GWT JRE Emulation Referenceを参照してください。Objectクラスがなく、GWTでシリアル化できないため、IsSerializableマーカーインターフェイスを実装する独自の転送オブジェクトを作成する必要があります。 簡単に言うと、RPCはjava.lang.Objectをシリアル化できません。このリンクをチェックしてください:ここ GWT Sending type OBJECT Via RPCと良いスレッド:これらのJDBCタイプがあなたの他のRPCのいずれかの方法で返されていない場合は、問題に実行されて Serialize objectWhy is GWT serialization so complicated?

+0

私は、オブジェクトクラスがGWTによって直列化されていないことを知っています。それは私の質問の目的は、オブジェクトとして共通のスーパータイプを持っている私は知っているオブジェクトをシリアル化することができます – maks

+0

いいえGWT-RPCはjava.lang.Objectをシリアル化することはできません、そのリストのほかにもマップはシリアル化することができません –

4

たとえば、あなたのクラスFooがList [Object]を返すメソッド以外の方法でRPC経由で送信されない場合、GWTはコンパイル時に(RPCホワイトリストを生成するとき)知識がなく、Fooは直列化するコードを生成するクラス。これは特に、未使用の型からのコードの肥大を避けることが重要な、生成されたJavaScriptにとっては意味があります。

RPCを介して送信されるダミークラスに、参照されていない他のクラス(JDBCからのすべての可能な戻り値の型)を手動で追加することで回避できます。 How do I add a type to GWT's Serialization Policy whitelist?

また、必要なDummyクラスを持たないタイプを追加するカスタムRemoteServiceジェネレータを作成することもできます。あなたは、彼らがすべてのシリアライズ可能であることを保証する場合 http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsDeferred.html#generator

+0

ダミークラスです。リスト serviceMethod()を使用して、このリストの型を返すことはできますか? – maks

2

あなたは

List<Serializable> serviceMethod(); 

としてそれらを返すことができます。サービスメソッドから戻る前に、それらのすべてをSerializableにキャストしてください。

関連する問題