我正在开发一个在 App Engine 上运行的应用程序。我的一项任务调用了 Web 服务。为此,我使用 JAX-RS。但是,其中一个调用达到了应用引擎设置的超时时间(5 秒)。我想将此超时增加到 10 秒,但我无法修改它。实际上,JAX-RS 不允许捕获创建的 HttpConnection 对象。
我的问题是:是否可以全局配置 URL Fetching 的超时时间?
谢谢
我正在开发一个在 App Engine 上运行的应用程序。我的一项任务调用了 Web 服务。为此,我使用 JAX-RS。但是,其中一个调用达到了应用引擎设置的超时时间(5 秒)。我想将此超时增加到 10 秒,但我无法修改它。实际上,JAX-RS 不允许捕获创建的 HttpConnection 对象。
我的问题是:是否可以全局配置 URL Fetching 的超时时间?
谢谢
不确定您使用哪个 JAX-RS 堆栈,但对于 Jersey,您可以这样做:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
ClientConfig cc = new DefaultClientConfig();
cc.getProperties().put(ClientConfig.PROPERTY_THREADPOOL_SIZE,10);
Client client = Client.create(cc);
client.setConnectTimeout(1000);
client.setReadTimeout(15000);
需要注意的是,在 GAE 上创建 Jersey 客户端相对较慢,因此您可能希望将此客户端设置为实例中的静态变量。(它是一个线程安全的对象,所以没有问题)这仍然可以为您的实例的启动增加 2-5 秒。