Glassfish(EJB)与Quartz Job Scheduler整合

10 三月, 2010 (15:16) | J2EE Server 繁体 English    DeliciOus   
作者: H.E. | 您可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.javabloger.com/article/glassfish-quartz-ejb.html

废话少说,步骤如下:

1.创建quartz.properties文件放入你的 ${AS_INSTALL}/domains/domain1/config目录下

2.创建 Quartz Scheduler 的 JNDI Factory程序,例子如下:

public class SchedulerFactory implements javax.naming.spi.ObjectFactory {
private static Logger log = Logger.getLogger(SchedulerFactory.class.getName());
private static Scheduler scheduler;
static {
try {
StdSchedulerFactory factory = new StdSchedulerFactory("quartz.properties");
scheduler = factory.getScheduler();
scheduler.start();
} catch (SchedulerException se) {
log.severe("Cannot initialize job scheduler : \n"+se.getMessage());
scheduler = null;
}
}
public SchedulerFactory() { ; } // Need to have public no-argument constructor
public static Scheduler getInstance() {
return scheduler;
}
public Object getObjectInstance(Object arg0, Name arg1, Context arg2, Hashtable<?, ?> arg3) throws Exception {
return getInstance();
}

 
3.下载quartz-all-1.6.0.jar放入你的 x:\glassfish\domains\domain1\lib 目录下.

4.在你的x:\glassfish\domains\domain1\config\server.policy文件中加入quartz classes变量,内容如下:
///////////////////////////////////////////////////////////////////////////////////////////////
// Quartz Scheduler
///////////////////////////////////////////////////////////////////////////////////////////////
grant codeBase "file:${com.sun.aas.instanceRoot}/lib/quartz-all-1.6.0.jar" {
permission java.lang.RuntimePermission "getClassLoader";
// Required for ShutdownHookPlugin
permission java.lang.RuntimePermission "shutdownHooks";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission javax.management.MBeanPermission "com.sun.enterprise.admin.runtime.BaseRuntimeMBean#", "registerMBean";
permission javax.management.MBeanServerPermission "findMBeanServer";
};

5.使用GlassFish Admin 控制台管理界面,创建一个JNDI名称,名称叫做 "JobScheduler".

6.重启GlassFish应用服务器

7.编写一个简单的EJB程序,程序主要内容如下:
Example : ——————————————————————————————————————
@Resource(mappedName="JobScheduler")
Scheduler jobScheduler;

List<JobExecutionContext> jobs = jobScheduler.getCurrentlyExecutingJobs();
if (jobs != null && !jobs.isEmpty())
for (JobExecutionContext job : jobs)
System.out.println("Job : "+job.getName());
else
System.out.println("No Jobs Found");

–end–
 


Creative Commons License
本文由J2ee企业顾问-黄毅创作,并已采用创作共用署名2.5中国大陆版许可证授权。

评论





-->