标签: quartz-scheduler

从JConsole查看QuartzScheduler MBean

我想从JConsole看到并管理Quartz Scheduler.我配置了石英道具.

org.quartz.scheduler.rmi.export=true
org.quartz.scheduler.rmi.registryPort=1099
org.quartz.scheduler.rmi.createRegistry=true
org.quartz.scheduler.rmi.registryHost=localhost
org.quartz.scheduler.skipUpdateCheck=true
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=10
org.quartz.threadPool.threadPriority=5
Run Code Online (Sandbox Code Playgroud)

但是我无法使用url连接jconsole

service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmxrmi
Run Code Online (Sandbox Code Playgroud)

请帮忙.

jmx jconsole quartz-scheduler

1
推荐指数
1
解决办法
6261
查看次数

Grails Quartz-即使没有计划,作业仍在运行

我在grails的jobs文件夹中定义了一个工作,如下所示:

class TransferFilesQueueJob {

  def execute() {
    print "File Transfer Job start!"
    FileTransfer.transferFilesToHere()
    print "File Transfer Job end!"
  }
}
Run Code Online (Sandbox Code Playgroud)

在IntelliJ中运行我的应用程序时,此作业每隔几秒钟左右运行一次。即使重启。知道为什么吗?我没有其他地方在安排它。

之前我有一个声明,但已将其删除。似乎它正在其他地方存储配置或作业状态信息。但是我找不到地方。-进一步说明,我重命名了作业类,它停止运行。因此,这似乎表明该工作被保留在某处。但是,我从未将其设置为具有当前服务器运行以外的任何持久性。

grails quartz-scheduler

1
推荐指数
1
解决办法
1148
查看次数

将cronTrigger与包含年份值的表达式一起使用时出错

我正在观察一个奇怪的行为,该行为使用包含年份值的CronTrigger在Quartz中安排作业。

这是我创建触发器并使用它计划作业的方式:

CronTrigger trigger =  cronJobTriggerFactory.getObject();
trigger.setName(triggerName);
trigger.setGroup(triggerGroupName);
trigger.setCronExpression(cronSchedule);
trigger.setVolatility(false);

JobDetail job = schedulableJobFactory.getObject();
job.setName(jobName);
job.setGroup(jobGroupName);
job.setVolatility(false);
job.setDurability(true);
Date scheduleTime1 = scheduler.scheduleJob(job, trigger);
logger.info(job.getKey() + " will run at: " + scheduleTime1);
Run Code Online (Sandbox Code Playgroud)

然后在我的单元测试中,确定“现在”日期,向其添加5分钟,计算该日期/时间的cron表达式,并使用此计划将我的主班计划称为作业。这是显示通过了哪个cron表达式的单元测试的输出:

NotificationSchedulerTest - Today is: 9 May 2012 05:32 PM
NotificationSchedulerTest - 5 min later is: 9 May 2012 05:37 PM
NotificationSchedulerTest - cron schedule is: 0 37 17 * 4 ? 2012
Run Code Online (Sandbox Code Playgroud)

但是,当尝试使用此cron表达式计划作业时,出现以下错误:

org.quartz.SchedulerException: Based on configured schedule, the given trigger will never fire.
Run Code Online (Sandbox Code Playgroud)

如您所见,该日期是相对于我运行测试的日期/时间而言的将来...因此,尝试安排作业在过去的某个时间运行应该不是问题。

现在,下一个奇怪的事情是:请注意,我确实在cron表达式中指定了年份值:“ 0 …

java cron quartz-scheduler crontrigger

1
推荐指数
1
解决办法
4944
查看次数

Java Web应用程序中的异步任务

异步作业,例如从网站下载分数,或在完成某些关键任务后发送电子邮件.当我们下载一些分数时,我们必须等待当前页面才能获得响应页面或下载文件.我是否有可能点击下载分数,它会在后台发生,以便我可以导航到网站的其他部分,并在平均时间检查作业的状态.或者在将来安排一些工作,并通过电子邮件获得执行结果.

我们的是带有Hibernate 3.5 ORM的struts 2 web应用程序.浏览了一些java调度库后,得到了一些关于Quartz的信息.但Quartz是否适合上述要求或我可以尝试的任何其他库?请指导我正确的方向.

java asynchronous quartz-scheduler

1
推荐指数
1
解决办法
3369
查看次数

在Spring中实现线程功能的最佳方法

我正在使用Spring 3.2进行Java聊天项目.

通常在Java中我可以创建一个这样的线程:

