我是新来的论坛,也学习建立石英。Net的一个业务需求。要求Quartz作为windows服务运行,并通过与Asp交互的WCF服务进行调度。Net网站。所有与工作相关的内部管理活动将通过此WCF服务处理,并致电quartz windows服务。我所取得的成果是,当我使用RAMJobStore时,这个模型工作得非常好,但是当我使用OracleDB的AdoJobStore时,我看不到相关的表使用作业详细信息和触发器进行更新。我已经下载了石英。net服务器,并将其作为windows服务安装,而无需对其代码进行任何更改。
我已经按照建议更改了实现,但现在我得到的错误如下:
无法从数据源“QuartzDB”获取数据库连接:系统。ArgumentException:““数据源”是无效的连接字符串属性
【编辑】:石英服务器的编辑配置如下:
quartz.scheduler.instanceName = ServerScheduler
quartz.scheduler.instanceId = "AUTO
# configure thread pool info
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
quartz.threadPool.threadCount = 10
quartz.threadPool.threadPriority = Normal
quartz.jobStore.misfireThreshold = 60000
quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
quartz.jobStore.tablePrefix = QRTZ_
quartz.jobStore.clustered = true
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.OracleDelegate, Quartz
quartz.jobStore.dataSource = QuartzDB
quartz.jobStore.useProperties = true
quartz.dataSource.QuartzDB.connectionString = "Data Source=quartzdb;User Id=XXXX;Password=YYYY";
quartz.dataSource.QuartzDB.provider = OracleODP-20
# export this server to remoting context
quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
quartz.scheduler.exporter.port = 555
quartz.scheduler.exporter.bindName = QuartzScheduler
quartz.scheduler.exporter.channelType = tcp
quartz.scheduler.exporter.channelName = httpQuartz
下面是WCF服务级别的[编辑]GetScheduler实现:
私有静态ISScheduler GetScheduler(){try{var properties=new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "RemoteClient";
properties["quartz.threadPool.threadCount"] = "0";
properties["quartz.scheduler.proxy"] = "true";
properties["quartz.scheduler.proxy.address"] = string.Format("tcp://{0}:{1}/{2}", "localhost", "555",
"QuartzScheduler");
// Get a reference to the scheduler
var sf = new StdSchedulerFactory(properties);
return sf.GetScheduler();
}
在WCF服务中定义的CreateJobs和Trigger如下:
public string ScheduleJob<T>(string jobName, string jobGroup, string triggerName, string triggerGroup) where T : IJob
{
try
{
var scheduler = GetScheduler();
if (scheduler != null)
{
var jobKey = new JobKey(jobName, jobGroup);
var job = JobBuilder.Create<T>()
.WithIdentity(jobKey)
//.StoreDurably()
//.RequestRecovery(true)
.Build();
ICronTrigger triggerObject = CreateCronTrigger(triggerName, triggerGroup);
if (triggerObject != null)
{
// Validate that the job doesn't already exists
//if (scheduler.CheckExists(new JobKey(jobKey)))
//{
// scheduler.ScheduleJob(job, triggerObject);
//}
scheduler.ScheduleJob(job, triggerObject);
//scheduler.Start();
return "SUCCESS";
}
_log.FatalFormat("{0}Trigger could not be instantiated", Environment.NewLine);
return "FAILURE";
}
_log.FatalFormat("{0}Scheduler could not be instantiated", Environment.NewLine);
return "FAILURE";
}
catch (Exception ex)
{
_log.FatalFormat("{0}Job could not be scheduled", Environment.NewLine);
return "FAILURE";
}
}
public ICronTrigger CreateCronTrigger(string triggerName, string triggerGroup)
{
try
{
var trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity(triggerName, triggerGroup)
.WithCronSchedule("0 0/1 * 1/1 * ? *") // Queues the job every minute
.StartAt(DateTime.UtcNow)
.WithPriority(1)
.Build();
return trigger;
}
catch (Exception ex)
{
_log.FatalFormat("{0}Cron trigger could not be created", Environment.NewLine);
return null;
}
}
任何想法,为什么我不能连接到甲骨文。当我通过sqlplus连接时,相同的凭据工作正常。
请帮忙!
您真正需要在WCF服务上设置的是以下属性:
properties["quartz.scheduler.instanceName"] = "RemoteClient";
properties["quartz.scheduler.proxy"] = "true";
properties["quartz.threadPool.threadCount"] = "0";
properties["quartz.scheduler.proxy.address"] = address;
从“客户端”中删除所有其他的。
相关: 我觉得我错过了什么?
TL;DR(原文的这些个符号,几个意思?) Dockers启动后,会在宿主机上创建名为docker0的虚拟网卡,并给docker0随机分配一个宿主机没有使用,且满足RFC 1918定义的私有网络地址和子网段。举例来说,在我做这个步骤时,Docker分配的子网段是172.17.42.1/16,(最后那个16是掩码,表示该子网段可以会为宿主机和容器提供65534个地址)。容器的MAC地址根据IP地址生
使用 nmcli 配置网络 本部分使用 nmcli 命令配置网络,将默认的 DHCP 连接配置修改为静态配置。1 - 显示所有连接 $ nmcli connection show NAME UUID TYPE DEVICE eth0 9e02ed35-21b1-4edc-bc51-9cde226e0
我很困惑,是我错过了一些设置还是有石英的错误。请为我提供一个解决方案。 实例化并启动调度程序的类(servlet)。我没有使用quartz.properties文件,因为根据说明,我不应该在hibernate.cfg.xml和quartz.properties中多次指定db凭据。
我使用CalendarTriggerImpl每3天触发我的作业。我的开始时间是2012-12-10 15:00:00,结束时间是2013-12-10。但是当我在2012-12-11 11:00:00执行我的计划程序时,作业会执行。如何解决这个问题。我没有使用cron触发器,因为它会在每个月重置。所以请帮助我在2012-12-10 15:00:00、2012-12-13 15:00:00、2012-
Linux网络配置方法简介。 配置IP地址 # 使用ifconfig ifconfig eth0 192.168.1.3 netmask 255.255.255.0 # 使用用ip命令增加一个IP ip addr add 192.168.1.4/24 dev eth0 # 使用ifconfig增加网卡别名 ifconfig eth0:0 192.168.1.10 这样配置的IP地址重启机器后会丢失