8

Java Swing アプリケーションを作成しました。ここで、それをクライアント サーバー アプリケーションにしたいと思います。サーバー上のデータが変更されたときにすべてのクライアントに通知する必要があるため、Web サービスを探しているわけではありません。クライアント サーバー アプリケーションは単一の LAN 上で実行されます。これはビジネス アプリケーションです。サーバーには、データベース JavaDB が含まれます。

どのテクノロジーとライブラリーから始めるのが最も簡単ですか? ソケットを使用してゼロから実装する必要がありますか?それとも Java RMI または JMS を使用する必要がありますか? または、開始しやすい他の代替手段はありますか?

また、使用する必要があるサーバー ライブラリはありますか? Jetty は代替手段ですか?

4

5 に答える 5

3

すでにアプリケーションを使用している場合、おそらく最も簡単な方法は、クライアントとサーバー間で必要なインターフェイスを特定し、まず、そのインターフェイスを使用してバックエンド/フロント間で通信するようにアプリケーションをリファクタリングすることです。同じプロセス内で終了します。

次に、これを分割し始めることができます。簡単な解決策は、RMIを使用してこれを分割することです(Javaオブジェクトについて話していて、Javaメソッド呼び出しがあるため)。Springには、インターフェースのRMI公開を単純化/自動化するための便利なツールが含まれています。

通知要件については、単純なUDPマルチキャスト(またはブロードキャスト)で十分です。

アプリケーションを分割するとすぐに、問題が発生することに注意してください。データの一貫したビューの維持、タイムリーな更新の管理、サーバーがダウンした場合のケースの処理、多数のクライアントを取得した場合のロードの問題の可能性など。ある意味で、アプリケーションをクライアントとサーバーに分割することは、新しいアーキテクチャの始まりにすぎません。処理する。

于 2010-05-06T19:41:44.170 に答える
2

これはJ2EEが行うことの多くですが、遭遇する問題の多くを事前に解決しており、多くの問題を解決していないため、多くの新しいテクノロジーを追加しているため、まったく新しい学習曲線です。

しかし、最も基本的には、J2EEはまさにその質問に答えます。

于 2010-05-06T19:25:29.823 に答える
2

Minaは、この目的のために単純なサーバーを構築するためのネットワーク アプリケーション フレームワークとして適切な選択です。未加工のソケットを使用するよりもはるかに優れたオプションです。

http://mina.apache.org/

本当にアプリケーション サーバーが必要な場合は、JBossを参照してください。また、リモーティング コンポーネントも提供します (Mina などの代替手段として):

http://www.jboss.org/jbossremoting

ただし、おそらくEnterprise Java Beansはあまり必要ないでしょう。ほとんどの場合、単純なPOJOベースのフレームワークで十分です。これをGuiceなどの依存性注入フレームワークと一緒に結び付けることができます。

http://code.google.com/p/google-guice/

または。本当に必要でない限り、J2EE サーバーは使用しないでください。それが役立つことを願っています。

于 2010-05-06T19:38:59.807 に答える
1

私はこのようなプロジェクトで働いていました。クライアント側の Swing とサーバー側を J2EE で実装しました。EJB、ステートレス Bean、およびメッセージ駆動型 Bean を使用しました。また、デバイス追跡、管理プロジェクトに参加しました。私たちのクライアントはトラック+Swingユーザーであり、接続を処理および維持するためにServets+TCP/UDP、Apache Minaフレームワークを使用しました。

于 2010-05-06T19:35:17.133 に答える
0

私は Java Swing クライアント/サーバー アプリケーションで 3 年近く働いています。RMI/EJB を使用することをお勧めします。私たちが開発した最初のアプリケーションは、サーバーである WebLogic とのクライアント サーバー通信に RMI/EJB を使用してこれを行っていました。

しかし、後になって、セッション タイムアウトなど、アプリケーションに含める必要がある「ブラウザのような」機能がたくさんあることがわかりました。そのため、HTTP を介して RMI 呼び出しをラップするBrightSideフレームワークを使用しました。もう 1 つの機能強化は、Weblogic をオープン ソースの JBoss サーバーに置き換えたことです。

HTTP による呼び出しのラッピングは非常に便利になり、swing アプリケーションを非常にリッチにすることができます。後で、Web サイトを厳密に使用する必要がある場合は、jnlpを使用して Swing をデプロイできます。

これが役に立ったことを願っています。

于 2010-05-06T21:00:24.970 に答える