Class AbstractConnectionFactory
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.ip.tcp.connection.AbstractConnectionFactory
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,BeanNameAware
,InitializingBean
,ApplicationContextAware
,ApplicationEventPublisherAware
,Lifecycle
,ComponentSourceAware
,ExpressionCapable
,ConnectionFactory
,NamedComponent
,ManageableLifecycle
- Direct Known Subclasses:
AbstractClientConnectionFactory
,AbstractServerConnectionFactory
public abstract class AbstractConnectionFactory
extends IntegrationObjectSupport
implements ConnectionFactory, ApplicationEventPublisherAware
Base class for all connection factories.
- Since:
- 2.0
- Author:
- Gary Russell, Artem Bilan, Christian Tzolov, Ngoc Nhan
-
Field Summary
Modifier and TypeFieldDescriptionprotected final Map<String,
TcpConnectionSupport> protected final Lock
protected static final int
protected final Lock
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger
-
Constructor Summary
ConstructorDescriptionAbstractConnectionFactory
(int port) AbstractConnectionFactory
(String host, int port) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addConnection
(TcpConnectionSupport connection) protected void
boolean
closeConnection
(String connectionId) Close a connection with the specified connection id.protected void
delayRead
(Selector selector, long now, SelectionKey key) protected void
doAccept
(Selector selector, ServerSocketChannel server, long now) protected BlockingQueue<org.springframework.integration.ip.tcp.connection.AbstractConnectionFactory.PendingIO>
Deserializer<?>
getHost()
protected Object
Returns a list of (currently) openTcpConnection
connection ids; allows, for example, broadcast operations to all open connections.int
getPort()
protected long
Return the list of senders.Serializer<?>
int
int
int
int
int
protected Integer
protected Executor
Creates a taskExecutor (if one was not provided).protected TcpSocketSupport
protected void
Cleans up this.connections by removing any closed connections.protected boolean
isActive()
boolean
boolean
boolean
boolean
boolean
protected void
onInit()
Subclasses may implement this for initialization logic.protected void
processNioSelections
(int selectionCount, Selector selector, ServerSocketChannel server, Map<SocketChannel, TcpNioConnection> connectionMap) Times out any expired connections then, ifselectionCount > 0
, processes the selected keys.void
registerListener
(TcpListener listenerToRegister) Registers a TcpListener to receive messages after the payload has been converted from the input data.void
registerSender
(TcpSender senderToRegister) Registers a TcpSender; for server sockets, used to provide connection information so a sender can be used to reply to incoming messages.protected void
setActive
(boolean active) void
setApplicationEventPublisher
(ApplicationEventPublisher applicationEventPublisher) void
setDeserializer
(Deserializer<?> deserializer) void
Set the host; requires the factory to be stopped.void
setInterceptorFactoryChain
(TcpConnectionInterceptorFactoryChain interceptorFactoryChain) void
setLeaveOpen
(boolean leaveOpen) If true, sockets created by this factory will be reused.void
setLookupHost
(boolean lookupHost) If true, DNS reverse lookup is done on the remote ip address.void
setMapper
(TcpMessageMapper mapper) void
setNioHarvestInterval
(int nioHarvestInterval) How often we clean up closed NIO connections if soTimeout is 0.void
setPort
(int port) Set the port; requires the factory to be stopped.void
setReadDelay
(long readDelay) The delay (in milliseconds) before retrying a read after the previous attempt failed due to insufficient threads.void
setSerializer
(Serializer<?> serializer) void
setSingleUse
(boolean singleUse) If true, sockets created by this factory will be used once.protected void
setSocketAttributes
(Socket socket) Sets socket attributes on the socket.void
setSoKeepAlive
(boolean soKeepAlive) void
setSoLinger
(int soLinger) void
setSoReceiveBufferSize
(int soReceiveBufferSize) void
setSoSendBufferSize
(int soSendBufferSize) void
setSoTcpNoDelay
(boolean soTcpNoDelay) void
setSoTimeout
(int soTimeout) void
setSoTrafficClass
(int soTrafficClass) void
setSslHandshakeTimeout
(int sslHandshakeTimeout) Set the handshake timeout used when waiting for SSL handshake data; only applies to SSL connections, when using NIO.void
setTaskExecutor
(Executor taskExecutor) void
setTcpSocketSupport
(TcpSocketSupport tcpSocketSupport) void
start()
void
stop()
Stops the server.toString()
boolean
unregisterSender
(TcpSender sender) Unregister a TcpSender.protected TcpConnectionSupport
wrapConnection
(TcpConnectionSupport connectionArg) Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getComponentType, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.integration.ip.tcp.connection.ConnectionFactory
getConnection
-
Field Details
-
DEFAULT_REPLY_TIMEOUT
protected static final int DEFAULT_REPLY_TIMEOUT- See Also:
-
lifecycleMonitor
-
connections
-
connectionsMonitor
-
-
Constructor Details
-
AbstractConnectionFactory
public AbstractConnectionFactory(int port) -
AbstractConnectionFactory
-
-
Method Details
-
setApplicationEventPublisher
- Specified by:
setApplicationEventPublisher
in interfaceApplicationEventPublisherAware
-
getApplicationEventPublisher
-
setSocketAttributes
Sets socket attributes on the socket.- Parameters:
socket
- The socket.- Throws:
SocketException
- Any SocketException.
-
getSoTimeout
public int getSoTimeout()- Returns:
- the soTimeout
-
setSoTimeout
public void setSoTimeout(int soTimeout) - Parameters:
soTimeout
- the soTimeout to set, in milliseconds
-
getSoReceiveBufferSize
public int getSoReceiveBufferSize()- Returns:
- the soReceiveBufferSize
-
setSoReceiveBufferSize
public void setSoReceiveBufferSize(int soReceiveBufferSize) - Parameters:
soReceiveBufferSize
- the soReceiveBufferSize to set
-
getSoSendBufferSize
public int getSoSendBufferSize()- Returns:
- the soSendBufferSize
-
setSoSendBufferSize
public void setSoSendBufferSize(int soSendBufferSize) - Parameters:
soSendBufferSize
- the soSendBufferSize to set
-
isSoTcpNoDelay
public boolean isSoTcpNoDelay()- Returns:
- the soTcpNoDelay
-
setSoTcpNoDelay
public void setSoTcpNoDelay(boolean soTcpNoDelay) - Parameters:
soTcpNoDelay
- the soTcpNoDelay to set
-
getSoLinger
public int getSoLinger()- Returns:
- the soLinger
-
setSoLinger
public void setSoLinger(int soLinger) - Parameters:
soLinger
- the soLinger to set
-
isSoKeepAlive
public boolean isSoKeepAlive()- Returns:
- the soKeepAlive
-
setSoKeepAlive
public void setSoKeepAlive(boolean soKeepAlive) - Parameters:
soKeepAlive
- the soKeepAlive to set
-
getSoTrafficClass
public int getSoTrafficClass()- Returns:
- the soTrafficClass
-
setSoTrafficClass
public void setSoTrafficClass(int soTrafficClass) - Parameters:
soTrafficClass
- the soTrafficClass to set
-
setHost
Set the host; requires the factory to be stopped.- Parameters:
host
- the host.- Since:
- 5.0
-
getHost
- Returns:
- the host
-
setPort
public void setPort(int port) Set the port; requires the factory to be stopped.- Parameters:
port
- the port.- Since:
- 5.0
-
getPort
public int getPort()- Returns:
- the port
-
getListener
- Returns:
- the listener
-
getSender
- Returns:
- the first sender, if present.
-
getSenders
Return the list of senders.- Returns:
- the senders.
- Since:
- 5.4
-
getSerializer
- Returns:
- the serializer
-
getDeserializer
- Returns:
- the deserializer
-
getMapper
- Returns:
- the mapper
-
registerListener
Registers a TcpListener to receive messages after the payload has been converted from the input data.- Parameters:
listenerToRegister
- the TcpListener.
-
registerSender
Registers a TcpSender; for server sockets, used to provide connection information so a sender can be used to reply to incoming messages.- Parameters:
senderToRegister
- The sender
-
unregisterSender
Unregister a TcpSender.- Parameters:
sender
- the sender.- Returns:
- true if the sender was registered.
-
setTaskExecutor
- Parameters:
taskExecutor
- the taskExecutor to set
-
setDeserializer
- Parameters:
deserializer
- the deserializer to set
-
setSerializer
- Parameters:
serializer
- the serializer to set
-
setMapper
- Parameters:
mapper
- the mapper to set; defaults to aTcpMessageMapper
-
isSingleUse
public boolean isSingleUse()- Returns:
- the singleUse
-
setSingleUse
public void setSingleUse(boolean singleUse) If true, sockets created by this factory will be used once.- Parameters:
singleUse
- The singleUse to set.
-
setLeaveOpen
public void setLeaveOpen(boolean leaveOpen) If true, sockets created by this factory will be reused. Inverse ofsetSingleUse(boolean)
.- Parameters:
leaveOpen
- The keepOpen to set.- Since:
- 5.0
-
setInterceptorFactoryChain
public void setInterceptorFactoryChain(TcpConnectionInterceptorFactoryChain interceptorFactoryChain) -
setLookupHost
public void setLookupHost(boolean lookupHost) If true, DNS reverse lookup is done on the remote ip address. Default false: not all environments (e.g. Docker containers) perform reliable DNS resolution.- Parameters:
lookupHost
- the lookupHost to set
-
isLookupHost
public boolean isLookupHost()- Returns:
- the lookupHost
-
setNioHarvestInterval
public void setNioHarvestInterval(int nioHarvestInterval) How often we clean up closed NIO connections if soTimeout is 0. Ignored whensoTimeout > 0
because the clean up process is run as part of the timeout handling. Default 2000 milliseconds.- Parameters:
nioHarvestInterval
- The interval in milliseconds.
-
setSslHandshakeTimeout
public void setSslHandshakeTimeout(int sslHandshakeTimeout) Set the handshake timeout used when waiting for SSL handshake data; only applies to SSL connections, when using NIO.- Parameters:
sslHandshakeTimeout
- the timeout.- Since:
- 4.3.6
-
getSslHandshakeTimeout
- Returns:
- the handshake timeout.
- Since:
- 4.3.6
- See Also:
-
getDelayedReads
protected BlockingQueue<org.springframework.integration.ip.tcp.connection.AbstractConnectionFactory.PendingIO> getDelayedReads() -
getReadDelay
protected long getReadDelay() -
setReadDelay
public void setReadDelay(long readDelay) The delay (in milliseconds) before retrying a read after the previous attempt failed due to insufficient threads. Default 100.- Parameters:
readDelay
- the readDelay to set.
-
getLifecycleMonitor
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupport
Subclasses may implement this for initialization logic.- Overrides:
onInit
in classIntegrationObjectSupport
-
start
public void start()- Specified by:
start
in interfaceLifecycle
- Specified by:
start
in interfaceManageableLifecycle
-
getTaskExecutor
Creates a taskExecutor (if one was not provided).- Returns:
- The executor.
-
stop
public void stop()Stops the server.- Specified by:
stop
in interfaceLifecycle
- Specified by:
stop
in interfaceManageableLifecycle
-
wrapConnection
-
processNioSelections
protected void processNioSelections(int selectionCount, Selector selector, @Nullable ServerSocketChannel server, Map<SocketChannel, TcpNioConnection> connectionMap) Times out any expired connections then, ifselectionCount > 0
, processes the selected keys. Removes closed connections from the connections field, and from the connections parameter.- Parameters:
selectionCount
- Number of IO Events, if 0 we were probably woken up by a close.selector
- The selector.server
- The server socket channel.connectionMap
- Map of connections.
-
delayRead
-
doAccept
- Parameters:
selector
- The selector.server
- The server socket channel.now
- The current time.
-
addConnection
-
harvestClosedConnections
protected void harvestClosedConnections()Cleans up this.connections by removing any closed connections. -
isRunning
public boolean isRunning()- Specified by:
isRunning
in interfaceLifecycle
- Specified by:
isRunning
in interfaceManageableLifecycle
-
isActive
protected boolean isActive()- Returns:
- the active
-
setActive
protected void setActive(boolean active) - Parameters:
active
- the active to set
-
checkActive
protected void checkActive() -
getTcpSocketSupport
-
setTcpSocketSupport
-
getOpenConnectionIds
Returns a list of (currently) openTcpConnection
connection ids; allows, for example, broadcast operations to all open connections.- Returns:
- the list of connection ids.
-
closeConnection
Close a connection with the specified connection id.- Parameters:
connectionId
- the connection id.- Returns:
- true if the connection was closed.
-
toString
- Overrides:
toString
in classIntegrationObjectSupport
-