我正在尝试在Google App Engine上的Java Web应用程序中使用XML RPC客户端来检索一些数据...问题是,获取可能需要30秒以上的时间,这是Google App Engine中java.net的超时限制对于Java。

所以我有3个问题

(1)我假设XML RPC客户端(例如Apache XML RPC客户端)的超时限制与java.net = 30s的超时限制相同是正确的吗?

(2)如果我的假设是正确的,那么有什么方法可以在XML RPC客户端实际进行呼叫之前手动设置超时限制?据我了解,可以在使用Java.net时使用低级API手动设置超时限制...但是我不知道如何将低级API应用于Apache XML RPC客户端...

(3)如果我要问的是使用Apache的XML RPC客户端无法完成的任务,那么您可以建议一些替代的XML RPC客户端吗?

问候,
阿文德

最佳答案

该限制是Google App Engine在UrlFetch上指定的限制(默认为5秒)。

如果您想更改它(即更改为60秒),可以执行以下操作:

XmlRpcClient client = new XmlRpcClient()
client.setTransportFactory(new XmlRpcTransportFactory(){

        @Override
        public XmlRpcTransport getTransport() {

            return new XmlRpcSunHttpTransport(client){
                protected java.net.URLConnection getURLConnection(){
                    URLConnection urlConnection = super.getURLConnection();
                    urlConnection.setConnectTimeout(60000);
                    urlConnection.setReadTimeout(60000);
                    return urlConnection;
                }
            };

        }});

10-08 04:49