Class DefaultSftpSessionFactory

java.lang.Object
org.springframework.integration.sftp.session.DefaultSftpSessionFactory
All Implemented Interfaces:
SessionFactory<com.jcraft.jsch.ChannelSftp.LsEntry>, SharedSessionCapable

public class DefaultSftpSessionFactory extends Object implements SessionFactory<com.jcraft.jsch.ChannelSftp.LsEntry>, SharedSessionCapable
Factory for creating SftpSession instances.
Since:
2.0
Author:
Josh Long, Mario Gray, Oleg Zhurakousky, Gunnar Hillert, Gary Russell, David Liu, Pat Turner, Artem Bilan
  • Constructor Details

    • DefaultSftpSessionFactory

      public DefaultSftpSessionFactory()
    • DefaultSftpSessionFactory

      public DefaultSftpSessionFactory(boolean isSharedSession)
      Parameters:
      isSharedSession - true if the session is to be shared.
    • DefaultSftpSessionFactory

      public DefaultSftpSessionFactory(com.jcraft.jsch.JSch jsch, boolean isSharedSession)
      Intended for use in tests so the jsch can be mocked.
      Parameters:
      jsch - The jsch instance.
      isSharedSession - true if the session is to be shared.
  • Method Details

    • setHost

      public void setHost(String host)
      The url of the host you want connect to. This is a mandatory property.
      Parameters:
      host - The host.
      See Also:
      • JSch.getSession(String, String, int)
    • setPort

      public void setPort(int port)
      The port over which the SFTP connection shall be established. If not specified, this value defaults to 22. If specified, this properties must be a positive number.
      Parameters:
      port - The port.
      See Also:
      • JSch.getSession(String, String, int)
    • setUser

      public void setUser(String user)
      The remote user to use. This is a mandatory property.
      Parameters:
      user - The user.
      See Also:
      • JSch.getSession(String, String, int)
    • setPassword

      public void setPassword(String password)
      The password to authenticate against the remote host. If a password is not provided, then a privateKey is mandatory. Not allowed if userInfo is provided - the password is obtained from that object.
      Parameters:
      password - The password.
      See Also:
      • Session.setPassword(String)
    • setKnownHostsResource

      public void setKnownHostsResource(Resource knownHosts)
      Specifies the filename that will be used for a host key repository. The file has the same format as OpenSSH's known_hosts file.
      Parameters:
      knownHosts - the resource for known hosts.
      Since:
      5.2.5
      See Also:
      • JSch.setKnownHosts(java.io.InputStream)
    • setPrivateKey

      public void setPrivateKey(Resource privateKey)
      Allows you to set a Resource, which represents the location of the private key used for authenticating against the remote host. If the privateKey is not provided, then the password property is mandatory (or userInfo that returns a password.
      Parameters:
      privateKey - The private key.
      See Also:
      • JSch.addIdentity(String)
      • JSch.addIdentity(String, String)
    • setPrivateKeyPassphrase

      public void setPrivateKeyPassphrase(String privateKeyPassphrase)
      The password for the private key. Optional. Not allowed if userInfo is provided - the passphrase is obtained from that object.
      Parameters:
      privateKeyPassphrase - The private key passphrase.
      See Also:
      • JSch.addIdentity(String, String)
    • setSessionConfig

      public void setSessionConfig(Properties sessionConfig)
      Using Properties, you can set additional configuration settings on the underlying JSch Session.
      Parameters:
      sessionConfig - The session configuration properties.
      See Also:
      • Session.setConfig(Properties)
    • setProxy

      public void setProxy(com.jcraft.jsch.Proxy proxy)
      Allows for specifying a JSch-based Proxy. If set, then the proxy object is used to create the connection to the remote host.
      Parameters:
      proxy - The proxy.
      See Also:
      • Session.setProxy(Proxy)
    • setSocketFactory

      public void setSocketFactory(com.jcraft.jsch.SocketFactory socketFactory)
      Allows you to pass in a SocketFactory. The socket factory is used to create a socket to the target host. When a Proxy is used, the socket factory is passed to the proxy. By default plain TCP sockets are used.
      Parameters:
      socketFactory - The socket factory.
      See Also:
      • Session.setSocketFactory(SocketFactory)
    • setTimeout

      public void setTimeout(Integer timeout)
      The timeout property is used as the socket timeout parameter, as well as the default connection timeout. Defaults to 0, which means, that no timeout will occur.
      Parameters:
      timeout - The timeout.
      See Also:
      • Session.setTimeout(int)
    • setClientVersion

      public void setClientVersion(String clientVersion)
      Allows you to set the client version property. It's default depends on the underlying JSch version but it will look like SSH-2.0-JSCH-0.1.45
      Parameters:
      clientVersion - The client version.
      See Also:
      • Session.setClientVersion(String)
    • setHostKeyAlias

      public void setHostKeyAlias(String hostKeyAlias)
      Sets the host key alias, used when comparing the host key to the known hosts list.
      Parameters:
      hostKeyAlias - The host key alias.
      See Also:
      • Session.setHostKeyAlias(String)
    • setServerAliveInterval

      public void setServerAliveInterval(Integer serverAliveInterval)
      Sets the timeout interval (milliseconds) before a server alive message is sent, in case no message is received from the server.
      Parameters:
      serverAliveInterval - The server alive interval.
      See Also:
      • Session.setServerAliveInterval(int)
    • setServerAliveCountMax

      public void setServerAliveCountMax(Integer serverAliveCountMax)
      Specifies the number of server-alive messages, which will be sent without any reply from the server before disconnecting. If not set, this property defaults to 1.
      Parameters:
      serverAliveCountMax - The server alive count max.
      See Also:
      • Session.setServerAliveCountMax(int)
    • setEnableDaemonThread

      public void setEnableDaemonThread(Boolean enableDaemonThread)
      If true, all threads will be daemon threads. If set to false, normal non-daemon threads will be used. This property will be set on the underlying Session using Session.setDaemonThread(boolean). There, this property will default to false, if not explicitly set.
      Parameters:
      enableDaemonThread - true to enable a daemon thread.
      See Also:
      • Session.setDaemonThread(boolean)
    • setUserInfo

      public void setUserInfo(com.jcraft.jsch.UserInfo userInfo)
      Provide a UserInfo which exposes control over dealing with new keys or key changes. As Spring Integration will not normally allow user interaction, the implementation must respond to Jsch calls in a suitable way.

      Jsch calls UserInfo.promptYesNo(String) when connecting to an unknown host, or when a known host's key has changed (see setKnownHostsResource(Resource) knownHosts}). Generally, it should return false as returning true will accept all new keys or key changes.

      If no UserInfo is provided, the behavior is defined by allowUnknownKeys.

      If setPassword is invoked with a non-null password, it will override any password in the supplied UserInfo.

      NOTE: When this is provided, the password and passphrase are not allowed because those values will be obtained from the UserInfo.

      Parameters:
      userInfo - the UserInfo.
      Since:
      4.1.7
      See Also:
      • Session.setUserInfo(com.jcraft.jsch.UserInfo)
    • setAllowUnknownKeys

      public void setAllowUnknownKeys(boolean allowUnknownKeys)
      When no UserInfo has been provided, set to true to unconditionally allow connecting to an unknown host or when a host's key has changed (see knownHosts). Default false (since 4.2). Set to true if a knownHosts file is not provided.
      Parameters:
      allowUnknownKeys - true to allow connecting to unknown hosts.
      Since:
      4.1.7
    • setChannelConnectTimeout

      public void setChannelConnectTimeout(Duration timeout)
      Set the connection timeout.
      Parameters:
      timeout - the timeout to set.
      Since:
      5.2
    • getSession

      public SftpSession getSession()
      Specified by:
      getSession in interface SessionFactory<com.jcraft.jsch.ChannelSftp.LsEntry>
    • isSharedSession

      public final boolean isSharedSession()
      Specified by:
      isSharedSession in interface SharedSessionCapable
      Returns:
      true if this factory uses a shared session.
    • resetSharedSession

      public void resetSharedSession()
      Description copied from interface: SharedSessionCapable
      Resets the shared session so the next #getSession() will return a session using a new connection.
      Specified by:
      resetSharedSession in interface SharedSessionCapable