エンタープライズ アプリケーションとデータを通信し、Web インターフェイスから監視およびアクセスする必要がある多数の (ただし同一の)独立したプロセスで構成されるアプリケーションをどのように設計すればよいでしょうか?
Java でのより具体的な例を次に示します。
独立したプロセスは、「ユーザー」エンティティに関する初期化データを受け取り、この「ユーザー」に関する処理を開始するスタンドアロン J2SE アプリケーションの複数のインスタンスです (これは無限のプロセスであるため、バッチ ソートの設計はここでは間違っています。同様に、これらのプロセスの開始時間は関係ありません)
エンタープライズ アプリケーションは、ビジネス ロジックや DB アクセスなどを実装する J2EE Bean と Web サービスのセットであり、(たとえば) GlassFish でホストされます。
Web フロントは、Bean で動作する一連の JSP (おそらく GlassFish でも) です。
理想的には、(1) のプロセスが (2) の Bean からメソッドを呼び出すことができる方法が必要ですが、(2)の Bean がプロセス (1) を更新できるようにする方法も必要です。
したがって、これらは実行に必要なフローです。(1) 10 人の異なるユーザーに対して実行される 10 個の独立したプロセスがあると仮定します (「ユーザー」とは、たとえば数字で簡単に識別できるものと考えてください)。
- (1) のプロセスの 1 つで何かが発生し、エンタープライズ アプリケーション (2) から何らかのデータを使用してメソッドを呼び出します。
- 実際の人間のユーザー (Web アプリによって既に識別されている) の 1 人が (3) の Web ページで何かをクリックすると、(2) のメソッドが呼び出され、次にいくつかの「魔法の」エンティティ (私が持っている) が呼び出されます。名前の付け方がわからない)は、この特定のユーザーを担当する(1)から独立したプロセスを見つけ、そのプロセスを新しいデータで更新します。
これまでの私の最善のアプローチは、これらの J2SE アプリを JMX で公開し、そこから移行することですが、1 つ理解できないことがあります。「URI XでのプロセスはユーザーYを担当し、それに応じて通話を転送します。
ところで、簡単にスケーリングできるプラットフォームである限り、Java プラットフォーム (!) 以外のアドバイスをお気軽にお寄せください。
編集: また、そのような独立したプロセスを一部のアプリサーバーで「ホスト」する方法はありますか? 失敗した場合にプロセスを再生成し、リモート マシンなどでそのようなプロセスを展開および監視できるようにするものはありますか?