views:

457

answers:

1

I am trying to connect to the Quartz scheduler remotely, so I can get a list of jobs that are scheduled to run. On the server application I used the below code:

    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();

and install and run it as a service, then to connect remotely to it from another application I used:

    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();

The error that I get is: "Unable to connect to the remote server" and "No connection could be made because the target machine actively refused it 172.22.22.17:1099" What did I miss? I am using Quartz.net version 1.1 with RamJobStore and my firewall is off. I think that's the port which I am using the wrong one. Any help is appreciated

A: 

disclaimer: I don't know anything about Quartz Scheduler! :)

However, if you suspect you might have the wrong port number, if you can log into the remote server and run from a command line

netstat -b

This will print out the ports that are in use by process. Hopefully that will allow you to verify the port number.

If the port number is correct, but you still can't communicate with the remote server you can try a couple of things:

  • run ping.exe [xxx.xxx.xxx.xxx] from the command line to see if remote server responds(*)
  • verify the firewall on remote server has an exception for the Quartz Scheduler process
  • try running tracert [xxx.xxx.xxx.xxx] to see if you have a route between the two servers

(*) this is not always conclusive as the remote server, or networking hardware in the middle, might be configured not to respond.

Zach Bonham