回答編集履歴

2

CDIソースコード追加

2016/09/07 03:12

投稿

BlueMoon
BlueMoon

スコア1339

test CHANGED
@@ -5,3 +5,129 @@
5
5
  timerメソッド自体に問題ないことは検証されているということで宜しいでしょうか。
6
6
 
7
7
  原因かは分かりませんが、ApplicationScoped指定の場合はSerializableのimplementsが必要ではないでしょうか。自分はManagedBeanは使用したことが無く、CDIによるScheduleしか試したこが無いので済みません。
8
+
9
+
10
+
11
+ @Namedは使用していませんが、以下が試したことの有るソースです。
12
+
13
+
14
+
15
+ ```java
16
+
17
+ package beans;
18
+
19
+
20
+
21
+ import java.text.SimpleDateFormat;
22
+
23
+ import java.util.Date;
24
+
25
+ import java.util.logging.Logger;
26
+
27
+ import javax.annotation.PostConstruct;
28
+
29
+ import javax.ejb.Schedule;
30
+
31
+ import javax.ejb.Stateless;
32
+
33
+ import javax.inject.Inject;
34
+
35
+
36
+
37
+ @Stateless
38
+
39
+ public class TimerService {
40
+
41
+
42
+
43
+ @Inject
44
+
45
+ transient Logger log;
46
+
47
+
48
+
49
+ @Schedule(second = "*/1", minute = "*", hour = "*", persistent = false)
50
+
51
+ public void myTimer() {
52
+
53
+ SimpleDateFormat fmt = new SimpleDateFormat("M/dd hh:mm:ss");
54
+
55
+ log.fine("■タイマーサービス■" + fmt.format(new Date()));
56
+
57
+ }
58
+
59
+
60
+
61
+ @PostConstruct
62
+
63
+ public void check() {
64
+
65
+ log.info("★オブジェクトを構築しました");
66
+
67
+ }
68
+
69
+ }
70
+
71
+
72
+
73
+ ```
74
+
75
+
76
+
77
+ ```java
78
+
79
+ package beans;
80
+
81
+
82
+
83
+ import java.util.logging.Level;
84
+
85
+ import java.util.logging.Logger;
86
+
87
+ import javax.enterprise.context.Dependent;
88
+
89
+ import javax.enterprise.inject.Produces;
90
+
91
+ import javax.enterprise.inject.spi.InjectionPoint;
92
+
93
+ import javax.inject.Inject;
94
+
95
+
96
+
97
+ @Dependent
98
+
99
+ public class LoggerProducer {
100
+
101
+
102
+
103
+ @Inject
104
+
105
+ InjectionPoint point;
106
+
107
+
108
+
109
+ @Produces
110
+
111
+ public Logger getLogger() {
112
+
113
+ String className = point.getMember().getDeclaringClass().getName();
114
+
115
+ Logger logger = Logger.getLogger(className);
116
+
117
+ logger.setLevel(Level.ALL); // すべてのレベルのログを出力する
118
+
119
+ return logger;
120
+
121
+ }
122
+
123
+ }
124
+
125
+ ```
126
+
127
+
128
+
129
+ アプリケーションサーバのログか、IDEの出力画面でメッセージが確認できると思います。
130
+
131
+ 引用元参考書は[こちら](http://www.shuwasystem.co.jp/products/7980html/4216.html)になります。
132
+
133
+

1

Serializable指定について追記

2016/09/07 03:12

投稿

BlueMoon
BlueMoon

スコア1339

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