質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2905閲覧

JavaEE7で@Scheduleアノテーションを使用して変則的なタイマー設定を行いたい

omodai

総合スコア10

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/05/31 01:40

###前提・実現したいこと

JavaEE7で、タイマー処理を検討しているのですが実行間隔の設定方法について困っています。
例えば、以下の間隔でタイマーで実行したい場合はどう設定すればいいでしょうか。

  • 5:30
  • 10:00
  • 12:30

5:00,10:00,12:00なら設定は可能ですが、一部の分を変えたい場合の設定がわかりません。
何かスマートな方法、代替案はないものでしょうか。

###該当のソースコード

java

1package jp.co.XXX.test; 2 3import java.text.SimpleDateFormat; 4import java.util.Date; 5import javax.ejb.Schedule; 6import javax.ejb.Stateless; 7 8@Stateless 9public class TestTimer { 10 11 @Schedule(second = "0", minute = "0", hour = "5,10,12", persistent = false) 12 public void process() { 13 System.out.printf("%s : ScheduledEjb.process()", this.now()); 14 } 15 16 private String now() { 17 SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss"); 18 return format.format(new Date()); 19 } 20 21}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

本家を見たところ、以下のようにして複数指定できそうな感じですが、どうでしょうか。
Creating Programmatic Timers

Java

1@Schedules ({ 2 @Schedule(dayOfMonth="Last"), 3 @Schedule(dayOfWeek="Fri", hour="23") 4})

投稿2017/05/31 02:11

sllmejacob

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omodai

2017/05/31 02:35

ちゃんと記述があったのですね。見落としていました。 @Schedules でくくることでやりたいことができました。ありがとうございました!
sllmejacob

2017/05/31 02:40

いえいえ。なんとなく複数指定できそうだなってことで探したら ちょうどそれっぽいのが出てきたので。動いて良かったです。
guest

0

アノテーションを追加して、呼び出し用ダミー関数を記述する方法ではどうでしょうか。
検証していない点、ご了承下さい。

java

1 @Schedule(second = "0", minute = "30", hour = "5,12", persistent = false) 2 public void proccess1(){ 3 process(); 4 } 5 6 @Schedule(second = "0", minute = "0", hour = "10", persistent = false) 7 public void proccess2(){ 8 process(); 9 } 10 11 private void process() { 12 System.out.printf("%s : ScheduledEjb.process()", this.now()); 13 } 14 15 private String now() { 16 SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss"); 17 return format.format(new Date()); 18 } 19

投稿2017/05/31 02:08

BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omodai

2017/05/31 02:36

ご回答ありがとうございます。標準で用意されていたようなのでそちらで記述したいと思います。
BlueMoon

2017/05/31 03:43

sllmejacobさんの記述の方がスマートですね。私も勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問