package com.jeecms.cms.task.job; import java.io.IOException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.SchedulerContext; import org.quartz.SchedulerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.orm.hibernate3.SessionFactoryUtils; import org.springframework.scheduling.quartz.QuartzJobBean; import com.jeecms.cms.entity.assist.CmsTask; import com.jeecms.cms.entity.main.CmsSite; import com.jeecms.cms.manager.main.CmsSiteMng; import com.jeecms.cms.staticpage.StaticPageSvc; import freemarker.template.TemplateException; /** * @Description 首页静态化的job类 * @author tom */ public class IndexStaticJob extends QuartzJobBean{ private static final Logger log = LoggerFactory.getLogger(IndexStaticJob.class); protected void executeInternal(JobExecutionContext context)throws JobExecutionException { try { SchedulerContext schCtx = context.getScheduler().getContext(); JobDataMap jdm=context.getJobDetail().getJobDataMap(); //获取Spring中的上下文 ApplicationContext appCtx = (ApplicationContext)schCtx.get("applicationContext"); this.cmsSiteMng= (CmsSiteMng)appCtx.getBean("cmsSiteMng"); this.staticPageSvc= (StaticPageSvc)appCtx.getBean("staticPageSvc"); this.sessionFactory=(SessionFactory) appCtx.getBean("sessionFactory"); this.siteId=Integer.parseInt((String) jdm.get(CmsTask.TASK_PARAM_SITE_ID)); } catch (SchedulerException e1) { // TODO 尚未处理异常 e1.printStackTrace(); } staticIndex(); } public void staticIndex(){ log.info("static index page"); CmsSite site=cmsSiteMng.findById(siteId); Session session = SessionFactoryUtils.getSession(sessionFactory, true); session=sessionFactory.openSession(); session.beginTransaction(); site=(CmsSite) session.get(site.getClass(), site.getId()); try { staticPageSvc.index(site); } catch (IOException e) { log.error("static index error!", e); } catch (TemplateException e) { log.error("static index error!", e); } session.flush(); session.close(); } private StaticPageSvc staticPageSvc; private CmsSiteMng cmsSiteMng; private SessionFactory sessionFactory; private Integer siteId; }