2012-01-25 9 views
0

私はJava開発の初心者であり、Javaで書かれたデータ収集アプリケーションの一般的なデザインパターンを探しています。 私はすでにSAXを使ってデータを取り出してデータベースに格納する基本的なJavaコンソールアプリケーションであるプロトタイプを書いています。SAXデータ収集デザインパターン

明らかに、これはWebアプリケーションではないため、Tomcatのようなコンテナで実行する必要はありませんが、何をお勧めしますか?このアプリケーションでは現在、基本的なJavaタイマーを使用して5分ごとに実行されます。

私は考えることができるので、基本的な要件は

  1. それはすべての時間を実行する必要があるので、それがクラッシュした場合、それは再起動する必要があります。
  2. 5分ごとに作業が必要なため、タイマーが必要です。
  3. はHibernateを使用できますが、オーバヘッドが発生した場合はこれが高く、 日付の集中アプリケーションです。

は、だから私は探しています何のような提案です:

あなたはとにかくTomcatの下にタイマーウィジェットthingumbobを実行して得ることができる要件#1 ....やSpring 99はあなたが必要とするすべての機能を持っています。

など

答えて

0

このタイプのアプリケーションのために、あなたは実際の作業を行うスレッドを生成し、メインプロセスを持つことができます。このスレッドはループ内にあり、基本的に実行中かどうかをチェックします。それが実行されている場合、それは継続します。その作業が完了したら、Thread.sleep(msToSleep)を使用してスレッドを5分間スリープさせることができます。だから、仕事と睡眠の連続的なサイクルに入るでしょう。タイマーは必要ありません。メインプロセスはスレッドを「ping」して、それが機能しているかどうか、そして新しいスレッドを生成していないかどうかを調べることができます。 OSによっては、メインプロセスが実行されていることを確認する同様の手法があります。 HibernateのようなORMを使用するとオーバーヘッドが増えるため、トランザクションのパフォーマンスと開発の容易さのトレードオフが必要になります。データをオブジェクトに変換する場合は、プロファイラを使用して、ORMよりも効率的に実装するかどうかを確認する必要があります。

+0

ケビン、 お返事ありがとうございます。 私はスレッドを作成し、メインプロセスからそれを監視する方法を知っています。私は、Javaの多くのフレームワークの1つを使用して、他にも確立されたパターンがあるかどうか疑問に思っていました。 – mitchmcc

+0

提供された情報が限られた回答で刺すだけです。問題についてもう少し詳しい情報を提供すれば、おそらくもっと答えが出ます。ここで説明する単純なポーリングでは、フレームワークは必要ありません。あなたはフレームワークから何を望みますか?データソースとは何ですか? XMLファイルですか?なぜあなたはSAXを使用していますか?データストアとは何ですか?これは抽出変換ロード(ETL)プロセスですか? –

関連する問題