远程连接到Quartz Scheduler

时间:2009-09-28 17:22:52

标签: asp.net quartz-scheduler

我正在尝试远程连接到Quartz调度程序,因此我可以获得计划运行的作业列表。在服务器应用程序中,我使用了以下代码:

    NameValueCollection properties = new NameValueCollection(); 
    properties.Add("quartz.scheduler.instanceName", "OlScheduler"); 
    properties.Add("quartz.scheduler.instanceId", "Ol"); 
    properties.Add("quartz.threadPool.type", "Quartz.Simpl.SimpleThreadPool, Quartz"); 
    properties.Add("quartz.threadPool.threadCount", "5"); 
    properties.Add("quartz.threadPool.threadPriority", "Normal"); 
    properties.Add("quartz.scheduler.registryPort", "1099"); 
    properties.Add("quartz.scheduler.rmi.export", "true"); 
    properties.Add("quartz.scheduler.rmi.registryHost", "localhost"); 
    properties.Add("quartz.scheduler.rmi.registryPort", "1099"); 
    ISchedulerFactory sf = new StdSchedulerFactory(properties); 
    IScheduler sched = sf.GetScheduler(); 

并将其作为服务安装并运行,然后从我使用的另一个应用程序远程连接到它:

    properties["quartz.scheduler.instanceName"] = "RemoteClient"; 
    properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; 
    properties["quartz.threadPool.threadCount"] = "5"; 
    properties["quartz.threadPool.threadPriority"] = "Normal"; 
    properties["quartz.scheduler.proxy"] = "true"; 
    properties["quartz.scheduler.proxy.address"] = "http://170.20.20.17:1099/OIService"; 
    IScheduler sched = new StdSchedulerFactory(properties).GetScheduler(); 

我得到的错误是: “无法连接到远程服务器”和“无法建立连接,因为目标计算机主动拒绝它172.22.22.17:1099” 我错过了什么?我正在使用带有RamJobStore的Quartz.net 1.1版,我的防火墙已关闭。 我认为这是我使用错误的端口。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:3)

免责声明:我对Quartz Scheduler一无所知! :)

但是,如果您怀疑可能有错误的端口号,则可以登录远程服务器并从命令行运行

netstat -b

这将打印出进程正在使用的端口。希望这将允许您验证端口号。

如果端口号正确,但您仍无法与远程服务器通信,则可以尝试以下几种方法:

  • 从命令行运行ping.exe [xxx.xxx.xxx.xxx]以查看远程服务器是否响应(*)
  • 验证远程服务器上的防火墙是否存在Quartz Scheduler进程的例外
  • 尝试运行tracert [xxx.xxx.xxx.xxx]以查看您是否在两台服务器之间有路由

(*)这并不总是决定性的,因为远程服务器或中间的网络硬件可能配置为不响应。