6

ユーザーが cron 式 (例: ) を入力できるテキスト フィールドがあります0 */5 * * * *。次に、それを分割してビルドしjavax.ejb.ScheduleExpressionます。

javax.ejb.ScheduleExpression検証なしでさまざまな要素の任意の文字列を受け入れるようになりました。たとえば、

scheduleExpression.minute("randomText");

と受け入れられます。その後、ScheduleExpression を使用しようとすると、明らかにエラーが発生します (たとえば、タイマーを作成しようとすると)。

入力を検証するコードを書き始めていましたが、ルールはそれほど短くて簡単ではありません: http://docs.oracle.com/javaee/6/api/javax/ejb/ScheduleExpression.html

簡単な方法 (Java EE) や、既に機能しているライブラリはありますか?

4

2 に答える 2

4

同じ問題に遭遇したので、EJB タイマー用の Bean バリデータ アノテーションを作成しました。

お気軽にご利用ください。Bean 検証を使用したくない、または使用できるすべての人は、ファイル CronField.java の正規表現を参照して、文字列を手動で検証してください。

正規表現は「CronExpression」ではなく「ScheduleExpression」用に設計されているため、選択した名前は少し混乱するかもしれません。

改善や最適化があれば、プルリクエストまたはメッセージを送ってください。

ソースはこのリポジトリで入手できます。

使用法: public クラス 月 {

    @CheckCronField(CronField.MONTH)
    public String expression;
    ...
}

同じリポジトリの test フォルダーで、さらにいくつかの例を利用できます。

于 2013-07-05T18:00:33.637 に答える
-2

あなたが Java EE 環境にいて、Quartz を利用できる場合は、おそらくこの質問にあなたが求める答えがあります...

于 2013-01-21T09:42:25.453 に答える