Class AbstractHttpClientTransport
- All Implemented Interfaces:
HttpClient.Aware
,HttpClientTransport
,ClientConnectionFactory
,Container
,Destroyable
,Dumpable
,Dumpable.DumpableContainer
,LifeCycle
,Invocable
- Direct Known Subclasses:
AbstractConnectorHttpClientTransport
,HttpClientTransportOverHTTP2
,HttpClientTransportOverHTTP3
-
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.io.ClientConnectionFactory
ClientConnectionFactory.Decorator, ClientConnectionFactory.Info, ClientConnectionFactory.Wrapper
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, Dumpable.DumpAppendable
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable
Invocable.Callable, Invocable.InvocationType, Invocable.ReadyTask, Invocable.Task
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
Field Summary
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, STARTED, STARTING, STOPPED, STOPPING
Fields inherited from interface org.eclipse.jetty.io.ClientConnectionFactory
CONTEXT_KEY
Fields inherited from interface org.eclipse.jetty.util.thread.Invocable
__nonBlocking, NOOP
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
connectFailed
(Map<String, Object> context, Throwable failure) protected HttpClient
void
Set the factory for ConnectionPool instances.void
setHttpClient
(HttpClient client) Sets theHttpClient
instance on this transport.void
setInvocationType
(Invocable.InvocationType invocationType) Sets theInvocable.InvocationType
associated with thisHttpClientTransport
.Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, doStart, doStop, dump, 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, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.jetty.io.ClientConnectionFactory
customize, newConnection
Methods inherited from interface org.eclipse.jetty.util.component.Container
getCachedBeans, getEventListeners
Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpable
Methods inherited from interface org.eclipse.jetty.client.HttpClientTransport
connect, newDestination, newOrigin
-
Constructor Details
-
AbstractHttpClientTransport
public AbstractHttpClientTransport()
-
-
Method Details
-
getHttpClient
-
setHttpClient
Description copied from interface:HttpClientTransport
Sets theHttpClient
instance on this transport.This is needed because of a chicken-egg problem: in order to create the
HttpClient
a HttpClientTransport is needed, that therefore cannot have a reference yet to theHttpClient
.- Specified by:
setHttpClient
in interfaceHttpClient.Aware
- Specified by:
setHttpClient
in interfaceHttpClientTransport
- Parameters:
client
- theHttpClient
that uses this transport.
-
getConnectionPoolFactory
- Specified by:
getConnectionPoolFactory
in interfaceHttpClientTransport
- Returns:
- the factory for ConnectionPool instances
-
setConnectionPoolFactory
Description copied from interface:HttpClientTransport
Set the factory for ConnectionPool instances.- Specified by:
setConnectionPoolFactory
in interfaceHttpClientTransport
- Parameters:
factory
- the factory for ConnectionPool instances
-
connectFailed
-
getInvocationType
- Specified by:
getInvocationType
in interfaceHttpClientTransport
- Specified by:
getInvocationType
in interfaceInvocable
- Returns:
- the
Invocable.InvocationType
associated with thisHttpClientTransport
. - See Also:
-
setInvocationType
Description copied from interface:HttpClientTransport
Sets the
Invocable.InvocationType
associated with thisHttpClientTransport
.The values are typically either:
Invocable.InvocationType.BLOCKING
, to indicate that response listeners are executing blocking code, for example blocking network I/O, JDBC, etc.Invocable.InvocationType.NON_BLOCKING
, to indicate that response listeners are executing non-blocking code.
By default, the value is
Invocable.InvocationType.BLOCKING
.A response listener declared to be
Invocable.InvocationType.BLOCKING
incurs in one additional context switch, where the NIO processing thread delegates the response processing to another thread. This ensures that the NIO processing thread can immediately continue with other NIO processing activities, if any (for example, processing another connection). This also means that processing of different connections is parallelized.Invocable.InvocationType.BLOCKING
must be used when you want response listeners to be invoked by virtual threads.On the other hand, a response listener declared to be
Invocable.InvocationType.NON_BLOCKING
does not incur in the additional context switch, and therefore it is potentially more efficient. However, the processing of different connections is serialized, which means that the last connection will be processed only after the previous connections (and their respective response listeners) have been processed.A response listener declared to be
Invocable.InvocationType.NON_BLOCKING
, but then executing blocking code, will block the NIO processing performed byHttpClient
's implementation: the current connection and possibly other connections will not be further processed, until the blocking response listener returns.- Specified by:
setInvocationType
in interfaceHttpClientTransport
- Parameters:
invocationType
- theInvocable.InvocationType
associated with thisHttpClientTransport
.- See Also:
-