4

私は、AJAX 呼び出しを介してサーブレットからデータを取得する Java の Web アプリケーションに取り組んでいます。

このアプリケーションには、サーバーからかなり短い間隔で新しいデータを取得するいくつかのページ要素があります。

多くのユーザーがいると、サーバーの需要がかなり高くなる可能性があるので、私は興味があります:

最高のパフォーマンスを提供するアプローチ:

多くのサーブレット (データ要求のタイプごとに 1 つ) ?

または:

すべてのリクエストを処理できる単一のサーブレット?

4

6 に答える 6

11

複数のサーブレットを使用するパフォーマンス上の理由はありません。Web アプリケーションでは、リクエストの数に関係なく、サーブレット クラスの 1 つのインスタンスのみがインスタンス化されます。リクエストはシリアル化されず、同時に処理されるため、サーブレットをスレッドセーフにする必要があります。

于 2008-10-15T03:07:09.057 に答える
2

Struts フレームワークは、アプリ内のすべてに対して 1 つのサーブレットを使用します。あなたのものはその1つのサーブレットに接続されます。彼らにとってうまくいくなら、おそらくあなたにもうまくいくでしょう。

于 2008-10-15T03:13:17.747 に答える
1

複数のサービスを持つ理由の 1 つとして考えられるのは、将来、負荷を処理するために複数のサーバーに拡張する必要がある場合、別のサービスを独自のサーバーに移動する方が、すべてが順調に進んでいる場合に「舞台裏で」移動するよりも簡単だからです。 1 つのサービスから。

そうは言っても、複数のサーブレットがある場合は余分なメンテナンス オーバーヘッドが発生するため、将来の柔軟性とメンテナンス性の低下とのバランスを取ることが重要です。

于 2008-10-15T03:42:15.210 に答える
1

複数のサーブレットを使用する場合、シングル スレッドでない限り、各サーブレット リクエストは個別のスレッドで処理されるため、パフォーマンスの向上はありません。

ただし、モジュール性とコードの分離を維持することで、複数のサーブレットを使用できます。

于 2008-10-15T03:58:30.263 に答える
0

Tony が言ったように、複雑な Java サーブレット クラスを分割する必要があるか、インターセプト フィルターを実装する必要がない限り、複数のサーブレットを使用する理由はありません。

于 2008-10-15T03:19:25.210 に答える
0

アプリの web.xml ファイルに異なるノードを登録する限り、同じサーブレットの複数のインスタンスを作成できることはご存じだと思います。

それ以外に、私が理解していることから、コメット アーキテクチャの恩恵を受ける可能性があります -- http://en.wikipedia.org/wiki/Comet_(programming)
一部のサーブレット コンテナーには既に Comet の実装がいくつかあります。ここでは、Ajax と Comet の使用方法を 1 つ紹介します ( http://www.ibm.com/developerworks/java/library/j-jettydwr/ ) 。アーキテクチャを決定する前に検討する必要があります。

BR、
~A

于 2008-10-15T05:55:29.607 に答える