Class ClientConnector
- All Implemented Interfaces:
 Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle
The client-side component that connects to server sockets.
ClientConnector delegates the handling of SocketChannels
to a SelectorManager, and centralizes the configuration of
necessary components such as the executor, the scheduler, etc.
ClientConnector offers a low-level API that can be used to
connect SocketChannels to listening servers via the
connect(SocketAddress, Map) method.
However, a ClientConnector instance is typically just configured and then passed to an HttpClient transport, so that applications can use high-level APIs to make HTTP requests to servers:
// Create a ClientConnector instance. ClientConnector connector = new ClientConnector(); // Configure the ClientConnector. connector.setSelectors(1); connector.setSslContextFactory(new SslContextFactory.Client()); // Pass it to the HttpClient transport. HttpClientTransport transport = new HttpClientTransportDynamic(connector); HttpClient httpClient = new HttpClient(transport); httpClient.start();
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classstatic interfaceA listener for events aboutSocketChannel.connect(SocketAddress).Nested classes/interfaces inherited from class AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener, AbstractLifeCycle.StopExceptionNested classes/interfaces inherited from interface Container
Container.InheritedListener, Container.ListenerNested classes/interfaces inherited from interface Dumpable
Dumpable.DumpableContainer, Dumpable.DumpAppendableNested classes/interfaces inherited from interface LifeCycle
LifeCycle.Listener - 
Field Summary
Fields - 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionvoidaccept(SelectableChannel selectable, Map<String, Object> context) protected voidacceptFailed(Throwable failure, SelectableChannel channel, Map<String, Object> context) booleanaddEventListener(EventListener listener) Add an event listener.protected voidconfigure(SelectableChannel selectable) voidconnect(SocketAddress address, Map<String, Object> context) protected voidconnectFailed(SelectableChannel channel, SocketAddress address, Throwable failure, Map<String, Object> context) protected voiddoStart()Starts the managed lifecycle beans in the order they were added.protected voiddoStop()Stops the managed lifecycle beans in the reverse order they were added.intbooleanintintbooleanbooleanbooleanprotected ConnectionnewConnection(EndPoint endPoint, Map<String, Object> context) protected EndPointnewEndPoint(SelectableChannel selectable, ManagedSelector selector, SelectionKey selectionKey) protected SelectorManagernewSslClientConnectionFactory(SslContextFactory.Client sslContextFactory, ClientConnectionFactory connectionFactory) protected SslContextFactory.ClientbooleanremoveEventListener(EventListener listener) Remove an event listener.voidsetBindAddress(SocketAddress bindAddress) Sets the bind address of sockets before the connect operation.voidsetByteBufferPool(ByteBufferPool byteBufferPool) voidsetConnectBlocking(boolean connectBlocking) voidsetConnectTimeout(Duration connectTimeout) voidsetExecutor(Executor executor) voidsetIdleTimeout(Duration idleTimeout) voidsetReceiveBufferSize(int receiveBufferSize) voidsetReuseAddress(boolean reuseAddress) Sets whether it is allowed to bind a socket to a socket address that may be in use by another socket in tear-down state, for example in TIME_WAIT state.voidsetReusePort(boolean reusePort) Sets whether it is allowed to bind multiple sockets to the same socket address (same host and same port).voidsetScheduler(Scheduler scheduler) voidsetSelectors(int selectors) voidsetSendBufferSize(int sendBufferSize) voidsetSslContextFactory(SslContextFactory.Client sslContextFactory) voidsetTCPNoDelay(boolean tcpNoDelay) Methods inherited from class ContainerLifeCycle
addBean, addBean, addManaged, contains, destroy, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, installBean, installBean, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeansMethods inherited from class AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toStringMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Container
getCachedBeans, getEventListenersMethods inherited from interface Dumpable.DumpableContainer
isDumpable 
- 
Field Details
- 
CONTEXT_KEY
 - 
APPLICATION_PROTOCOL_CONTEXT_KEY
 - 
APPLICATION_PROTOCOLS_CONTEXT_KEY
 - 
CONNECTION_PROMISE_CONTEXT_KEY
 - 
HTTP_CLIENT_CONTEXT_KEY
- See Also:
 
 - 
REMOTE_SOCKET_ADDRESS_CONTEXT_KEY
 - 
SSL_CONTEXT_FACTORY_CONTEXT_KEY
 
 - 
 - 
Constructor Details
- 
ClientConnector
public ClientConnector() 
 - 
 - 
Method Details
- 
getSelectorManager
 - 
getExecutor
 - 
setExecutor
 - 
getScheduler
 - 
setScheduler
 - 
getByteBufferPool
 - 
setByteBufferPool
 - 
getSslContextFactory
 - 
setSslContextFactory
 - 
getSelectors
- Returns:
 - the number of NIO selectors
 
 - 
setSelectors
public void setSelectors(int selectors)  - 
isConnectBlocking
@ManagedAttribute("Whether connect operations are performed in blocking mode") public boolean isConnectBlocking()- Returns:
 - whether 
