私は、Tomcatが起動するときに起動するJavaサーブレットプログラムを持っています。私は起動時にプログラムを負荷として説明しました。私はHTTPリクエストやレスポンスを使用していません。サービスとしてのサーブレットプログラム
私が必要とするのは、プログラムをサービスとして実行する必要があるか、一定の時間間隔で自動更新する必要があることです。どうやってするか?誰かが私を助けることができます!
ありがとう、 Gopal。
私は、Tomcatが起動するときに起動するJavaサーブレットプログラムを持っています。私は起動時にプログラムを負荷として説明しました。私はHTTPリクエストやレスポンスを使用していません。サービスとしてのサーブレットプログラム
私が必要とするのは、プログラムをサービスとして実行する必要があるか、一定の時間間隔で自動更新する必要があることです。どうやってするか?誰かが私を助けることができます!
ありがとう、 Gopal。
Tomcatが自動私は時々、タイマーを使用する.warファイルが
を変更するたびに更新しないために、定期的にHTTPリクエストを行います
timer = new Timer(true);
timer.scheduleAtFixedRate(
new TimerTask() {
URL url = new URL(timerUrl);
public void run() {
try {
url.getContent();
} catch (IOException e) {
e.printStackTrace();
}
}
},
period,
period);
私はQuartzを使用することをお勧めいたします。 Quartzを使用してスケジュールされたジョブを定義することができます。
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzTest {
public static void main(String[] args) {
try {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
クォーツは素晴らしいアイデアですが、必要なものによっては多少の過度の可能性があります。実際の問題は、あなたが入ってくるHttpServletRequestsを実際に聞いていないときにサーブレットにサービスを詰め込もうとしていると思います。代わりに、あなたのサービスを起動するためのServletContextListenerを使用することを検討し、モーリスなどのタイマーは、提案:
のweb.xml:
<listener>
<listener-class>com.myCompany.MyListener</listener-class>
</listener>
そして、あなたのクラスには、次のようになります。
public class MyListener implements ServletContextListener {
/** the interval to wait per service call - 1 minute */
private static final int INTERVAL = 60 * 60 * 1000;
/** the interval to wait before starting up the service - 10 seconds */
private static final int STARTUP_WAIT = 10 * 1000;
private MyService service = new MyService();
private Timer myTimer;
public void contextDestroyed(ServletContextEvent sce) {
service.shutdown();
if (myTimer != null)
myTimer.cancel();
}
public void contextInitialized(ServletContextEvent sce) {
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
public void run() {
myService.provideSomething();
}
},STARTUP_WAIT, INTERVAL
);
}
}
QuartzとTimerTasker: Timerメカニズムは、実行ごとに新しいJobインスタンスを作成するQuartzとは対照的に、繰り返し実行する間に共有されるTimerTaskインスタンスを使用します。 – ariso
何オートリフレッシュを意味しますか? tomcatがこれを行います。 – Tobias