天天看點

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

标題:ejb3中的@Schedule中的persistent屬性的深入探索 1 實驗環境:     應用伺服器:glassfish4.0     資料庫伺服器: MYSQL Target Server Version : 50614     開發工具: netbeans8.0 2 我思考的問題:當我開發好了一個@Schedule定時任務之後,我開始思考這樣一種場景,如果我的應用伺服器(glassfish4)是叢集,那麼我的定時任務會怎麼執行,因為在你釋出一個項目到glassfish叢集中,每一台jvm中都會運作相同的程式。那定時器也必然存在多份。那麼我的定時器元件會在同一時間點執行多次嗎(執行在多個jvm中)? 如果不會,是什麼機制控制定時器的統一性,如果會,那麼我們又改怎麼解決呢? 3 在編寫一個定時器任務時,代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

把該ejbtimer_mysql.sql放到資料中執行,然後配置一個資料庫連接配接池,我這裡就直接修改預設的資料連接配接池__TimerPool。

建表語句是在test庫中執行的,這樣配置之後你的ejb定時器使用的就是你自定義的資料庫了。然後重新啟動glassfish伺服器,并把你定時器任務程式釋出到glassfish上去。若果釋出中提示EJB__TIMER__TBL表找不到,那你應該是忘記執行建表sql了。好了當我定時應用程式啟動後: 這是我的代碼程式:

控制台輸出結果如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont