0

mssqlサーバーから5分ごとにデータを取得してプロットするカスタムグラフクラスをJavaスイングで作成しました。これが私のアーキテクチャです

TimerGraph <-- データソース (MSSQL) <-- MSSQLManager <-- メイン

私の TimerGraph は、いつ新しいデータ ポイントを要求するかを DataSource に伝えます。

私の MSSQLDataSource には、クエリを実行するために MSSQLManager と通信するクエリ固有の変数があります

MSSQLManager はデータベースに接続し、クエリを実行します。

したがって、同じデータベースから複数のデータポイントを異なる変数でグラフ化する必要がある場合、私の問題はスケーラビリティです。それぞれのクエリを同じ DB 接続で実行できるように、各 MSSQLDataSource が同じ MSSQLManager 接続への参照を保持するように実装しました。

タイマーが開始して各データソースから新しいポイントを要求すると、そのデータソースが参照されているデータベース接続からクエリを実行するように要求されますが、実際には 1 つの呼び出しのみが行われます。(約20程度あるはずの場合)...

public static void main(String[] args) {
    SpotCheck sc = new SpotCheck();
    SwingUtilities.invokeLater(sc);
}

私のメインアプリには、別のスレッドで実行され、TimerGraphs をインスタンス化するメソッド run() があります (私はスイングタイマーを使用しています)。選択したコンボボックス項目に基づいて適切なグラフを表示するために CardLayouts を使用しました。JPanel が現在の CardLayout に表示されていない場合でも、swing タイマー actionListeners は実行されますか? そうでない場合、それらを作成することは可能ですか? または、ある種のスレッドの問題がありますか。

ありがとう

4

0 に答える 0