2

2 つのコンポーネントを持つ Java EE アプリケーションがあります。1 つ目は、インターネットから情報を取得してデータベースに入力するサービスです。2 つ目は、ユーザーがその情報を参照できる Web インターフェイス (Tomcat にデプロイされている) です。

最初のコンポーネントを実装するための最良のアプローチは何ですか? バックグラウンド デーモン/サービスとして実行する必要がありますか、それともコンテナー内のスレッドとして実行する必要がありますか?

4

3 に答える 3

8

私は個人的にそれらを異なるプロセスに分けます。他のことは別として、もう一方を気にせずに一方を再起動できることを意味します。また、実際には Web インターフェイスを必要としないサービスのために Tomcat を無意味にインストールすることなく、さまざまなマシンに簡単に展開できることも意味します。

于 2009-10-11T08:21:02.283 に答える
7

アプリケーションフレームワークのタイプに応じて、SpringではQuartzまたはjava.util.concurrentフレームワークを使用できます。Springには、これの多くを単純化するTaskExecutor抽象化(Springのドキュメントを参照)がありますが、どちらが設計に最適かを確認してください。

次に、SpringまたはQuartz(Springによって管理)は、スレッドまたはエグゼキューターまたはジョブの作成と開始/停止を、それらの頻度/期間およびその他のスケジューリングパラメーターとともに制御し、必要になる可能性のあるジョブのプールも管理します。

これらは、私が作成するJavaEEアプリケーションのすべてのバックグラウンドタスクとバッチジョブに問題なく使用しています。ジョブはSpringが管理するPOJOであるため、Springが必要とする完全な依存性注入フレームワークなどにアクセスできます。もちろん、ニーズの変化や拡張に応じて、アプリケーション構成XMLファイルを簡単に変更するだけでスケジューラフレームワークを切り替えることができます。 。

于 2009-10-11T10:37:29.280 に答える
2

Web コンテナー内でバックグラウンド ジョブを実行しても問題はありませんが、適切に停止および開始できるように、Web コンテナーにそのことを知らせる必要があります。

web.xml の load-on-startup タグを見てください。http://wiki.metawerx.net/wiki/Web.xml.LoadOnStartupにいくつかのアドバイスがあります

于 2009-10-11T08:57:07.140 に答える