Как настроить кварцевый планировщик с помощью файла свойств весеннего стиля в Tomcat? - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть веб-приложение на Apache Tomcat.В веб-приложении используется Кварцевый планировщик .Я загружаю quartz.properties из classpath с помощью переключателя -D, который содержит следующие свойства:

quartz.jndi=java:comp/env/something
org.quartz.dataSource.myJndiName.jndiURL=${quartz.jndi}

Но это не работает.Может быть, ${quartz.jndi} работает только в Spring Context с компонентом PropertyPlaceholderConfigurer?Можно ли загрузить этот файл свойств в Spring для Quartz Scheduler?

Ответы [ 3 ]

9 голосов
/ 04 января 2013

Спустя год я знаю, но, надеюсь, кому-то это пригодится: вы можете сделать это, установив свойства в контексте Spring:

<bean name="schedulerFactory" depends-on="flyway" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="quartzProperties">
        <map>
            <entry key="org.quartz.threadPool.class" value="org.quartz.simpl.SimpleThreadPool" />
            <entry key="org.quartz.jobStore.useProperties" value="true" />
            <entry key="org.quartz.jobStore.class" value="org.quartz.impl.jdbcjobstore.JobStoreTX" />
            <entry key="org.quartz.jobStore.driverDelegateClass" value="org.quartz.impl.jdbcjobstore.StdJDBCDelegate" />
            <entry key="org.quartz.jobStore.tablePrefix" value="QRTZ_" />
            <entry key="org.quartz.jobStore.dataSource"  value="qzDS" />
            <entry key="org.quartz.dataSource.qzDS.jndiURL" value="java:comp/env/jdbc/${jndi.dataSource}"/>
        </map>
    </property>
    <property name="applicationContextSchedulerContextKey">
        <value>applicationContext</value>
    </property>
</bean>

Обратите внимание, что я поместил здесь большинство связанных с JobStore свойств, поскольку они, по-видимому, должны находиться в одном и том же месте. В обычном файле quartz.properties есть еще какая-то другая конфигурация.

1 голос
/ 05 февраля 2014

Вы можете установить configLocation в вашем SchedulerFactoryBean:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="configLocation" value="classpath:quartz.properties" />
    [...]
</bean>
0 голосов
/ 07 декабря 2011

Зависит от того, какое свойство Quartz вы хотите получить, возможно, Spring-способ его передачи уже существует. Обычно для ссылки на записи свойств (не относящиеся к кварцу) до и после Spring 3 посмотрите на этот вопрос . Для настройки и конфигурации Spring для конкретного кварца смотрите первую часть документации планирования Spring .

...