我目前正在从事一个项目,该项目要求我从互联网上下载一个WSDL文件。
然而,除了我的问题之外,一切都很好……
我使用以下代码:
private Definition getDefinition(String url) throws WSDLException {
// Read the url and return an instance to a WSDL Definition
return WSDLFactory.newInstance().newWSDLReader().readWSDL(url);
}这个WSDLFactory是一个线程(据我所知)。我遇到的问题是,在我提供的URL列表中,有几个指向不再存在的WSDL。这反过来导致我的程序在意识到它应该抛出FileNotFoundException之前等待了非常长的时间。这是因为WSDL应该位于的位置需要永远返回一个HTTP_RESPONSE代码。
有没有一种方法可以将这个WSDLFactory封装到某个东西中,试图获取WSDL,但只给它5-10秒的时间呢?在这之后,它会说“你已经有太多的时间做这件事了。我们正在践踏你”?
发布于 2011-03-02 02:06:45
查看Executor和Futures框架。
发布于 2011-03-02 02:23:09
设置基础套接字的超时,如果可能,socket.setSoTimeout或通过库中的更高级别的配置选项。
否则(如果您在类路径上有Google的芭乐),请尝试:
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/util/concurrent/TimeLimiter.html
发布于 2011-03-02 02:06:31
您可以尝试设置http超时sun.net.client.defaultConnectTimeout。当然,这取决于WSDLReader的实现
点击这里:networking properties
https://stackoverflow.com/questions/5158303
复制相似问题