現在oracle開発環境のNet Beansを使用して、Javaの勉強をしております。
セッションビーンズのタイマーサービスを実行してスケジュール機能を実装しようとしておりますが、ログに「EJB Timer Service is not available.」というエラーメッセージが出てしまい、デプロイすることができません。
oracleの手順書通り、下記を実行しましたがやはりできなかったみたいです。
前提: glassfish-web.xhtmlは導入済み。
- Net Beansサービスタグ ⇒ [サーバー]を開く
- [GlassFish Sever] ⇒ [ドメインコンソール表示]
- [Configuration] > [server-config]>[EJB Container]
- [Time Datasource]欄に使用するデーターソース名(今回:jdbc/mydb)を記入
- [save]⇒保存
- サーバー再起動 ⇒ Net Beansの[jdbc/mydb]を再起動させる。
- 下記プログラムを実行
<ソースコード>
『現在の年月日時間を表すパッケージ』
Java
1package ejb; 2 3import java.util.Calendar; 4import javax.ejb.Stateless; 5 6@Stateless 7public class Cal { 8 public Calendar addYera(int addYera) { 9 return add(null, addYera, 0, 0, 0, 0, 0, 0); 10 } 11 12 public Calendar addMonth(int addMonth) { 13 return add(null, 0, addMonth, 0, 0, 0, 0, 0); 14 } 15 16 public Calendar addDate(int addDate) { 17 return add(null, 0, 0, addDate, 0, 0, 0, 0); 18 } 19 20 public Calendar addHour(int addHour) { 21 return add(null, 0, 0, 0, addHour, 0, 0, 0); 22 } 23 24 public Calendar addMinute(int addMinute) { 25 return add(null, 0, 0, 0, 0, addMinute, 0, 0); 26 } 27 28 Calendar addSecond(int addSecond) { 29 return add(null, 0, 0, 0, 0, 0, addSecond, 0); 30 } 31 32 public Calendar add(Calendar cal, 33 int addYera, int addMonth, int addDate, 34 int addHour, int addMinute, int addSecond, 35 int addMillisecond) { 36 if (cal == null) { 37 cal = Calendar.getInstance(); 38 } 39 cal.add(Calendar.YEAR, addYera); 40 cal.add(Calendar.MONTH, addMonth); 41 cal.add(Calendar.DATE, addDate); 42 cal.add(Calendar.HOUR_OF_DAY, addHour); 43 cal.add(Calendar.MINUTE, addMinute); 44 cal.add(Calendar.SECOND, addSecond); 45 cal.add(Calendar.MILLISECOND, addMillisecond); 46 return cal; 47 } 48}
『上記プログラムを2秒毎にサーバーログに表示させるパッケージ』
Java
1package ejb; 2 3import java.text.SimpleDateFormat; 4import java.util.Date; 5import javax.ejb.EJB; 6import javax.ejb.Schedule; 7import javax.ejb.Stateless; 8 9@Stateless 10public class TimerSessionBean { 11 @EJB 12 Cal cal; 13 @Schedule( second = "*/2", minute = "*", hour = "*", persistent = false) 14 public void myTimer() { 15 System.out.println("Timer event: " + cal.addDate(-20).getTime()); 16 } 17}
エラーログ
重大: Exception while loading the app 重大: Undeployment failed for context /sample20 警告: EJB Timer Service is not available. Timers for application with id 99535579412561920 will not be deleted 重大: Exception while loading the app : EJB Timer Service is not available
オラクルにはほかにも、「as-install/lib/install/applications/ejb-timer-service-app.war」をGlassFish Severにデプロイすると
良いと書かれておりましたが、探しましたが分かりませんでした。
どなたか解決方法をご存知の方教えて頂ければと思います。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー