私の仕事をスケジュールするためにjava.Util.Timerライブラリを使用しています。WebsphereサーバーでJavaタイマーが起動しない
毎週日曜日に22:00に私の機能を呼びたいと思っています。私はそのコードを展開し、木曜日にWebSphereサーバーを再起動し
rspServer = new RSPServer();
Calendar scheduleStartTime = Calendar.getInstance();
scheduleStartTime.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
scheduleStartTime.set(Calendar.HOUR_OF_DAY, 22);
scheduleStartTime.set(Calendar.MINUTE, 0);
scheduleStartTime.set(Calendar.SECOND, 0);
scheduleStartTime.set(Calendar.MILLISECOND, 0);
rspServer.startScheduler(Class.forName("xx.xx.xx.xx.RSP.RSPServer"),rspServer, "PopulateModels", scheduleStartTime, 7 * 24 * 60 * 60 * 1000);
:だから私のコードは次のようです。私はその機能が日曜に始まると予想していました。しかし、それは発砲しなかった。サーバーにエラーまたはログアウトがありません。
私は月曜日午前11時と開始時刻を更新
ことを試みました。そして、午前10時40分にサーバーを再起動しました。 20分後、私の機能は期待通りに午前11時に働いた。しかし、木曜日にサーバーを再起動し、日曜日に起動時間を設定しても起動しない場合は、webshereサーバにアイドル状態のスレッドが終了するか、sth elseがありますか? この理由は何でしょうか?ここ
は私のstartScheduler機能は、WebSphere Application Serverでのメカニズムを殺すアイドルスレッドがありませんので、タイマーが実行されないいかなる理由があってはならない
public void startScheduler(final Class<?> serverClass, final Object server,
final String methodName, Calendar _startAfterTime, int _repeatAfterTime) {
timer = new Timer();
TimerTask timerTask = new TimerTask() {
private java.lang.reflect.Method method;
@Override
public void run() {
try {
method = serverClass.getMethod(methodName);
method.invoke(server);
} catch (Exception e) {
// TODO Auto-generated catch block
System.err.println("Error!");
e.printStackTrace();
}
}
};
timer.schedule(timerTask, _startAfterTime.getTime(), _repeatAfterTime);
}
ように私の問題を修正しました/util/Calendar.html)クラス?それは特に[WebSphere](https://en.wikipedia.org/wiki/IBM_WebSphere)とは何の関係もないので、この回答の中の言及は混乱しています。また、 'Calendar'の動作は、JVMの現在のデフォルトの' Locale'に依存します。ですから、デフォルトの設定がないため、「デフォルトのjava時間設定、週は日曜日から始まります」という最初の文は混乱します。それとも私は誤解したことがありますか?明確にするために回答を編集することをお勧めします。 –
私は、ローカルコンピュータのjava時間とサーバーのjava時間の間に違いがあることを強調したいと思います。理由は私の質問のためです。申し訳ありません。 – neverwinter