/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.axis.components.net; import org.apache.axis.AxisProperties; /** * Default property set for the of the multi threaded connection pool * used in the CommonsHTTPSender transport implementation. Values * returned by this implementation are identical to the defaults for * the Commons HTTPClient library itself, unless overridden with * Axis properties. * * @author Eric Friedman */ public class DefaultCommonsHTTPClientProperties implements CommonsHTTPClientProperties { /** the key for the Axis Property that controls the maximum total connections allowed in the httpclient pool */ public static final String MAXIMUM_TOTAL_CONNECTIONS_PROPERTY_KEY = "axis.http.client.maximum.total.connections"; /** the key for the Axis Property that controls the maximum connections per host allowed by the httpclient pool */ public static final String MAXIMUM_CONNECTIONS_PER_HOST_PROPERTY_KEY = "axis.http.client.maximum.connections.per.host"; /** the key for the Axis Property that sets the connection pool timeout for the httpclient pool */ public static final String CONNECTION_POOL_TIMEOUT_KEY = "axis.http.client.connection.pool.timeout"; /** the key for the Axis Property that sets the default connection timeout for the httpclient, can be overriden by the MessageContext */ public static final String CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY = "axis.http.client.connection.default.connection.timeout"; /** the key for the Axis Property that sets the read timeout for the httpclient */ public static final String CONNECTION_DEFAULT_SO_TIMEOUT_KEY = "axis.http.client.connection.default.so.timeout"; /** * Convert the value for property into an int or, if none is found, * use the dephault value instead. * * @return an integer value */ protected final int getIntegerProperty(String property, String dephault) { return Integer.parseInt(AxisProperties.getProperty(property, dephault)); } /** * Return the integer value associated with the property * axis.http.client.maximum.total.connections or a default of 20. * * @return a whole integer */ public int getMaximumTotalConnections() { int i = getIntegerProperty(MAXIMUM_TOTAL_CONNECTIONS_PROPERTY_KEY, "20"); if (i < 1) { throw new IllegalStateException(MAXIMUM_TOTAL_CONNECTIONS_PROPERTY_KEY + " must be > 1"); } return i; } /** * Return the integer value associated with the property * axis.http.client.maximum.connections.per.host or a default of 2. * * @return a whole integer */ public int getMaximumConnectionsPerHost() { int i = getIntegerProperty(MAXIMUM_CONNECTIONS_PER_HOST_PROPERTY_KEY, "2"); if (i < 1) { throw new IllegalStateException(MAXIMUM_CONNECTIONS_PER_HOST_PROPERTY_KEY + " must be > 1"); } return i; } /** * Return the integer value associated with the property * axis.http.client.connection.pool.timeout or a default of 0. * * @return an integer >= 0 */ public int getConnectionPoolTimeout() { int i = getIntegerProperty(CONNECTION_POOL_TIMEOUT_KEY, "0"); if (i < 0) { throw new IllegalStateException(CONNECTION_POOL_TIMEOUT_KEY + " must be >= 0"); } return i; } /** * Return the integer value associated with the property * axis.http.client.connection.default.connection.timeout or a default of 0. * * @return an integer >= 0 */ public int getDefaultConnectionTimeout() { int i = getIntegerProperty(CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, "0"); if (i < 0) { throw new IllegalStateException(CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY + " must be >= 0"); } return i; } /** * Return the integer value associated with the property * axis.http.client.connection.default.so.timeout or a default of 0. * * @return an integer >= 0 */ public int getDefaultSoTimeout() { int i = getIntegerProperty(CONNECTION_DEFAULT_SO_TIMEOUT_KEY, "0"); if (i < 0) { throw new IllegalStateException(CONNECTION_DEFAULT_SO_TIMEOUT_KEY + " must be >= 0"); } return i; } }