1

Spring(3.1.1)でMySQLにトリガーを保存するQUARTZ(2.1.3)に問題があります。いくつかのデバッグの後、私は次のようにフローを理解しました:

  1. ScheduleFactoryBean.afterPropertiesSetは、起動時にregisterJobsAndTriggersを呼び出します
  2. this.transactionManager.getTransaction(new DefaultTransactionDefinition())
  3. DataSourceUtils.doGetConnection(dataSource); (LocalDataSourceJobStoreクラス内)
  4. 手順3の接続を使用して、トリガーとジョブの詳細を挿入します。
  5. DataSourceUtils.releaseConnection(con、this.dataSource); (LocalDataSourceJobStore内)
  6. this.transactionManager.commit(transactionStatus)(ステップ1から)
  7. commit()はtriggerBeforeCompletionを呼び出します(AbstractPlatFormTransactionManager内)
  8. (ConnectionHolder内の)referenceCountがゼロ(releaseConnectionによって1から0に変更)であるため、triggerBeforeCompletionは最終的にconnection.close()を呼び出します。
  9. connection.closeは、MySQL側のログに示されているように、ROLLBACKをトリガーします。

これが私の設定情報です:

    <bean id="dataSource.dbcp" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">...</bean>
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">...</bean>

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="startupDelay" value="15" />
        <property name="applicationContextSchedulerContextKey" value="applicationContext" />
        <property name="schedulerName" value="mySched" />
        <property name="jobFactory" ref="springBeanJobFactory" />
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManager" />
        <property name="triggers">
            <list>
                    <ref bean="dummyTrigger" />
            </list>
        </property>
        <property name="quartzProperties">
            <props>
                <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
                <prop key="org.quartz.threadPool.threadCount">5</prop>
                <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
                <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
            </props>
        </property>
    </bean>
<bean id="dummyTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">...</bean>

QUARTZ / Spring / Thisサイトで調査に基づいてさまざまな構成変更を試しましたが、トリガーをQRTZテーブルに保存することはできませんでした。

前もって感謝します。

4

0 に答える 0