如果我有一个进行RPC调用的服务(比如说Web服务,或者是宁静的服务,或者只是从网址中抓取数据等),我有可能在5秒后让它超时吗?
如果远程服务关闭,我不希望它挂起然后崩溃,而是尝试x秒,如果它关闭,那么只需继续进行下一个远程服务调用。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果它是一个独立的应用程序,那么您可以使用操作系统来安排它(例如Windows中的任务计划程序)。如果它不是独立的,那么你可以将它变成Java任务并使用Java的Timer来安排它。
看看Java.util.Timer 这是一个例子 http://www.java2s.com/Code/Java/Development-Class/UsejavautilTimertoscheduleatasktoexecuteonce5secondshavepassed.htm
答案 2 :(得分:0)
RPC的客户端库通常具有可选的超时参数。如果请求未在所需时间内完成,则客户端库只会关闭连接。这些协议本身可能没有超时。
你是如何进行RPC类的?您正在使用哪些库?
答案 3 :(得分:0)
您使用的是哪种协议?是http还是RMI?最好的方法是在连接通道上实现超时(如Socket)。如果您想要这样做,请查看http://download.oracle.com/javase/1.5.0/docs/guide/net/properties.html
答案 4 :(得分:0)
如果您使用Apache HTTP Components,请执行以下操作:
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(httpParams, socketTimeoutMillis);