2016-04-15 14 views
1
  • Mit Quartz 2.2.2
  • Frühling 4.2.4.RELEASE
  • Wie meine Konfiguration Quarz ?, verwenden nur Willkürliches Feld alle
  • Start mein System ok
  • Das Problem bestehen 2 jobFactory für System

Quarz (2 jobFactory), wie die Integration konfigurieren in Spring 4

@Configuration(value = "springConfigContext") 
 
@EnableAspectJAutoProxy 
 
@EnableTransactionManagement 
 
@ApplicationScoped 
 
@EnableAsync 
 
@EnableScheduling 
 
@ComponentScan(basePackages = {"com", }) 
 
@ImportResource({ "classpath:springBeans.xml" }) 
 
@PropertySources({ @PropertySource("classpath:/META-INF/my_file_properties.properties") }) 
 
public class SpringConfigContext extends AnnotationConfigApplicationContext implements BeanFactory{ 
 
\t @Bean 
 
\t public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(){ 
 
\t \t //my code 
 
\t } 
 
\t @Bean 
 
\t public SimpleTriggerFactoryBean simpleTriggerFactoryBean(){ 
 
\t \t //my code 
 
\t } 
 
\t @Bean 
 
\t public JobDetailFactoryBean jobDetailFactoryBean(){ 
 
\t \t //my code 
 
\t } 
 
\t @Bean 
 
\t public CronTriggerFactoryBean cronTriggerFactoryBean() throws ParseException{ 
 
\t \t //my code 
 
\t } 
 
\t @Bean(name = "springQuartzScheduler") 
 
\t public SchedulerFactoryBean schedulerFactoryBean() throws Exception{ 
 
\t  SchedulerFactoryBean scheduler = new SchedulerFactoryBean(); 
 
\t \t CronTrigger trigger = cronTriggerFactoryBean().getObject(); 
 
\t \t scheduler.setTriggers(simpleTriggerFactoryBean().getObject(), trigger); 
 
\t \t Properties propertie = new Properties(); 
 
\t \t propertie.setProperty("org.quartz.threadPool.threadCount", "3"); 
 
\t \t propertie.setProperty("org.quartz.threadPool.threadPriority", "3"); 
 
\t \t scheduler.setQuartzProperties(propertie); 
 
\t \t scheduler.setOverwriteExistingJobs(true); 
 
\t \t scheduler.setApplicationContext(this); 
 
\t \t scheduler.start(); 
 
\t \t return scheduler; 
 
\t } 
 
}

das erste Build für Methode public SchedulerFactoryBean schedulerFactoryBean() die zweite Build für andere Klasse, Frühling ich denke, ich!

meine Config Eigenschaften für Quartz sind:

org.quartz.scheduler.skipUpdateCheck=true 
 
org.quartz.scheduler.instanceName=schedulerFactoryBean 
 
org.quartz.scheduler.jobFactory.class=org.springframework.scheduling.quartz.AdaptableJobFactory 
 
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool 
 
org.quartz.threadPool.threadCount=5 
 
org.quartz.threadPool.threadPriority=5

Ich bin versuchen, denselben Namen der Bohne "springQuartzScheduler" oder schedulerFactoryBean zu verwenden, aber does't Arbeit.

Siehe das Bild des Problems Imagem 2 factory Quartz

Wie parametrieren nur eine Fabrik zu benutzen?

Antwort

0

Mein Problem gefunden und gelöst, wenn ich ein Artefakt Maven Anruf javamelody bin entfernen, net.bull.javamelody.MonitoringFilter, die für die Überwachung meiner project.war in der Produktion verwendet. wenn Sie ein anderes Artefakt denselben Satz haben, sollte für die Erstellung einer neuen Instanz von neuen Fabrik Quarz

So verantwortlich sein, wenn Sie ein ähnliches Problem 2 JobFactory Bean haben, ihre Artefakte beurteilen sie möglicherweise dafür verantwortlich sind, mehr zu erzeugen als eine Instanz der Fabrik Quartz, da Quartz nicht Factory Bean Singleton für VM hat, es erstellt eine neue Fabrik, wenn es aufgerufen wird, mit den gleichen Eigenschaften der Datei quartiz.properties, aber wenn in einem anderen Kontext verwendet.

Wie gefunden Problem? Logback in Modusprotokoll-Ablaufverfolgung einfügen, auf diese Weise sehen Sie die aufgerufenen Factory-Quarze, entfernen die indizierten oder passen sie an, so dass sie dieselbe Factory

verwenden