Java 登录前windows服务对网络的访问
我用Java编写了一个windows服务,它会自动启动(在用户登录windows之前)。 我的问题是,该服务在登录之前似乎无法访问网络 在登录之前的日志中,我看到:Java 登录前windows服务对网络的访问,java,windows,windows-services,procrun,Java,Windows,Windows Services,Procrun,我用Java编写了一个windows服务,它会自动启动(在用户登录windows之前)。 我的问题是,该服务在登录之前似乎无法访问网络 在登录之前的日志中,我看到:java.net.UnknownHostException。但是,相同的代码在登录后可以正常工作 我试图将服务定义为“网络服务”,但没有帮助 有人能帮忙吗 顺便说一句: 没有涉及WiFi 我查看了TeamViewer程序的工作原理,发现它们在FirewallPolicy中有一些注册表值。他们将他们的服务定义为本地系统。 这让我觉得可能
java.net.UnknownHostException
。但是,相同的代码在登录后可以正常工作
我试图将服务定义为“网络服务”,但没有帮助
有人能帮忙吗
顺便说一句:
我只是设法解决了这个问题。问题是这项服务在接入互联网之前就启动了。请记住,网络可能是可访问的,但internet不是 我通过以下操作解决了这个问题:(伪代码)
如果得到的异常是
未知hostexception
,这将意味着DNS解析以某种方式失败
进一步注意,DNS解析本身取决于IP。因此,如果相关机器连接到相应网关(路由器)的速度较慢,则DNS解析没有成功的机会
因此,虽然您可以尝试在一个带有睡眠的循环中解析主机解析(正如Kuf所建议的)。。我建议尝试记录机器在重启后多久获得IP地址(这是它连接到网络的时间的标志),然后从那里开始(可能还有额外的超级用户或服务器故障问题)
while (false) {
check if http://www.example.com is accesible:
if true - break
if false - sleep for 3 seconds
}
... (rest of the code)