Javaのクライアントとサーブレット間でメッセージを渡すために適切な方法はありますか?

StackOverflow https://stackoverflow.com/questions/869333

質問

私のシステムが正常にサーブレットにクライアントからオブジェクトを渡します。これは、Java 1.1に対応するために建設されたとしてしかし、それは原始的です。それが通過するメッセージオブジェクトは、(約70種類の1つを表す)、INT及び(トークンなどリスト、オブジェクトのリストを含んでいてもよい)解析される必要があるトークンの文字列で構成されています。よくない!

だから、私は、Java 1.5にこれをリファクタリングしていますよ。列挙型の代わりに、int型を使用することは確かに改善されているが、私は残りのメッセージを送信する方法がわかりませんよ。確かに、各タイプを表すために、70回の異なるクラスを作成することは行くための正しい方法ではありません。

私はこれをリファクタリングする方法上の任意のポインタ?

役に立ちましたか?

解決

メッセージの各タイプを表すために別のクラスを作成する必要はありません。あなたが必要なプロパティを持つ1つのメッセージクラスを作成します。このような何かます:

public class Message implements Serializable{
     private Long id;
     private String msgText;
     //other necessary properties

     public Message(){
        this(0, "default message");
     }

     public Message(Long id, String msgText){
         setId(id);
         setMsgText(msgText);
         //etc
     }

     //getters and setters
}

そして、必要に応じて、あなたは、オブジェクトを作成します。たとえばます:

Message m1 = new Message(9, "The Eagle has landed");
//serialize m1 to server

Message m2 = new Message(27, "The Wren has landed");
//serialize m2 to the server

のように。

他のヒント

あなたはシリアライズされたオブジェクトを使用したい場合があります。

これらは簡単にネットワークに沿って渡されることを意味しているます。

あなたの状況では、あなただけのシリアル化された「メッセージ」クラスが必要になります。次に、あなたがストリームに読み書きできます。

ここのシリアライズされたオブジェクトを使用してのチュートリアルです。多くはそこにあります。

また、 xStreamではに使用して再びオブジェクトにXMLにオブジェクトをシリアライズすることができます。

最初の質問:なぜあなたは変更を加える必要性を感じていますか?現在のシステムは、あなたが追加することを計画しているいくつかの機能をサポートしていないので、これは?それとも、ただで行くと清掃のためにクリーンアップしたいですか?後者の場合、私は強くうそ眠っているバグを残すことをお勧めしたい。

2番目の質問:私は、これはアプレットであると仮定しています。あなたは今まで別のフロントエンドを使用する予定でしょうか?または汎用サービスとしてこのサーバーを公開?ノーならば、私は戻って最初の質問に来ます。 yesの場合は、ほぼ確実に言語固有のシリアル化から離れて維持したい。

あなたがサービスとして公開することを計画している場合は、

、その後、いくつかの「標準」サービスのプロトコルに従うことをお勧めします。 RESTは、おそらく最も簡単な、POST-INGのXMLペイロードです。あなたはまた、SOAPを行うことができますが、私は常にその行き過ぎと考えられてきました。

それとも、あなたは標準のURLエンコードされたPOST ... XMLのすべてを包むより実装が簡単であるべきで行くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top