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 Details

    • DEFAULT_REPLY_TIMEOUT

      protected static final int DEFAULT_REPLY_TIMEOUT
      See Also:
    • lifecycleMonitor

      protected final Lock lifecycleMonitor
    • connections

      protected final Map<String,TcpConnectionSupport> connections
    • connectionsMonitor

      protected final Lock connectionsMonitor
  • Constructor Details

    • AbstractConnectionFactory

      public AbstractConnectionFactory(int port)
    • AbstractConnectionFactory

      public AbstractConnectionFactory(String host, int port)
  • Method Details

    • setApplicationEventPublisher

      public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
      Specified by:
      setApplicationEventPublisher in interface ApplicationEventPublisherAware
    • getApplicationEventPublisher

      @Nullable public ApplicationEventPublisher getApplicationEventPublisher()
    • setSocketAttributes

      protected void setSocketAttributes(Socket socket) throws SocketException
      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

      public void setHost(String host)
      Set the host; requires the factory to be stopped.
      Parameters:
      host - the host.
      Since:
      5.0
    • getHost

      public String 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

      @Nullable public TcpListener getListener()
      Returns:
      the listener
    • getSender

      @Nullable public TcpSender getSender()
      Returns:
      the first sender, if present.
    • getSenders

      public List<TcpSender> getSenders()
      Return the list of senders.
      Returns:
      the senders.
      Since:
      5.4
    • getSerializer

      public Serializer<?> getSerializer()
      Returns:
      the serializer
    • getDeserializer

      public Deserializer<?> getDeserializer()
      Returns:
      the deserializer
    • getMapper

      public TcpMessageMapper getMapper()
      Returns:
      the mapper
    • registerListener

      public void registerListener(TcpListener listenerToRegister)
      Registers a TcpListener to receive messages after the payload has been converted from the input data.
      Parameters:
      listenerToRegister - the TcpListener.
    • registerSender

      public 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.
      Parameters:
      senderToRegister - The sender
    • unregisterSender

      public boolean unregisterSender(TcpSender sender)
      Unregister a TcpSender.
      Parameters:
      sender - the sender.
      Returns:
      true if the sender was registered.
    • setTaskExecutor

      public void setTaskExecutor(Executor taskExecutor)
      Parameters:
      taskExecutor - the taskExecutor to set
    • setDeserializer

      public void setDeserializer(Deserializer<?> deserializer)
      Parameters:
      deserializer - the deserializer to set
    • setSerializer

      public void setSerializer(Serializer<?> serializer)
      Parameters:
      serializer - the serializer to set
    • setMapper

      public void setMapper(TcpMessageMapper mapper)
      Parameters:
      mapper - the mapper to set; defaults to a TcpMessageMapper
    • 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 of setSingleUse(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 when soTimeout > 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

      @Nullable protected Integer 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

      protected Object getLifecycleMonitor()
    • onInit

      protected void onInit()
      Description copied from class: IntegrationObjectSupport
      Subclasses may implement this for initialization logic.
      Overrides:
      onInit in class IntegrationObjectSupport
    • start

      public void start()
      Specified by:
      start in interface Lifecycle
      Specified by:
      start in interface ManageableLifecycle
    • getTaskExecutor

      protected Executor getTaskExecutor()
      Creates a taskExecutor (if one was not provided).
      Returns:
      The executor.
    • stop

      public void stop()
      Stops the server.
      Specified by:
      stop in interface Lifecycle
      Specified by:
      stop in interface ManageableLifecycle
    • wrapConnection

      protected TcpConnectionSupport wrapConnection(TcpConnectionSupport connectionArg)
    • processNioSelections

      protected void processNioSelections(int selectionCount, Selector selector, @Nullable ServerSocketChannel server, Map<SocketChannel,TcpNioConnection> connectionMap)
      Times out any expired connections then, if selectionCount > 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

      protected void delayRead(Selector selector, long now, SelectionKey key)
    • doAccept

      protected void doAccept(Selector selector, ServerSocketChannel server, long now)
      Parameters:
      selector - The selector.
      server - The server socket channel.
      now - The current time.
    • addConnection

      protected void addConnection(TcpConnectionSupport connection)
    • harvestClosedConnections

      protected void harvestClosedConnections()
      Cleans up this.connections by removing any closed connections.
    • isRunning

      public boolean isRunning()
      Specified by:
      isRunning in interface Lifecycle
      Specified by:
      isRunning in interface ManageableLifecycle
    • isActive

      protected boolean isActive()
      Returns:
      the active
    • setActive

      protected void setActive(boolean active)
      Parameters:
      active - the active to set
    • checkActive

      protected void checkActive()
    • getTcpSocketSupport

      protected TcpSocketSupport getTcpSocketSupport()
    • setTcpSocketSupport

      public void setTcpSocketSupport(TcpSocketSupport tcpSocketSupport)
    • getOpenConnectionIds

      public List<String> getOpenConnectionIds()
      Returns a list of (currently) open TcpConnection connection ids; allows, for example, broadcast operations to all open connections.
      Returns:
      the list of connection ids.
    • closeConnection

      public boolean closeConnection(String connectionId)
      Close a connection with the specified connection id.
      Parameters:
      connectionId - the connection id.
      Returns:
      true if the connection was closed.
    • toString

      public String toString()
      Overrides:
      toString in class IntegrationObjectSupport