2009-08-18 23 views
2

私たちは、プロジェクトでSpring Remotingを使用していました。当社のWebサービスにアクセスするために他のシステムで使用されています。私たちは現在、Webサービスのパラメータについて進化しています。同時に私たちは消費者から独立しようとしています。Spring Remotingのシリアル化とデシリアライゼーション

現在のところ、私の質問は、シリアル化とデシリアライゼーションが春のリモーティングでどのように機能するかです。ここでは詳細は以下のとおりです。

私はクラスでパラメータを以下ました春リモーティングを介して公開ウェブサービスを持っている現在、すべての消費者

  1. 年齢
  2. アドレス

それぞれのスタブを使用すると、シリアライゼーションとデシリアライゼーションがそれに応じて行われます。

私たちは、次のフィールドが含まれているために、それぞれ当社のウェブサービスとクラスを進化述べたようになりました」

  1. 年齢
  2. アドレス
  3. dateOfBirthの

しかし、消費者はまだ古いスタブまたはラテを持っているr stub-jarを使用してWebサービスにアクセスします。私たちはスパイクを行いました。私たちの端に新たに追加されたフィールドに関係なく、リモーティングサービスはうまく動作しているようです。私はフィールドの数が追加されてから消費者の側でそれが爆弾になることを期待していた。 "フィールドが削除された/ CLASSから削除されたことを知らせてください"。追加のみが行われています。

春のリモーティングは、追加のフィールドを正常に処理しますか、それともベビーベッドであると予想する必要がありますか?

私の質問が明確でない場合は教えてください。私が前進させようとしている究極の疑問は、私のプログラムが爆撃することを期待しているかどうかです。そして、私は何かを正しくテストしていないので、現在失敗していませんか?どのように春のリモーティングは、交換されているオブジェクトをシリアル化して逆シリアル化するのですか?

+0

これはSpringとはまったく関係がありません。これはプレーンなjava.io直列化問題です。 – skaffman

+0

Springは直列化と逆直列化を処理します。Javaが提供するものの上に春があれば、それは基本的なJavaのものを呼び出します。 私はそれについても明確にしたい。 – Priyank

+0

いいえ、Springは直列化の世話をしません。JREが提供する直列化機能を使用します。 – skaffman

答えて

1

スプリングシリアル化は、Javaシリアル化の規則に従います。

変更が実際にserialVersionUIDに影響を与えており、変更を加えていないことを確認してください。

+0

ありがとうございます。私はserialVersionUIDを変更せずに保存していたので、リモートスタブとクラスが引き続き動作する理由を明確に説明しています。 乾杯 – Priyank

1

私は、Springのリモート処理はHTTPに基づいており、Javaのシリアル化には基づいていないと考えました。その場合、これらはパラメータの名前と値のペアであり、既存のクライアントが期待するパラメータを取り除かない限り、引き続き動作する必要があります。

これを確認してください。あなたのSpringの知識は優れており、今は休暇中です。私は友人のコンピュータに長く滞在してトピックを研究するのは失礼だ。申し訳ありませんが、私はより役に立たないことができます。

+4

SpringのHTTP呼び出し側は、依然として標準Java直列化を底部で使用しています。私はOSGiでの使用のために非直列化を修正する必要があったので、その奥深いところにいました。 – SteveD

+0

これは間違いなく、SpringのHttpInvokerはHTTP転送を介してjava直列化オブジェクトを提供します。 – skaffman

+0

すべての入力にお付き合いいただきありがとうございます。それは確かに正しい方向に私を指摘しました。 – Priyank

関連する問題