2016-09-19 4 views
1

30分ごとにJavaプログラムを作成し、データベースから情報を読み込み、構造体内に保持しますVector<Vector<Object>>。 これを行うにはScheduledExecutorServiceを使用してください。JavaプログラムにDBのデータが変更されたことを通知する方法

データベースから項目を追加/変更/削除するための2番目のJavaプログラムを作成しました。最初のプログラムに、データベースに何らかの変更が加えられたことを通知し、30分待たずに新しい情報を再読み込みするにはどうすればよいですか?

最初のプログラムは常にアクティブですが、2番目のプログラムは変更が必要な場合にのみ実行されます。

答えて

1

2番目のJavaプログラムからのみ項目を追加/変更/削除できる場合は、最初のプログラムのメソッドを呼び出すことができます。

これを行う最も簡単な方法は、データベースが変更されるたびに呼び出される最初のプログラムからWebサービスを公開することです。

データベースで直接データベース項目を変更できる場合は、データベースにトリガーを作成し、データベースから直接Webサービスを呼び出す必要があります。この2番目のアプローチ(トリガーイベントを直接呼び出す)は悪い習慣であることに注意してください。この場合、次の2つの手順を組み合わせることができます。2番目のjavaプログラムから変更があった場合はwsを直接呼び出し、データベースに直接行われた変更についてはポーリングをアクティブのままにします。

+0

最初のプログラムでソケットサービスを有効にすると、それらの間の通信が可能になりますか? – JoeJoe

+1

2番目のプログラムがWebアプリケーションでない場合はソケットをアクティブ化し、そうでない場合は他のプログラムがWebアプリケーションである場合は直接Webサービスを公開します。 –

+1

@ JoeJoe、program2とprogram1との通信を許可するには、どのような手段も「アクティブ化」する必要があります。ソケット(ネットワークアクセスがOKの場合)、相互にアクセス可能なファイルへの書き込み、ping ...などがあります。これは展開シナリオによって異なります。 – bruno

関連する問題