zoukankan      html  css  js  c++  java
  • quartz mysql , shiro logout

    
    
    @Named
    public class SampleJob implements Job {
    
        @Inject
        private AService aService;
    
       @Override
        public void execute(JobExecutionContext context)
            throws JobExecutionException {
    
           //Do injection with spring
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            aService.doIt();
           }
    }

    http://stackoverflow.com/questions/4258313/how-to-use-autowired-in-a-quartz-job
    
    
    ApplicationContext springContext = 
        WebApplicationContextUtils.getWebApplicationContext(
            ContextLoaderListener.getCurrentWebApplicationContext().getServletContext()
        );
    Bean bean = (Bean) springContext.getBean("beanName");
    bean.method();
    package com.yingcao.springdatajpa.quartz;
    
    import java.util.List;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.TriggerKey;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class ScheduleStartListener implements ServletContextListener {
        public void contextDestroyed(ServletContextEvent sce) {
    
        }
    
        public void contextInitialized(ServletContextEvent sce) {
            try {
                recovery();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void recovery() {
    
            Scheduler scheduler = null;
            try {
    
                SchedulerFactory schedulerFactory = new StdSchedulerFactory();
                scheduler = schedulerFactory.getScheduler();// 可以通过SchedulerFactory创建一个Scheduler实例
                List<String> triggerGroups = scheduler.getTriggerGroupNames();// 获取调度器中所有的触发器组
                System.out.println("调度器中所有的触发器组 size():" + triggerGroups.size());
                if (triggerGroups != null && triggerGroups.size() != 0)// 重新恢复在triggerGroups组中所有的触发器
                {
                    for(int i = 0; i <triggerGroups.size();i++)
                    {
                        TriggerKey triggerKey = TriggerKey.triggerKey(
                                triggerGroups.get(i), triggerGroups.get(i));
                        System.out.println("triggerKey:" + triggerKey);
    
                        Trigger tg = scheduler.getTrigger(triggerKey);// 获取trigger
                        System.out.println(triggerKey + " -> 执行时间 :"
                                + tg.getNextFireTime());
    
                        scheduler.rescheduleJob(triggerKey, tg);// 按新的trigger重新设置job执行 }
                    }
    
                    scheduler.start();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }


    package com.yingcao.springdatajpa.quartz;

    import static org.quartz.JobBuilder.newJob;
    import static org.quartz.TriggerBuilder.newTrigger;

    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleTrigger;
    import org.quartz.impl.StdSchedulerFactory;

    public class QuartzTest {
        
        public void run(String date, int id) throws Exception {

            SchedulerFactory schedulerFactory = new StdSchedulerFactory();
            Scheduler scheduler = schedulerFactory.getScheduler();// 可以通过SchedulerFactory创建一个Scheduler实例
            // 设置工作详情
            JobDetail job = newJob(JobTest.class).withIdentity("job_" + id,
                    "test" + id) // (String name, String
                                    // group)把触发器在集群节点实例命名的组只是为了区分(伐木)从什么地方定问调度重新执行此作业,如果它是正在进行时调度下去...
                                    // .requestRecovery()
                    .build();

            job.getJobDataMap().put("testId", id); // 设置存储参数(不需要可删除)

            SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity(
                    "overdue" + id, "overdue" + id)// withIdentity("trigger",
                                                    // "group") .startAt(startDate)
                    .build();

            scheduler.scheduleJob(job, trigger);
            scheduler.start();
            System.out.println("------- Start Scheduler ----------------");
        }

        public static void main(String[] args) throws Exception {
            QuartzTest quartzOverdue = new QuartzTest();
            quartzOverdue.run("2014-07-02 00:30:00", 666);// 666,随便的吉祥数字
        }
    }


    http://blog.csdn.net/Uhzgnaw/article/details/46358333

    org.quartz.scheduler.instanceName = DefaultQuartzScheduler
    org.quartz.scheduler.rmi.export = false
    org.quartz.scheduler.rmi.proxy = false
    org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
     
    org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 10
    org.quartz.threadPool.threadPriority = 5
    org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
     
    org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate  
    org.quartz.jobStore.useProperties = false
    org.quartz.jobStore.tablePrefix = QRTZ_  
    org.quartz.jobStore.isClustered = false  
    # Configure Datasources 
    #============================================================================ 
    org.quartz.jobStore.dataSource = myDS
    org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver 
    org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz1x?useUnicode=true&characterEncoding=utf8 
    org.quartz.dataSource.myDS.user = root 
    org.quartz.dataSource.myDS.password =111111
    org.quartz.dataSource.myDS.maxConnections = 10 
    <bean id="scheduler"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
        lazy-init="false">
        <property name="configLocation" value="classpath:quartz.properties" />
    </bean>
    <bean id="logout" class="org.apache.shiro.web.filter.authc.LogoutFilter">
        <property name="redirectUrl" value="/loginform" />
    </bean> 
    /logout = logout
  • 相关阅读:
    Java必会之多线程
    第一周JVM核心技术-工具与GC策略
    JVM核心技术(第一篇)
    SpringCloudAlibaba使用seata做分布式事务
    Go中的interface(接口)
    快排与堆排
    优先队列原来不难!带你手写一个
    【LeetCode】557. 反转字符串中的单词 III
    【LeetCode】214. 最短回文串
    【LeetCode】17. 电话号码的字母组合(回溯)
  • 原文地址:https://www.cnblogs.com/zouhao510/p/5313548.html
Copyright © 2011-2022 走看看