1

現在、私は Java で POJO の RPC を実行する方法しか知らず、非常に複雑な EJB/JBoss ソリューションを使用しています。

RMIまたは本格的なオブジェクトをシリアル化してネットワーク経由で送信できるものを使用して、同様の機能をより薄いレイヤー(Java EEコンテナーの内外)で提供するより良い方法はありますか?

私は現在、HTTP/JSON シリアライゼーションには興味がありません。

編集: 明確にするために: 古い EJB 2.1/JBoss 4 ソリューションを、コンテナー レベルで管理しやすいものに置き換えようとしています。データベースを完全に制御する必要があります (かなり複雑な SQL を非常に簡単に使用できる iBATIS を使用する予定です)。

  • ルックアップ/データ変更メソッドの呼び出し (自動魔法のシリアライゼーションがここに入る)。
  • 透過的なセッション制御 (認証/承認)。私はまだこれを達成する方法を見なければなりません。

もちろん、両方のアイテムが全体として機能する必要があります。資格情報を持たないユーザーにはアクセスを許可しないでください。

私は Web アプリケーションを作成するのがあまり好きではないので、POJO のみを管理し、いくつかのレポートを作成し、コンテナからメソッドを呼び出す GUI (Swing または SWT) を作成する予定です。シリアル化をできるだけ簡単にしたい。

4

4 に答える 4

2

ほとんどの場合、Springが助けになります。リファレンス ドキュメントから、第 17 章Spring を使用したリモート処理と Web サービスを読みたいと思うでしょう。

いくつかの方法から選択できます。Spring の優れた点は、すべてのインターフェースと実装がバニラ POJO であることです。RMIまたはSpringによって処理されるものへの配線。あなたはできる:

  1. RMI を使用してサービスをエクスポートします。おそらく最も簡単な方法です。
  2. HTTP インボーカーを使用します。リモート アクセスが問題になる場合、これは純粋な RMI よりもファイアウォールなどに適している可能性があります。また
  3. Web Services を使用します。その場合、私はJAX-RPC よりも JAX-WS を好みます。

Spring には、サーバーとクライアントの両方の配線を簡単かつ透過的に行うことができるという追加の利点があります。

個人的には(2)か(3)のどちらかを選びます。HTTP はネットワークに適しています。Web コンテナーに簡単にデプロイできます。 Jettyの長寿命の接続により、HTTP 経由のサーバー プッシュ (効果的に) を超えるオプションが提供されます。

これらのメソッドはすべて、複雑なオブジェクトをネットワーク経由で送信できますが、この点で微妙に異なります。サーバーとクライアントを別々に配布するかどうか、およびクラス ファイルを再配布するために必要なインターフェイスを変更する場合に問題になるかどうかを検討する必要があります。または、カスタマイズされたシリアライゼーション ソリューション (XML も含む) を使用して、これを回避できます。しかし、それには問題もあります。

Web コンテナーを使用すると、 Spring Securityを簡単にプラグインできますが、オプションが非常に多いため、最初は少し戸惑うかもしれません。また、HttpSessionリクエスト間の状態情報を提供するために使用できます。

于 2008-12-28T22:28:24.540 に答える
1

単純な RPC は、まさに RMI が構築された目的です。シリアル化可能なインターフェイスを作成すると、あるアプリのメソッドを別のアプリから呼び出すことができます。

于 2008-12-28T19:58:12.393 に答える
0

値オブジェクトのみが必要な場合は、POJO が Serializable を実装していることを確認し、ソケットを介してオブジェクトを書き込みます (ObjectOutputStream を使用)。受信側では、ObjectInputStream を使用してオブジェクトを読み取ります。受信側には、互換性のあるバージョンの POJO が必要です (serialVersionUID を参照)。Hessian/Burlap 'protocol-ize this: http://hessian.caucho.com/およびhttp://www.caucho.com/resin-3.0/protocols/burlap.xtp

于 2008-12-28T20:16:52.497 に答える
0

REST 経由でXStream ( http://x-stream.github.io/ ) を試すことができます。既存のポジョセットに簡単に適用できます。

rest/json に興味がないので、達成しようとしていることについてさらに情報を提供できますか?

于 2008-12-28T19:52:27.927 に答える