私はクライアント側のプログラミングのバックグラウンドを持っています (主に C++)。ただし、Java でいくつかの小さなサーバー側プロジェクトに参加する必要が時々あるため、経験豊富なサーバー側の人々からのアドバイスが必要です。アプリケーションサーバーについてはよくわかりません。
プログラムがアプリケーション サーバー (GlassFish や JBoss など) をいつ必要とするかを決定するための経験則や考慮事項はありますか?
Java で記述された 2 つのサーバーがあり、両方とも専用マシンで実行されています。1 つのサーバーは、App Server なしで Tomcat で実行されます。2 番目のサーバーは、アプリケーション サーバー (Glassfish) で実行されます。
中間に位置するかなり単純なプログラムを作成する必要があります。これがプログラムが行うことです
ソケットでリッスンします。接続が最初のサーバーから来ると、スレッドを作成して接続を受け入れ、リッスンを続けます。
スレッドは最初のサーバーから少量のデータ (たとえば 100 ~ 200 バイト) を取得し、データのごくわずかなフォーマットを行い、Web サービス呼び出しを介して 2 番目のサーバーに渡します。Web サービス呼び出しの戻り値を取得し、それに基づいて何らかの処理を行います - 約 10 ~ 20 行のコードである可能性があります - これは主要な処理ではありません - 別の (3 番目の) サーバーでのいくつかの Web サービス呼び出しです。この後、最初のサーバーにいくつかのデータが返されます。これもそれほど多くはありませんが、50 バイトの可能性があります。
私のプログラムは Web サービスではありません。最初のサーバーから特定の形式でメッセージを取得し、最初のサーバーから受信したデータに基づいて 2 番目のサーバーに Web サービス呼び出しを行うだけです。ある意味では、このように考えることができます。最初のサーバーが 2 番目のサーバーに Web サービス呼び出しを行うためのプロキシとして機能します。
すべての主要な作業は、Tomcat サーバーで実行されるアプリと GlassFish で実行される Web サービスによって実行される最初のサーバーによって行われます。これらは両方とも十分にテストされたプログラムです。私が書きたい中間プログラムはとてもシンプルで、半日で完成します。ただ、気になるのは負荷に耐えられるかどうか。
このJavaプログラムを通常のWindowsサービスとして実行できるかどうか、またはGlassfishや他のアプリケーションサーバーのようなものが必要かどうかを判断するために、どのような規則/考慮事項がありますか.
1 分/1 時間あたりの接続数を考慮する必要がありますか? 接続ごとにスレッドをフォークしますが、スレッド自体はそれほど長くは存続しません。接続数のどのしきい値で、アプリケーション サーバーと見なす必要がありますか? 他の考慮事項はありますか?可能であれば、アプリケーション サーバーは避けたいと思います。
App Server で実行するかどうかは 1 つの質問にすぎません。ここで見逃している質問は他にありますか?