public class Listener extends Thread{
    public void run(){
         while(true){

         }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后启动线程start().

但是Spring 3.x有没有特殊的类或任何特殊的方法来实现线程功能?


我的要求:

我有2个电信域服务器.在我的应用程序中,我需要初始化服务器以创建协议.

初始化服务器后,我需要启动两个线程来监听来自电信域服务器的响应.

我所做的工作如下:

public class Listener extends Thread{
    public void run(){

       while(true){
           if(ServerOne.protocol != null){
                Message events = ServerOne.protocol.receive();
                   //Others steps to display the message in the view
           }
       }

    }
}
Run Code Online (Sandbox Code Playgroud)


有可能用java做线程功能quartz吗?

如果可能哪一个更好?如果没有意思,是什么原因?

希望我们的堆栈成员能提供更好的解决方案.

java spring multithreading spring-mvc quartz-scheduler

1
推荐指数
1
解决办法
5930
查看次数

如何手动停止/中断石英调度程序工作

我正在主类中运行一个简单的石英作业,该作业每30秒运行一次。

public class Start {
 public static void main(String[] args) throws Exception {    
      SchedulerFactory sf = new StdSchedulerFactory();
      Scheduler sched = sf.getScheduler();
       JobDetail job = newJob(MyJob.class).withIdentity("myJob","XXX").build();
   Trigger trigger = TriggerBuilder.newTrigger()
         .withSchedule(
             SimpleScheduleBuilder.simpleSchedule()
                 .withIntervalInSeconds(30)
             .repeatForever())
                               .build();
    sched.scheduleJob(job, trigger);
     sched.start();
  } 
}
Run Code Online (Sandbox Code Playgroud)

在这里我正在实现InterruptableJob

 public class MyJob implements InterruptableJob {

private volatile boolean isJobInterrupted = false;

private JobKey jobKey = null;

private volatile Thread thisThread;

public MyJob() {
}

@Override
public void interrupt() throws UnableToInterruptJobException {
    // TODO Auto-generated method stub
    System.err.println("calling interrupt:"+thisThread+"==>"+jobKey); …
Run Code Online (Sandbox Code Playgroud)

java quartz-scheduler

1
推荐指数
1
解决办法
2万
查看次数

如何设置正确的调度程序时间

我可以使用XML调用EJB Scheduler(或者我可以使用@Schedule注释).比如这样的事情:[ejb-jar.xml]

   <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
        <enterprise-beans>
            <session>
                <ejb-name>[name]</ejb-name>
                <ejb-class>[path]</ejb-class>
                <session-type>Stateless</session-type>
                <timer>
                    <schedule>
                        <minute>*/30</minute>
                        <hour>*</hour>
                        <month>*</month>
                        <year>*</year>
                    </schedule>
                    <timeout-method>
                        <method-name>[method name]</method-name>
                    </timeout-method>
                </timer>
            </session>
        </enterprise-beans>
    </ejb-jar>
Run Code Online (Sandbox Code Playgroud)

如果我需要在每天中午运行此调度程序,我应该写这样的东西吗?

  <schedule>
      <minute>*</minute>
      <hour>0</hour>
      <month>*</month>
      <year>*</year>
  </schedule>
Run Code Online (Sandbox Code Playgroud)

如果我需要凌晨01:00,这是正确的吗?

  <schedule>
      <minute>*</minute>
      <hour>1</hour>
      <month>*</month>
      <year>*</year>
  </schedule>
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

ejb quartz-scheduler java-ee ejb-3.0 ejb-3.1

1
推荐指数
1
解决办法
5587
查看次数

Quartz集群负载均衡算法在Jdbcjobstore中实现

我在我的应用程序中配置了quartz.它适用于集群,我可以看到集群节点一次触发一个作业.但是,我有一个关于负载平衡算法如何在石英中工作的问题.我想知道在jdbcJobstore代码中的哪一点,节点获取无法获取锁的信息.特定群集节点如何获取锁以在代码中触发作业?

quartz-scheduler

1
推荐指数
1
解决办法
1542
查看次数

Spring 4.0.1 + Quartz 1.5.2

我正在尝试使用Spring 4.0.1和Quartz 1.5.2创建一个cron作业,但是当我在服务器上运行它时出现错误.错误显示:

SEVERE: Servlet [appServlet] in web application [/SpringRestSample] threw load() exception java.lang.ClassNotFoundException: org.quartz.impl.JobDetailImpl at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getDeclaredMethods(Unknown Source)

我的xml配置是:

<beans:bean id="removeExpiredSessionFetchJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <beans:property name="jobClass">
        <beans:value>com.iris.spring.rest.model.RemoveExpiredSessionFetchJob</beans:value>
    </beans:property>
</beans:bean> 

<beans:bean id="removeExpiredSessionTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

    <beans:property name="jobDetail">
        <beans:ref bean="removeExpiredSessionFetchJob" />
    </beans:property>

    <beans:property name="cronExpression">
        <!--  <value>0 0/55 * * * ?</value> -->
        <beans:value>0 */1 * * * ?</beans:value>
    </beans:property>
</beans:bean>


<beans:bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <beans:property name="triggers">

        <beans:list>
            <beans:ref bean="removeExpiredSessionTrigger" />

         </beans:list>

    </beans:property>
</beans:bean> 
Run Code Online (Sandbox Code Playgroud)

我的pom.xml是:

<properties>
    <java-version>1.6</java-version>
    <org.springframework-version>4.1.0.RELEASE</org.springframework-version>
    <org.aspectj-version>1.7.4</org.aspectj-version> …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc quartz-scheduler maven

1
推荐指数
1
解决办法
6250
查看次数

将石英添加到项目中断jdbc dataSource

我已经发现了问题所在,但决定把它贴在这里,以防其他任何人撞到同一堵墙.

我已将最新版本的quartz scheduler添加到我的项目中:

<dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
   <version>2.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

并且突然测试开始下降:

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [ my sql ]; SQL state [null]; error code [0]; An SQLException was provoked by the following failure: java.lang.InterruptedException; nested exception is java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.InterruptedException  
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,当我将石英依赖转移到另一个模块时,它们开始失败,但有不同的例外:

Could not get JDBC Connection; nested exception is java.sql.SQLException: com.mchange.v2.c3p0.ComboPooledDataSource[ identityToken -> z8kfsx9b1qeyobp10iytmq|796c39ad, dataSourceName -> z8kfsx9b1qeyobp10iytmq|796c39ad ] has been closed() -- you can no longer use it.
Run Code Online (Sandbox Code Playgroud)

所以,Spring关闭了我的ComboPooledDataSource,但为什么呢?

删除石英或将其版本更改为1.8.x有助于.即使没有实例化任何石英对象也会发生异常.

java spring c3p0 quartz-scheduler maven

1
推荐指数
1
解决办法
1720
查看次数