org.eclipse.jgit.transport

## Class SshSessionFactory

- java.lang.Object
- - org.eclipse.jgit.transport.SshSessionFactory

Direct Known Subclasses:
  JschConfigSessionFactory

    public abstract class SshSessionFactory
    extends Object

Creates and destroys SSH connections to a remote system.

Different implementations of the session factory may be used to control communicating with the end-user as well as reading their personal SSH configuration settings, such as known hosts and private keys.

A `RemoteSession` must be returned to the factory that created it. Callers are encouraged to retain the SshSessionFactory for the duration of the period they are using the Session.

### Constructor Summary

Constructors
Constructor and Description
`SshSessionFactory()`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`static SshSessionFactory` `getInstance()` Get the currently configured JVM-wide factory.
`abstract RemoteSession` `getSession(URIish uri, CredentialsProvider credentialsProvider, FS fs, int tms)` Open (or reuse) a session to a host.
`void` `releaseSession(RemoteSession session)` Close (or recycle) a session to a host.
`static void` `setInstance(SshSessionFactory newFactory)` Change the JVM-wide factory to a different implementation.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### SshSessionFactory

    public SshSessionFactory()

### Method Detail

#### getInstance

    public static SshSessionFactory getInstance()

Get the currently configured JVM-wide factory.

A factory is always available. By default the factory will read from the user's `$HOME/.ssh` and assume OpenSSH compatibility.

Returns:
  factory the current factory for this JVM.

#### setInstance

    public static void setInstance(SshSessionFactory newFactory)

Change the JVM-wide factory to a different implementation.

Parameters:
  `newFactory` - factory for future sessions to be created through. If null the default factory will be restored.s

#### getSession

    public abstract RemoteSession getSession(URIish uri,
                                             CredentialsProvider credentialsProvider,
                                             FS fs,
                                             int tms)
                                      throws TransportException

Open (or reuse) a session to a host.

A reasonable UserInfo that can interact with the end-user (if necessary) is installed on the returned session by this method.

The caller must connect the session by invoking `connect()` if it has not already been connected.

Parameters:
  `uri` - URI information about the remote host
  `credentialsProvider` - provider to support authentication, may be null.
  `fs` - the file system abstraction which will be necessary to perform certain file system operations.
  `tms` - Timeout value, in milliseconds.
Returns:
  a session that can contact the remote host.
Throws:
  `TransportException` - the session could not be created.

#### releaseSession

    public void releaseSession(RemoteSession session)

Close (or recycle) a session to a host.

Parameters:
  `session` - a session previously obtained from this factory's `getSession(URIish, CredentialsProvider, FS, int)` method.