草庐IT

java - 如何防止 quartz 中的内存泄漏

我在我的项目中使用quartz。我的Web应用程序在停止时显然导致了内存泄漏,错误是:SEVERE:AwebapplicationappearstohavestartedaTimerThreadnamed[Timer-12]viathejava.util.TimerAPIbuthasfailedtostopit.Topreventamemoryleak,thetimer(andhencetheassociatedthread)hasbeenforciblycancelled.Jan2,20136:55:35AMorg.apache.catalina.loader.WebappClass

java, quartz 和特定时间触发的多个任务保存在数据库中

我正在构建一个系统,用户可以在其中设置日历中的future日期(精确到小时和分钟)。在那个日期,触发器调用特定任务,对每个用户都是唯一的。每个用户都可以设置不同的日期。系统一开始会有10k+,用户可以创建多个触发器。假设我有1万个用户,每个用户平均创建3个触发器=>3万个触发器,有3万个不同的日期。所有日期都保存在数据库中。我是quartz的新手,能否以更优化的方式完成此操作?我正在考虑让任务每分钟运行一次,以获取假设在下一个小时运行的任务并将它们从数据库中删除。你有更好的想法吗?是否有人将quartz用于大量触发器。 最佳答案 您

java - 当 quartz 作业触发时,它是一个新的作业类实例吗?

我是Quartz的新手,我对作业生命周期有一些疑问。假设我有一个配置为执行某些操作的作业。作业触发并结束其工作。当它再次触发时,它是同一个实例(可能被调度程序设置为sleep和唤醒)还是一个新的作业实例(一旦作业结束,它就会被杀死,当再次满足触发条件时,会创建一个新的作业实例)?我问这样的问题是因为当我调试我的应用程序(支持quartz的spring3mvc)时,我看到作业的新实例和带有SimpleThreadPool$WorkerThreadRun()的新线程在每次作业被触发时打开,以便SimpleThreadPool$WorkerThreadRun()线程堆积起来,永不终止。我只是

java - 确定 quartz 触发器的暂停状态?

有没有办法确定Quartz中的特定触发器是否处于暂停状态?我知道Scheduler上的getPausedTriggerGroups()方法,但似乎没有办法为特定的JobDetail找出特定触发器的暂停状态。有什么友好的建议吗? 最佳答案 根据API文档,Scheduler.getTriggerState(StringtriggerName,StringtriggerGroup)可以告诉您特定触发器的状态,并返回以下常量之一:Trigger.STATE_NORMAL、Trigger.STATE_PAUSED、Trigger.STATE

java - Tomcat 6 中的 Quartz 调度程序,线程不会停止

对于我的网络应用程序,我使用Quartz。当我部署应用程序时一切正常。当我取消部署应用程序时,Quartz线程没有被破坏。日志是:INFO:StoppingserviceCatalinaSEVERE:Thewebapplication[/example]appearstohavestartedathreadnamed[DefaultQuartzScheduler_Worker-1]buthasfailedtostopit.Thisisverylikelytocreateamemoryleak.Jul12,20106:30:40PMorg.apache.catalina.loader.W

java - 将多个触发器添加到单个 quartz 作业

我想为作业动态添加触发器,但无法从调度程序中找到任何有用的方法虽然我只能重复调用scheduleJob方法,但这给了我ObjectAlreadyExists异常“因为已经存在具有此标识的对象”。我该怎么做?编辑privatebooleanscheduleLoadJob(XfuScheduleTimeInfotime){LoadScheduleJobjob=newLoadScheduleJob(time);JobDetaildetail;Integerid=Integer.valueOf(time.getScheduleId());if(_hashMap.containsKey(id))

java - 如何做 “sequential” 作业调度( quartz ?)

我正在使用QuartzScheduling,并且有2个作业。第一个作业执行大约2分钟的任务,第二个作业将设置为临时文件的清理操作。因此,我需要设置计划,以便在第一个作业执行/完成执行任务后,我需要在第二个作业的帮助下进行清洁操作。考虑示例9-Quartz2.1.x下的JobListeners,它声明我们可以定义一个名为jobWasExecuted(_,_)的方法;在JobListener中,它在第一个作业执行/或进入运行状态时执行。我们是否能够设置可以监听第一个作业完成然后执行第二个的时间表?或者,我们是否可以像Java多线程中那样定义join()方法,它可以在第一个作业完成时执行?

java - Java Web 应用程序中的 Quartz 与 ScheduledExecutorService

对于当前在命令行上运行并使用ScheduledExecutorService的系统监控Java应用程序,我想写一个简单的web应用程序版本,在Servletcontainer中运行喜欢ApacheTomcat或EclipseJetty.我读过Quartz作为流行之一jobschedulers用于网络应用程序。将此应用程序从ScheduledExecutorService移植到Quartz会更好吗(可能是因为更好的servlet容器集成)?向应用程序添加另一个库依赖项不是问题,我对反对使用ScheduledExecutorService的技术原因很感兴趣。 最

java - 删除 quartz 中的触发器

有没有办法删除特定作业的预定触发器?似乎删除触发器的唯一方法是删除整个作业,然后重新注册作业和触发器。我的工作可能有100多个触发器,我真的不想删除该工作并在我只需要删除1个触发器时重新注册所有触发器。另外,有没有办法在配置触发器后立即停止调度程序执行作业?谢谢 最佳答案 试试scheduler.unscheduleJob这接受触发器和组名称作为参数,并且只会删除指定的触发器,而不是作业。QuartzSchedulerSchedulerForum 关于java-删除quartz中的触发器

java - 手动触发 Quartz 作业

我们的应用程序中配置了多个Quartz作业。在开发过程中,我们让quartz调度器处于待机状态——但是,我们有时希望手动启动一个作业(出于开发目的)。如果我调用fireTrigger,它会告诉我需要启动调度程序。但是,如果我启动调度程序,它也会立即安排所有其他作业,这不是我想要的(因为它们可能会在我调试手动触发的作业时触发)。我可以在启动调度程序时暂停所有触发器,但随后我必须处理失火指令等。是否有一种简单的方法可以手动启Action业而无需处理暂停和失火(即即使调度程序处于待机状态也能工作的fireTrigger)? 最佳答案 这是