Author: hgomez Date: Mon May 8 05:53:41 2006 New Revision: 405039 URL: http://svn.apache.org/viewcvs?rev=405039&view=rev Log: Add support for connection and reply timeout. For now only HttpClient based Transport support connection and reply timeout. Lite based Transport allow only reply timeout
Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java?rev=405039&r1=405038&r2=405039&view=diff ============================================================================== --- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java (original) +++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcCommonsTransport.java Mon May 8 05:53:41 2006 @@ -57,8 +57,15 @@ } public Object sendRequest(XmlRpcRequest pRequest) throws XmlRpcException { - XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig(); + XmlRpcHttpClientConfig config = (XmlRpcHttpClientConfig) pRequest.getConfig(); method = new PostMethod(config.getServerURL().toString()); + + if (config.getConnectionTimeout() != 0) + client.getHttpConnectionManager().getParams().setConnectionTimeout(config.getConnectionTimeout()); + + if (config.getReplyTimeout() != 0) + client.getHttpConnectionManager().getParams().setSoTimeout(config.getConnectionTimeout()); + method.getParams().setVersion(HttpVersion.HTTP_1_1); return super.sendRequest(pRequest); } Modified: webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java?rev=405039&r1=405038&r2=405039&view=diff ============================================================================== --- webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java (original) +++ webservices/xmlrpc/trunk/client/src/main/java/org/apache/xmlrpc/client/XmlRpcLiteHttpTransport.java Mon May 8 05:53:41 2006 @@ -195,7 +195,10 @@ protected InputStream getInputStream() throws XmlRpcException { final byte[] buffer = new byte[2048]; try { - input = new BufferedInputStream(socket.getInputStream()); + // If reply timeout specified, set the socket timeout accordingly + if (config.getReplyTimeout() != 0) + socket.setSoTimeout(config.getReplyTimeout()); + input = new BufferedInputStream(socket.getInputStream()); // start reading server response headers String line = HttpUtil.readLine(input, buffer); StringTokenizer tokens = new StringTokenizer(line); Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java?rev=405039&r1=405038&r2=405039&view=diff ============================================================================== --- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java (original) +++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.java Mon May 8 05:53:41 2006 @@ -33,4 +33,15 @@ * @throws IllegalStateException A user name is configured, but no password. */ String getBasicPassword(); + + /** Return the connection timeout in milliseconds + * @ return connection timeout in milliseconds or 0 if no set + */ + int getConnectionTimeout(); + + /** Return the reply timeout in milliseconds + * @ return reply timeout in milliseconds or 0 if no set + */ + int getReplyTimeout(); + } Modified: webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java URL: http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java?rev=405039&r1=405038&r2=405039&view=diff ============================================================================== --- webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java (original) +++ webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/common/XmlRpcHttpRequestConfigImpl.java Mon May 8 05:53:41 2006 @@ -26,6 +26,9 @@ private boolean gzipRequesting; private String basicUserName; private String basicPassword; + private int connectionTimeout = 0; + private int replyTimeout = 0; + /** Sets, whether gzip compression is being used for * transmitting the request. * @param pCompressing True for enabling gzip compression, @@ -71,4 +74,27 @@ } public String getBasicPassword() { return basicPassword; } + + /** Set the connection timeout in milliseconds. + * @param pTimeout connection timeout, 0 to disable it + */ + public void setConnectionTimeout(int pTimeout) { + connectionTimeout = pTimeout; + } + + public int getConnectionTimeout() { + return connectionTimeout; + } + + /** Set the reply timeout in milliseconds. + * @param pTimeout reply timeout, 0 to disable it + */ + public void setReplyTimeout(int pTimeout) { + replyTimeout = pTimeout; + } + + public int getReplyTimeout() { + return replyTimeout; + } + }