Connect to SFTP Data from a Connection Pool in Jetty

Ready to get started?

Download for a free trial:

Download Now

Learn more:

SFTP JDBC Driver

An easy-to-use database-like interface for Java based applications and reporting tools access to remote files and directories.



The SFTP JDBC Driver supports connection pooling: This article shows how to connect faster to SFTP data from Web apps in Jetty.

The CData JDBC driver for SFTP is easy to integrate with Java Web applications. This article shows how to efficiently connect to SFTP data in Jetty by configuring the driver for connection pooling. You will configure a JNDI resource for SFTP in Jetty.

Configure the JDBC Driver for Salesforce as a JNDI Data Source

Follow the steps below to connect to Salesforce from Jetty.

  1. Enable the JNDI module for your Jetty base. The following command enables JNDI from the command-line:

    java -jar ../start.jar --add-to-startd=jndi
  2. Add the CData and license file, located in the lib subfolder of the installation directory, into the lib subfolder of the context path.
  3. Declare the resource and its scope. Enter the required connection properties in the resource declaration. This example declares the SFTP data source at the level of the Web app, in WEB-INF\jetty-env.xml.

    <Configure id='sftpdemo' class="org.eclipse.jetty.webapp.WebAppContext"> <New id="sftpdemo" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg><Ref refid="sftpdemo"/></Arg> <Arg>jdbc/sftpdb</Arg> <Arg> <New class="cdata.jdbc.sftp.SFTPDriver"> <Set name="url">jdbc:sftp:</Set> <Set name="RemoteHost">MyFTPServer</Set> </New> </Arg> </New> </Configure>

    SFTP can be used to transfer files to and from SFTP servers using the SFTP Protocol. To connect, specify the RemoteHost;. service uses the User and Password and public key authentication (SSHClientCert). Choose an SSHAuthMode and specify connection values based on your selection.

    Set the following connection properties to control the relational view of the file system:

    • RemotePath: Set this to the current working directory.
    • TableDepth: Set this to control the depth of subfolders to report as views.
    • FileRetrievalDepth: Set this to retrieve files recursively and list them in the Root table.
    Stored Procedures are available to download files, upload files, and send protocol commands. See gdatamodel for more on using SQL to interact with the server.

  4. Configure the resource in the Web.xml:

    jdbc/sftpdb javax.sql.DataSource Container
  5. You can then access SFTP with a lookup to java:comp/env/jdbc/sftpdb: InitialContext ctx = new InitialContext(); DataSource mysftp = (DataSource)ctx.lookup("java:comp/env/jdbc/sftpdb");

More Jetty Integration

The steps above show how to configure the driver in a simple connection pooling scenario. For more use cases and information, see the Working with Jetty JNDI chapter in the Jetty documentation.