2016-07-28 59 views
0

我有2个进程在不同的服务器上。一个是运行Quartz调度器,我想从另一个连接到它来管理触发器。石英RMI远程服务器返回无效主机名

在调度服务器的配置是:

org.quartz.scheduler.rmi.export = true 
org.quartz.scheduler.rmi.createRegistry = always 
org.quartz.scheduler.rmi.registryHost = localhost 
org.quartz.scheduler.rmi.registryPort = 1099 
org.quartz.scheduler.rmi.serverPort = 1100 

在远程服务器上的配置是:

org.quartz.scheduler.rmi.proxy = true 
org.quartz.scheduler.rmi.registryHost = ip-172-16-5-11.eu-west-1.compute.internal 
org.quartz.scheduler.rmi.registryPort = 1099 

当我尝试连接到远程调度,我得到以下错误的日志:

ERROR [2016-07-28 09:10:23,017] xxxx: Error communicating with remote scheduler. 
! java.net.ConnectException: Connection refused 
! ... 83 common frames omitted 
! Causing: java.rmi.ConnectException: Connection refused to host: log-emea-1; nested exception is: 
! java.net.ConnectException: Connection refused 

虽然这个主机是我们的网络上的主机,我不知道为什么它是由远程注册表返回。

没有连接问题。如果我在远程机器上运行tcpdump,我可以看到它连接到调度程序。这只是调度程序返回该无效的主机:

09:19:02.047589 IP 172.16.5.11.1099 > 172.16.0.81.54065: Flags [P.], seq 19:235, ack 105, win 210, options [nop,nop,TS val 1231389006 ecr 562121102], length 216 
[email protected]@..........Q.K.1}.Z... ......c..... 
Ie.N!.I.Q....w..9.e2...V0.|...sr.$org.quartz.core.QuartzScheduler_Stub...........pxr..java.rmi.server.RemoteStub......e....pxr..java.rmi.server.RemoteObject.a...a3....pxpw3. 
UnicastRef. 
log-emea-1...L/8. .a.69.e2...V0.|....x 

哪里石英RMI注册表获取这个主机名称?主机文件或DNS中没有线索。它似乎是随机的。

回答

0

我尝试了JVM标志但没有什么区别,但是去领我到一个解决方案。我在代码中设置了属性并解决了问题。

System.setProperty("java.rmi.server.hostname", "quartz"); 
+0

但就是喜欢一样'-Djava.rmi.server.hostname = quartz' – mam10eks

+0

是的,理论上他们应该是相同的,但在实践中似乎没有。 – JohnnyD

+0

你可以使用'System.getProperty(“java.rmi.server.hostname”)''验证它。以防万一你想确保它不是一个错字或别的东西;) – mam10eks