Class AbstractConnectionPool
- All Implemented Interfaces:
ConnectionPool
,Container
,Destroyable
,Dumpable
,Dumpable.DumpableContainer
,LifeCycle
,Sweeper.Sweepable
- Direct Known Subclasses:
DuplexConnectionPool
,MultiplexConnectionPool
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopException
Nested classes/interfaces inherited from interface org.eclipse.jetty.client.ConnectionPool
ConnectionPool.Factory, ConnectionPool.MaxMultiplexable, ConnectionPool.MaxUsable
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
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractConnectionPool
(Destination destination, Pool.Factory<Connection> poolFactory, int initialMaxMultiplex) -
Method Summary
Modifier and TypeMethodDescriptionboolean
accept
(Connection connection) Accepts the given connection to be managed by this ConnectionPool.acquire
(boolean create) Returns an idle connection, if available; if an idle connection is not available, and the givencreate
parameter istrue
orisMaximizeConnections()
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 void
acquired
(Connection connection) Deprecated, for removal: This API element is subject to removal in a future version.Racy API.protected Connection
activate()
protected boolean
deactivate
(Connection connection) protected void
doStart()
Starts the managed lifecycle beans in the order they were added.protected void
doStop()
Stops the managed lifecycle beans in the reverse order they were added.void
dump
(Appendable out, String indent) Dump this object (and children) into an Appendable using the provided indent after any new lines.int
int
int
protected int
int
long
Returns the max usage duration in milliseconds of a pooled connection.int
Returns the max number of times a pooled connection can be used.int
protected boolean
idle
(Connection connection, boolean close) Deprecated, for removal: This API element is subject to removal in a future version.Racy API.boolean
isActive
(Connection connection) boolean
isEmpty()
boolean
protected void
onCreated
(Connection connection) Callback method invoked when a newConnection
has been created.protected void
onRemoved
(Connection connection) Callback method invoked when aConnection
has been removed from this pool.preCreateConnections
(int connectionCount) Optionally pre-create up toconnectionCount
connections so they are immediately ready for use.protected void
proceed()
boolean
release
(Connection connection) Returns the given connection, previously obtained viaConnectionPool.acquire(boolean)
, back to this ConnectionPool.protected void
released
(Connection connection) Deprecated, for removal: This API element is subject to removal in a future version.Racy API.boolean
remove
(Connection connection) Removes the given connection from this ConnectionPool.protected void
removed
(Connection connection) Deprecated, for removal: This API element is subject to removal in a future version.replaced byonRemoved(Connection)
protected void
setInitialMaxMultiplex
(int initialMaxMultiplex) void
setMaxDuration
(long maxDurationInMs) void
setMaximizeConnections
(boolean maximizeConnections) Sets whether the number of connections should be maximized.void
setMaxUsage
(int maxUsage) boolean
sweep()
toString()
protected void
tryCreate
(boolean create) Tries to create a new connection.Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, installBean, installBean, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeans
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, 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.Container
getCachedBeans, getEventListeners
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
-
Constructor Details
-
AbstractConnectionPool
protected AbstractConnectionPool(Destination destination, Pool.Factory<Connection> poolFactory, int initialMaxMultiplex)
-
-
Method Details
-
doStart
Description copied from class:ContainerLifeCycle
Starts the managed lifecycle beans in the order they were added.- Overrides:
doStart
in classContainerLifeCycle
- Throws:
AbstractLifeCycle.StopException
- If thrown, the lifecycle will immediately be stopped.Exception
- If there was a problem starting. Will cause a transition to FAILED state
-
doStop
Description copied from class:ContainerLifeCycle
Stops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStop
in classContainerLifeCycle
- Throws:
Exception
- If there was a problem stopping. Will cause a transition to FAILED state
-
preCreateConnections
Description copied from interface:ConnectionPool
Optionally pre-create up toconnectionCount
connections so they are immediately ready for use.- Specified by:
preCreateConnections
in 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()Returns the max usage duration in milliseconds of a pooled connection.
Values
0
and negative mean that there is no limit.This property only guarantees that a connection cannot be acquired after the configured duration elapses, so that is only enforced when
acquire(boolean)
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 (see
HttpClient.getIdleTimeout()
) to handle closing idle connections.- Returns:
- the max usage duration, in milliseconds, of a pooled connection
-
setMaxDuration
public void setMaxDuration(long maxDurationInMs) -
getInitialMaxMultiplex
protected int getInitialMaxMultiplex() -
setInitialMaxMultiplex
protected void setInitialMaxMultiplex(int initialMaxMultiplex) -
getMaxUsage
@ManagedAttribute("The maximum amount of times a connection is used before it gets closed") public int getMaxUsage()Returns the max number of times a pooled connection can be used.
Values
0
and negative mean that there is no limit.- Returns:
- the max number of times a pooled connection can be used
-
setMaxUsage
public void setMaxUsage(int maxUsage) -
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
-
getPendingConnectionCount
@ManagedAttribute(value="The number of pending connections", readonly=true) public int getPendingConnectionCount() -
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceConnectionPool
- Returns:
- whether this ConnectionPool has no open connections
-
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
Returns an idle connection, if available; if an idle connection is not available, and the given
create
parameter istrue
orisMaximizeConnections()
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
create
parameter is just a hint: the connection may be created even iffalse
, or may not be created even iftrue
.- Specified by:
acquire
in interfaceConnectionPool
- Parameters:
create
- a hint to attempt to open a new connection if no idle connections are available- Returns:
- an idle connection or
null
if no idle connections are available - See Also:
-
tryCreate
protected void tryCreate(boolean create) Tries to create a new connection.
Whether a new connection is created is determined by the
create
parameter 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 thegetInitialMaxMultiplex()
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
-
accept
Description copied from interface:ConnectionPool
Accepts the given connection to be managed by this ConnectionPool.
- Specified by:
accept
in interfaceConnectionPool
- Parameters:
connection
- the connection to accept- Returns:
- whether the connection has been accepted
-
proceed
protected void proceed() -
activate
-
isActive
- Specified by:
isActive
in interfaceConnectionPool
- Parameters:
connection
- the connection to test- Returns:
- whether the given connection is currently in use
-
release
Description copied from interface:ConnectionPool
Returns the given connection, previously obtained via
ConnectionPool.acquire(boolean)
, back to this ConnectionPool.- Specified by:
release
in interfaceConnectionPool
- Parameters:
connection
- the connection to release- Returns:
- true if the connection has been released, false if the connection should be closed
-
deactivate
-
remove
Description copied from interface:ConnectionPool
Removes the given connection from this ConnectionPool.
- Specified by:
remove
in interfaceConnectionPool
- Parameters:
connection
- the connection to remove- Returns:
- true if the connection was removed from this ConnectionPool
-
onCreated
Callback method invoked when a new
Connection
has been created.- Parameters:
connection
- theConnection
that has been created- See Also:
-
idle
@Deprecated(since="12.0.8", forRemoval=true) protected boolean idle(Connection connection, boolean close) Deprecated, for removal: This API element is subject to removal in a future version.Racy API. Do not use. There is no replacement.- Parameters:
connection
- theConnection
that become idleclose
- whether this pool is closing- Returns:
true
to indicate that the connection is idle,false
otherwise
-
acquired
Deprecated, for removal: This API element is subject to removal in a future version.Racy API. Do not use. There is no replacement.- Parameters:
connection
- theConnection
that was acquired
-
released
Deprecated, for removal: This API element is subject to removal in a future version.Racy API. Do not use. There is no replacement.- Parameters:
connection
- theConnection
that was released
-
removed
Deprecated, for removal: This API element is subject to removal in a future version.replaced byonRemoved(Connection)
- Parameters:
connection
- theConnection
that was removed
-
onRemoved
Callback method invoked when a
Connection
has been removed from this pool.- Parameters:
connection
- theConnection
that was removed- See Also:
-
dump
Description copied from interface:Dumpable
Dump 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:
dump
in interfaceDumpable
- Overrides:
dump
in classContainerLifeCycle
- Parameters:
out
- The appendable to dump toindent
- The indent to apply after any new lines.- Throws:
IOException
- if unable to write to Appendable
-
sweep
public boolean sweep()- Specified by:
sweep
in interfaceSweeper.Sweepable
- Returns:
- whether this resource should be swept
-
toString
- Overrides:
toString
in classAbstractLifeCycle
-