teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

CDIソースコード追加

2016/09/07 03:12

投稿

BlueMoon
BlueMoon

スコア1339

answer CHANGED
@@ -1,4 +1,66 @@
1
1
  JSF画面でボタン等からtimer()を起動した場合、エラーは発生しませんか?
2
2
 
3
3
  timerメソッド自体に問題ないことは検証されているということで宜しいでしょうか。
4
- 原因かは分かりませんが、ApplicationScoped指定の場合はSerializableのimplementsが必要ではないでしょうか。自分はManagedBeanは使用したことが無く、CDIによるScheduleしか試したこが無いので済みません。
4
+ 原因かは分かりませんが、ApplicationScoped指定の場合はSerializableのimplementsが必要ではないでしょうか。自分はManagedBeanは使用したことが無く、CDIによるScheduleしか試したこが無いので済みません。
5
+
6
+ @Namedは使用していませんが、以下が試したことの有るソースです。
7
+
8
+ ```java
9
+ package beans;
10
+
11
+ import java.text.SimpleDateFormat;
12
+ import java.util.Date;
13
+ import java.util.logging.Logger;
14
+ import javax.annotation.PostConstruct;
15
+ import javax.ejb.Schedule;
16
+ import javax.ejb.Stateless;
17
+ import javax.inject.Inject;
18
+
19
+ @Stateless
20
+ public class TimerService {
21
+
22
+ @Inject
23
+ transient Logger log;
24
+
25
+ @Schedule(second = "*/1", minute = "*", hour = "*", persistent = false)
26
+ public void myTimer() {
27
+ SimpleDateFormat fmt = new SimpleDateFormat("M/dd hh:mm:ss");
28
+ log.fine("■タイマーサービス■" + fmt.format(new Date()));
29
+ }
30
+
31
+ @PostConstruct
32
+ public void check() {
33
+ log.info("★オブジェクトを構築しました");
34
+ }
35
+ }
36
+
37
+ ```
38
+
39
+ ```java
40
+ package beans;
41
+
42
+ import java.util.logging.Level;
43
+ import java.util.logging.Logger;
44
+ import javax.enterprise.context.Dependent;
45
+ import javax.enterprise.inject.Produces;
46
+ import javax.enterprise.inject.spi.InjectionPoint;
47
+ import javax.inject.Inject;
48
+
49
+ @Dependent
50
+ public class LoggerProducer {
51
+
52
+ @Inject
53
+ InjectionPoint point;
54
+
55
+ @Produces
56
+ public Logger getLogger() {
57
+ String className = point.getMember().getDeclaringClass().getName();
58
+ Logger logger = Logger.getLogger(className);
59
+ logger.setLevel(Level.ALL); // すべてのレベルのログを出力する
60
+ return logger;
61
+ }
62
+ }
63
+ ```
64
+
65
+ アプリケーションサーバのログか、IDEの出力画面でメッセージが確認できると思います。
66
+ 引用元参考書は[こちら](http://www.shuwasystem.co.jp/products/7980html/4216.html)になります。

1

Serializable指定について追記

2016/09/07 03:12

投稿

BlueMoon
BlueMoon

スコア1339

answer CHANGED
@@ -1,1 +1,4 @@
1
- JSF画面でボタン等からtimer()を起動した場合、エラーは発生しませんか?
1
+ JSF画面でボタン等からtimer()を起動した場合、エラーは発生しませんか?
2
+
3
+ timerメソッド自体に問題ないことは検証されているということで宜しいでしょうか。
4
+ 原因かは分かりませんが、ApplicationScoped指定の場合はSerializableのimplementsが必要ではないでしょうか。自分はManagedBeanは使用したことが無く、CDIによるScheduleしか試したこが無いので済みません。