天天看点

<!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