我需要执行ping webservice来检查我是否有连接到端点,并且webservice服务器都很好。这有点蠢,但我必须为此调用一个Web服务。问题是,当我调用stub.ping(request)并且我没有连接时,它会继续尝试执行此代码一段时间......然后返回false。如果它不能ping通过1秒后任何方法使这个超时?public boolean ping() {
try {
PingServiceStub stub = new PingServiceStub(soapGWEndpoint);
ReqPing request = new ReqPing();
UserInfo userInfo = new UserInfo();
userInfo.setName(soapGWUser);
userInfo.setPassword(soapGWPassword);
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.setConfigurationName(soapGWAppName);
stub.ping(request);
return true;
} catch (RemoteException | PingFault e) {
return false;
}
}
2 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
您可以使用Google Guava库中的TimeLimiter之类的东西。这允许您在可以使用Timeout调用的操作中包装可调用对象。如果callable没有及时完成操作,它将抛出一个TimeoutException
你可以捕获的并在一秒钟后返回false。
举个例子:
TimeLimiter timeLimiter = new SimpleTimeLimiter();try { String result = timeLimiter.callWithTimeout( () -> callToPing(), 1, TimeUnit.SECONDS); return true // Or something based on result} catch (TimeoutException e) { return false}
添加回答
举报
0/150
提交
取消