Class AbstractConnectionPool
- java.lang.Object
-
- org.eclipse.jetty.util.component.AbstractLifeCycle
-
- org.eclipse.jetty.util.component.ContainerLifeCycle
-
- org.eclipse.jetty.client.AbstractConnectionPool
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,ConnectionPool,Container,Destroyable,Dumpable,Dumpable.DumpableContainer,LifeCycle,Sweeper.Sweepable
- Direct Known Subclasses:
DuplexConnectionPool,MultiplexConnectionPool
@ManagedObject public abstract class AbstractConnectionPool extends ContainerLifeCycle implements ConnectionPool, Dumpable, Sweeper.Sweepable
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.client.ConnectionPool
ConnectionPool.Factory, ConnectionPool.Multiplexable
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
Container.InheritedListener, Container.Listener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractConnectionPool(Destination destination, int maxConnections, Callback requester)Deprecated.protectedAbstractConnectionPool(HttpDestination destination, int maxConnections, boolean cache, Callback requester)protectedAbstractConnectionPool(HttpDestination destination, Pool.StrategyType strategy, int maxConnections, boolean cache, Callback requester)protectedAbstractConnectionPool(HttpDestination destination, Pool<Connection> pool, Callback requester)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Connectionacquire()Returns an idle connection, if available, or schedules the opening of a new connection and returnsnull.protected Connectionacquire(boolean create)Returns an idle connection, if available; if an idle connection is not available, and the givencreateparameter istrueorisMaximizeConnections()istrue, then attempts to open a new connection, if possible within the configuration of this connection pool (for example, if it does not exceed the max connection count); otherwise it attempts to open a new connection, if the number of queued requests is greater than the number of pending connections; if no connection is available even after the attempts to open, returnnull.protected voidacquired(Connection connection)protected Connectionactivate()voidclose()Closes this ConnectionPool.protected booleandeactivate(Connection connection)protected voiddoStop()Stops the managed lifecycle beans in the reverse order they were added.voiddump(java.lang.Appendable out, java.lang.String indent)Dump this object (and children) into an Appendable using the provided indent after any new lines.intgetActiveConnectionCount()java.util.Collection<Connection>getActiveConnections()Deprecated.Relying on this method indicates a reliance on the implementation details.intgetConnectionCount()intgetIdleConnectionCount()java.util.Queue<Connection>getIdleConnections()Deprecated.Relying on this method indicates a reliance on the implementation details.intgetMaxConnectionCount()longgetMaxDuration()Get the max usage duration in milliseconds of the pool's connections.protected intgetMaxMultiplex()protected intgetMaxUsageCount()intgetPendingConnectionCount()intgetPendingCount()Deprecated.usegetPendingConnectionCount()insteadprotected booleanidle(Connection connection, boolean close)booleanisActive(Connection connection)booleanisClosed()booleanisEmpty()booleanisMaximizeConnections()protected voidonCreated(Connection connection)java.util.concurrent.CompletableFuture<java.lang.Void>preCreateConnections(int connectionCount)Optionally pre-create up toconnectionCountconnections so they are immediately ready for use.protected voidproceed()booleanrelease(Connection connection)Returns the given connection, previously obtained viaConnectionPool.acquire(), back to this ConnectionPool.protected voidreleased(Connection connection)booleanremove(Connection connection)Removes the given connection from this ConnectionPool.protected booleanremove(Connection connection, boolean force)Deprecated.protected voidremoved(Connection connection)voidsetMaxDuration(long maxDurationInMs)voidsetMaximizeConnections(boolean maximizeConnections)Sets whether the number of connections should be maximized.protected voidsetMaxMultiplex(int maxMultiplex)protected voidsetMaxUsageCount(int maxUsageCount)booleansweep()java.lang.StringtoString()protected voidtryCreate(boolean create)Tries to create a new connection.-
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, doStart, dump, dump, dump, dump, dumpBeans, dumpObject, dumpObjects, dumpStdErr, dumpThis, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
-
-
-
-
Constructor Detail
-
AbstractConnectionPool
@Deprecated protected AbstractConnectionPool(Destination destination, int maxConnections, Callback requester)
Deprecated.
-
AbstractConnectionPool
protected AbstractConnectionPool(HttpDestination destination, int maxConnections, boolean cache, Callback requester)
-
AbstractConnectionPool
protected AbstractConnectionPool(HttpDestination destination, Pool.StrategyType strategy, int maxConnections, boolean cache, Callback requester)
-
AbstractConnectionPool
protected AbstractConnectionPool(HttpDestination destination, Pool<Connection> pool, Callback requester)
-
-
Method Detail
-
doStop
protected void doStop() throws java.lang.ExceptionDescription copied from class:ContainerLifeCycleStops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStopin classContainerLifeCycle- Throws:
java.lang.Exception
-
preCreateConnections
public java.util.concurrent.CompletableFuture<java.lang.Void> preCreateConnections(int connectionCount)
Description copied from interface:ConnectionPoolOptionally pre-create up toconnectionCountconnections so they are immediately ready for use.- Specified by:
preCreateConnectionsin interfaceConnectionPool- Parameters:
connectionCount- the number of connections to pre-start.
-
getMaxDuration
@ManagedAttribute("The maximum duration in milliseconds a connection can be used for before it gets closed") public long getMaxDuration()
Get the max usage duration in milliseconds of the pool's connections. Values
0and negative mean that there is no limit.This only guarantees that a connection cannot be acquired after the configured duration elapses, so that is only enforced when
acquire()is called. If a pool stays completely idle for a duration longer than the value returned by this method, the max duration will not be enforced. It's up to the idle timeout mechanism (seeHttpClient.getIdleTimeout()) to handle closing idle connections.
-
setMaxDuration
public void setMaxDuration(long maxDurationInMs)
-
getMaxMultiplex
protected int getMaxMultiplex()
-
setMaxMultiplex
protected void setMaxMultiplex(int maxMultiplex)
-
getMaxUsageCount
protected int getMaxUsageCount()
-
setMaxUsageCount
protected void setMaxUsageCount(int maxUsageCount)
-
getActiveConnectionCount
@ManagedAttribute(value="The number of active connections", readonly=true) public int getActiveConnectionCount()
-
getIdleConnectionCount
@ManagedAttribute(value="The number of idle connections", readonly=true) public int getIdleConnectionCount()
-
getMaxConnectionCount
@ManagedAttribute(value="The max number of connections", readonly=true) public int getMaxConnectionCount()
-
getConnectionCount
@ManagedAttribute(value="The number of connections", readonly=true) public int getConnectionCount()
-
getPendingCount
@ManagedAttribute(value="The number of pending connections", readonly=true) @Deprecated public int getPendingCount()
Deprecated.usegetPendingConnectionCount()instead- Returns:
- the number of pending connections
-
getPendingConnectionCount
@ManagedAttribute(value="The number of pending connections", readonly=true) public int getPendingConnectionCount()
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfaceConnectionPool- Returns:
- whether this ConnectionPool has no open connections
-
isClosed
@ManagedAttribute("Whether this pool is closed") public boolean isClosed()
- Specified by:
isClosedin interfaceConnectionPool- Returns:
- whether this ConnectionPool has been closed
- See Also:
ConnectionPool.close()
-
isMaximizeConnections
@ManagedAttribute("Whether the pool tries to maximize the number of connections used") public boolean isMaximizeConnections()
-
setMaximizeConnections
public void setMaximizeConnections(boolean maximizeConnections)
Sets whether the number of connections should be maximized.
- Parameters:
maximizeConnections- whether the number of connections should be maximized
-
acquire
public Connection acquire()
Description copied from interface:ConnectionPoolReturns an idle connection, if available, or schedules the opening of a new connection and returns
null.- Specified by:
acquirein interfaceConnectionPool- Returns:
- an available connection, or null
-
acquire
protected Connection acquire(boolean create)
Returns an idle connection, if available; if an idle connection is not available, and the given
createparameter istrueorisMaximizeConnections()istrue, then attempts to open a new connection, if possible within the configuration of this connection pool (for example, if it does not exceed the max connection count); otherwise it attempts to open a new connection, if the number of queued requests is greater than the number of pending connections; if no connection is available even after the attempts to open, returnnull.The
createparameter is just a hint: the connection may be created even iffalse, or may not be created even iftrue.- Parameters:
create- a hint to attempt to open a new connection if no idle connections are available- Returns:
- an idle connection or
nullif no idle connections are available - See Also:
tryCreate(boolean)
-
tryCreate
protected void tryCreate(boolean create)
Tries to create a new connection.
Whether a new connection is created is determined by the
createparameter and a count of demand and supply, where the demand is derived from the number of queued requests, and the supply is the number of pending connections time thegetMaxMultiplex()factor: if the demand is less than the supply, the connection will not be created.Since the number of queued requests used to derive the demand may be a stale value, it is possible that few more connections than strictly necessary may be created, but enough to satisfy the demand.
- Parameters:
create- a hint to request to create a connection
-
proceed
protected void proceed()
-
activate
protected Connection activate()
-
isActive
public boolean isActive(Connection connection)
- Specified by:
isActivein interfaceConnectionPool- Parameters:
connection- the connection to test- Returns:
- whether the given connection is currently in use
-
release
public boolean release(Connection connection)
Description copied from interface:ConnectionPoolReturns the given connection, previously obtained via
ConnectionPool.acquire(), back to this ConnectionPool.- Specified by:
releasein interfaceConnectionPool- Parameters:
connection- the connection to release- Returns:
- true if the connection has been released, false if the connection should be closed
-
deactivate
protected boolean deactivate(Connection connection)
-
remove
public boolean remove(Connection connection)
Description copied from interface:ConnectionPoolRemoves the given connection from this ConnectionPool.
- Specified by:
removein interfaceConnectionPool- Parameters:
connection- the connection to remove- Returns:
- true if the connection was removed from this ConnectionPool
-
remove
@Deprecated protected boolean remove(Connection connection, boolean force)
Deprecated.
-
onCreated
protected void onCreated(Connection connection)
-
idle
protected boolean idle(Connection connection, boolean close)
-
acquired
protected void acquired(Connection connection)
-
released
protected void released(Connection connection)
-
removed
protected void removed(Connection connection)
-
getIdleConnections
@Deprecated public java.util.Queue<Connection> getIdleConnections()
Deprecated.Relying on this method indicates a reliance on the implementation details.- Returns:
- an unmodifiable queue working as a view of the idle connections.
-
getActiveConnections
@Deprecated public java.util.Collection<Connection> getActiveConnections()
Deprecated.Relying on this method indicates a reliance on the implementation details.- Returns:
- an unmodifiable collection working as a view of the active connections.
-
close
public void close()
Description copied from interface:ConnectionPoolCloses this ConnectionPool.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Specified by:
closein interfaceConnectionPool- See Also:
ConnectionPool.isClosed()
-
dump
public void dump(java.lang.Appendable out, java.lang.String indent) throws java.io.IOExceptionDescription copied from interface:DumpableDump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.- Specified by:
dumpin interfaceDumpable- Overrides:
dumpin classContainerLifeCycle- Parameters:
out- The appendable to dump toindent- The indent to apply after any new lines.- Throws:
java.io.IOException- if unable to write to Appendable
-
sweep
public boolean sweep()
- Specified by:
sweepin interfaceSweeper.Sweepable- Returns:
- whether this resource should be swept
-
toString
public java.lang.String toString()
- Overrides:
toStringin classAbstractLifeCycle
-
-