connect(SocketAddress, Map)operations are performed in blocking mode 
 - 
setConnectBlocking
public void setConnectBlocking(boolean connectBlocking)  - 
getConnectTimeout
- Returns:
 - the timeout of 
connect(SocketAddress, Map)operations 
 - 
setConnectTimeout
 - 
getIdleTimeout
@ManagedAttribute("The duration for which a connection can be idle") public Duration getIdleTimeout()- Returns:
 - the max duration for which a connection can be idle (that is, without traffic of bytes in either direction)
 
 - 
setIdleTimeout
 - 
getBindAddress
@ManagedAttribute("The socket address to bind sockets to before the connect operation") public SocketAddress getBindAddress()- Returns:
 - the address to bind a socket to before the connect operation
 
 - 
setBindAddress
Sets the bind address of sockets before the connect operation.
In multi-homed hosts, you may want to connect from a specific address:
clientConnector.setBindAddress(new InetSocketAddress("127.0.0.2", 0));Note the use of the port
0to indicate that a different ephemeral port should be used for each different connection.In the rare cases where you want to use the same port for all connections, you must also call
setReusePort(true).- Parameters:
 bindAddress- the socket address to bind to before the connect operation
 - 
isTCPNoDelay
- Returns:
 - whether small TCP packets are sent without delay
 
 - 
setTCPNoDelay
public void setTCPNoDelay(boolean tcpNoDelay)  - 
getReuseAddress
@ManagedAttribute("Whether rebinding is allowed with sockets in tear-down states") public boolean getReuseAddress()- Returns:
 - whether rebinding is allowed with sockets in tear-down states
 
 - 
setReuseAddress
public void setReuseAddress(boolean reuseAddress) Sets whether it is allowed to bind a socket to a socket address that may be in use by another socket in tear-down state, for example in TIME_WAIT state.
This is useful when ClientConnector is restarted: an existing connection may still be using a network address (same host and same port) that is also chosen for a new connection.
- Parameters:
 reuseAddress- whether rebinding is allowed with sockets in tear-down states- See Also:
 
 - 
isReusePort
- Returns:
 - whether binding to same host and port is allowed
 
 - 
setReusePort
public void setReusePort(boolean reusePort) Sets whether it is allowed to bind multiple sockets to the same socket address (same host and same port).
- Parameters:
 reusePort- whether binding to same host and port is allowed
 - 
getReceiveBufferSize
- Returns:
 - the receive buffer size in bytes, or -1 for the default value
 
 - 
setReceiveBufferSize
public void setReceiveBufferSize(int receiveBufferSize)  - 
getSendBufferSize
- Returns:
 - the send buffer size in bytes, or -1 for the default value
 
 - 
setSendBufferSize
public void setSendBufferSize(int sendBufferSize)  - 
doStart
Description copied from class:ContainerLifeCycleStarts the managed lifecycle beans in the order they were added.- Overrides:
 doStartin classContainerLifeCycle- Throws:
 Exception- If there was a problem starting. Will cause a transition to FAILED state
 - 
doStop
Description copied from class:ContainerLifeCycleStops the managed lifecycle beans in the reverse order they were added.- Overrides:
 doStopin classContainerLifeCycle- Throws:
 Exception- If there was a problem stopping. Will cause a transition to FAILED state
 - 
newSslContextFactory
 - 
newSelectorManager
 - 
newSslClientConnectionFactory
public ClientConnectionFactory newSslClientConnectionFactory(SslContextFactory.Client sslContextFactory, ClientConnectionFactory connectionFactory)  - 
connect
 - 
accept
 - 
configure
- Throws:
 IOException
 - 
newEndPoint
protected EndPoint newEndPoint(SelectableChannel selectable, ManagedSelector selector, SelectionKey selectionKey)  - 
newConnection
protected Connection newConnection(EndPoint endPoint, Map<String, Object> context) throws IOException- Throws:
 IOException
 - 
acceptFailed
protected void acceptFailed(Throwable failure, SelectableChannel channel, Map<String, Object> context)  - 
connectFailed
protected void connectFailed(SelectableChannel channel, SocketAddress address, Throwable failure, Map<String, Object> context)  - 
addEventListener
Description copied from interface:ContainerAdd an event listener. EventListeners added by this method are also added as beans.- Specified by:
 addEventListenerin interfaceContainer- Specified by:
 addEventListenerin interfaceLifeCycle- Overrides:
 addEventListenerin classContainerLifeCycle- Parameters:
 listener- the listener to add- Returns:
 - true if the listener was added
 - See Also:
 
 - 
removeEventListener
Description copied from interface:ContainerRemove an event listener.- Specified by:
 removeEventListenerin interfaceContainer- Specified by:
 removeEventListenerin interfaceLifeCycle- Overrides:
 removeEventListenerin classContainerLifeCycle- Parameters:
 listener- the listener to remove- Returns:
 - true if the listener was removed
 - See Also:
 
 
 -