如果我有一个服务可以进行RPC调用(比如说web服务,或者平静的服务,或者只是为了抓取url等数据),我可能会在5秒后超时吗?您可以在x秒后进行rpc呼叫超时吗?
我不希望它挂起,然后崩溃,如果远程服务已关闭,而是尝试x秒,如果它关闭,然后继续进行下一个远程服务调用。
如果我有一个服务可以进行RPC调用(比如说web服务,或者平静的服务,或者只是为了抓取url等数据),我可能会在5秒后超时吗?您可以在x秒后进行rpc呼叫超时吗?
我不希望它挂起,然后崩溃,如果远程服务已关闭,而是尝试x秒,如果它关闭,然后继续进行下一个远程服务调用。
如果它是一个独立的应用程序,那么你可以使用操作系统来安排它(例如Windows中的任务计划程序)。如果它不是独立的,那么你可以将它制作成Java任务并使用Java的Timer来调度它。
看一看一个java.util.Timer中 这里有一个例子 http://www.java2s.com/Code/Java/Development-Class/UsejavautilTimertoscheduleatasktoexecuteonce5secondshavepassed.htm
的RPC客户端库通常有可选的超时参数可用。如果请求没有在需要的时间内完成,客户端库只需关闭连接。这些协议本身可能没有超时。
你是如何做你的RPC类的?你正在使用什么库?
你使用什么协议?它是http还是RMI?最好的方法是在连接通道上实现超时(如Socket)。如果这是你想做的事。如果你使用Apache HTTP Components然后做到这一点看看http://download.oracle.com/javase/1.5.0/docs/guide/net/properties.html
东西:
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, connectionTimeoutMillis);
HttpConnectionParams.setSoTimeout(httpParams, socketTimeoutMillis);
你能安排该服务?例如,如果您使用的是基于Windows的操作系统,那么您可以使用任务计划程序来安排它吗?请提供更多细节。 – 2010-08-13 19:06:04