2011-12-15 15 views
4

私は(私は、実際の仕事のコードを削除しました)次のジョブクラスを持っている:PlayFrameworkジョブが複数回実行されましたか?

@On("0 0 1 * * ?") 
public class DailyJob extends Job 
{ 
    @Override 
    public void doJob() throws Exception 
    { 
// I log from here   
    } 
} 

私のログは、(それだけで1日1回実行する必要がありながら、この仕事は、毎日複数回実行されることを私に伝えます01:00に)。今日は4回執行されました。このコードは、顧客のサーバー上のtomcatインスタンス上で実行されています。私は、サイトが複数のサーバー上で動作している可能性があると考えましたが、私はこれについて尋ねてきました。だから私は4が質問から外れると思うだろう。しかし、私は(静的オブジェクト上の)関数内でロックを行い、ロック/同期の内部で前の実行日(statc - System.currentTimeMillis())をチェックして設定します。そして10秒未満であれば、それは記録されるべきです。ただし、ジョブが同じ秒間に4回実行されたとしても、これは発生しません。だから私はそれが4つの異なる環境の下で実行されるかもしれないと思っています。

私はそれが演劇で動くかもしれないと思う1.2.2

何か考えですか?

+0

おそらく愚かな質問ですが、ログが4回書き込まれていないことを確認しましたか? – emt14

+1

:)プロダクションサーバーと同じ環境で動作するローカルコンピュータにこのサイトを設定しましたが、これは一度しかログに記録されません。私はまた、より多くのスレッドが同じものを扱っていることを示す、休止状態/永続例外を取得しています。 (私が理解できる限りは)(まあ、それは明らかにそれが100%同一であることはできませんが、多かれ少なかれ) – bendahmon

+1

同じサーバー上で複数のインスタンスとして実行されていますか?私はより効率的なガーベジコレクションのためにヒープのサイズを小さく保つ前に、この手法を見てきました。 – Codemwnci

答えて

0

最近のプレイバージョンでも同様のバグが修正されました。あなたはプレイ1.2.4を使用しようとしましたか?

+0

はい、プレイ1.2.4を使用して...しかし、それは複数の環境でWebアプリケーションを起動することは、風刺の問題かどうか疑問に思います。 – bendahmon

関連する問題