面对通过AdoJobStore存储作业的问题 [英] Facing Issues Storing Job through 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,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, 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, Func
2 txCallback, Func
3 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, Func
2 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屋!