面对通过AdoJobStore存储作业的问题 [英] Facing Issues Storing Job through AdoJobStore

查看:236
本文介绍了面对通过AdoJobStore存储作业的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经从AdoJobStore成功连接到Oracle DB.但是,当我尝试添加工作时,出现以下异常.

I've successfully connected to Oracle DB from AdoJobStore. But when I try to add a job I m getting the following exception.

异常来源:Quartz异常方法:无效 StoreJob(Quartz.Impl.AdoJobStore.ConnectionAndTransactionHolder, Quartz.IJobDetail,布尔)异常StackTrace:at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn,IJobDetail newJob,Boolean replaceExisting) c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Impl \ AdoJobStore \ JobStoreSupport.cs:line 922 at Quartz.Impl.AdoJobStore.JobStoreSupport.<> c_ DisplayClass4.b _3(ConnectionAndTransactionHolder conn)在 c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Impl \ AdoJobStore \ JobStoreSupport.cs:line 848时 Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedTXLock [T](字符串 lockName,Func 2 txCallback, Func 3 txValidator)在 c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Impl \ AdoJobStore \ JobStoreSupport.cs:line 3514在 Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedTXLock [T](字符串 lockName,Func 2 txCallback) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 3432 at Quartz.Impl.AdoJobStore.JobStoreTX.ExecuteInLock[T](String lockName, Func 2 txCallback)在 c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Impl \ AdoJobStore \ JobStoreTX.cs:line 76岁 Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJobAndTrigger(IJobDetail newJob,IOperableTrigger newTrigger) c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Impl \ AdoJobStore \ JobStoreSupport.cs:line 845在Quartz.Core.QuartzScheduler.ScheduleJob(IJobDetail jobDetail,ITrigger触发器) c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Core \ QuartzScheduler.cs:line 718在Quartz.Impl.StdScheduler.ScheduleJob(IJobDetail jobDetail, ITrigger触发器) c:\ Work \ OpenSource \ Quartz.NET \ quartznet \ src \ Quartz \ Impl \ StdScheduler.cs:line 262在以下位置的TestScheduling.TestScheduleJob.Run() C:\ Users \ jwesly \ documents \ visual studio 2010 \ Projects \ TestScheduling \ TestScheduling \ TestScheduleJob.cs:第25行 >异常消息:无法存储作业:值不属于 预期范围.

Exception Source: Quartz Exception Method: Void StoreJob(Quartz.Impl.AdoJobStore.ConnectionAndTransactionHolder, Quartz.IJobDetail, Boolean) Exception StackTrace: at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJob(ConnectionAndTransactionHolder conn, IJobDetail newJob, Boolean replaceExisting) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 922 at Quartz.Impl.AdoJobStore.JobStoreSupport.<>c_DisplayClass4.b_3(ConnectionAndTransactionHolder conn) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 848 at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedTXLock[T](String lockName, Func2 txCallback, Func3 txValidator) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 3514 at Quartz.Impl.AdoJobStore.JobStoreSupport.ExecuteInNonManagedTXLock[T](String lockName, Func2 txCallback) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 3432 at Quartz.Impl.AdoJobStore.JobStoreTX.ExecuteInLock[T](String lockName, Func2 txCallback) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreTX.cs:line 76 at Quartz.Impl.AdoJobStore.JobStoreSupport.StoreJobAndTrigger(IJobDetail newJob, IOperableTrigger newTrigger) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 845 at Quartz.Core.QuartzScheduler.ScheduleJob(IJobDetail jobDetail, ITrigger trigger) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Core\QuartzScheduler.cs:line 718 at Quartz.Impl.StdScheduler.ScheduleJob(IJobDetail jobDetail, ITrigger trigger) in c:\Work\OpenSource\Quartz.NET\quartznet\src\Quartz\Impl\StdScheduler.cs:line 262 at TestScheduling.TestScheduleJob.Run() in C:\Users\jwesly\documents\visual studio 2010\Projects\TestScheduling\TestScheduling\TestScheduleJob.cs:line 25 > Exception Message: Couldn't store job: Value does not fall within the expected range.

这是我安排工作的代码.

Here is the code where I've scheduled a Job.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Quartz;
using Quartz.Impl;
using System.IO;

namespace TestScheduling
{
    class TestScheduleJob : ITaskScheduler
    {
        IScheduler sched;
        public void Run()
        {
            try
            {
                JobDataMap jobdata = new JobDataMap();
                jobdata.Add("mtid", "value");
                IJobDetail job = JobBuilder.Create<TestJob>().WithIdentity("job1", "group1").UsingJobData(jobdata).RequestRecovery(true).Build();
                DateTimeOffset dt = new DateTimeOffset(DateTime.Now.AddSeconds(10));
                ISimpleTrigger trig = (ISimpleTrigger)TriggerBuilder.Create().StartAt(dt).WithSimpleSchedule(x => x.WithIntervalInSeconds(10).WithRepeatCount(5)).Build();
                ISchedulerFactory sf = new StdSchedulerFactory();
                sched = sf.GetScheduler();
                sched.ScheduleJob(job, trig);
                sched.Start();
            }
            catch (Exception e)
            {
                StreamWriter streamWriter = new StreamWriter(new FileStream("C:\\test_schedule_job_error.txt", FileMode.Append));
                String exceptionEntry = "Exception Source:\n" + e.Source + "\n" + "Exception Method:\n" + e.TargetSite + "\n" + "Exception StackTrace:\n" + e.StackTrace + "\n" + "Exception Message:\n" + e.Message;
                streamWriter.WriteLine(exceptionEntry);
                streamWriter.Close();
                throw e;
            }
            finally
            {
            }
        }
        public void Stop()
        {
            if (sched != null)
            {
                sched.Shutdown();
            }
        }
    }
}

请帮助!!!

推荐答案

您应该使用OracleDelegate而不是StdAdoDelegate.使用

You should be using OracleDelegate instead of StdAdoDelegate. Define in configuration using

properties["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.OracleDelegate, Quartz";

这篇关于面对通过AdoJobStore存储作业的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