VOOZH about

URL: https://www.cdata.com/kb/tech/postgresql-jdbc-jetty.rst

⇱ Connect to PostgreSQL Data from a Connection Pool in Jetty


Connect to PostgreSQL Data from a Connection Pool in Jetty

👁 Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
The PostgreSQL JDBC Driver supports connection pooling: This article shows how to connect faster to PostgreSQL data from Web apps in Jetty.

The CData JDBC driver for PostgreSQL is easy to integrate with Java Web applications. This article shows how to efficiently connect to PostgreSQL data in Jetty by configuring the driver for connection pooling. You will configure a JNDI resource for PostgreSQL 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 PostgreSQL data source at the level of the Web app, in WEB-INF\jetty-env.xml.

    <Configure id='postgresqldemo' class="org.eclipse.jetty.webapp.WebAppContext">
     <New id="postgresqldemo" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg><Ref refid="postgresqldemo"/></Arg>
     <Arg>jdbc/postgresqldb</Arg>
     <Arg>
     <New class="cdata.jdbc.postgresql.PostgreSQLDriver">
     <Set name="url">jdbc:postgresql:</Set>
     <Set name="User">postgres</Set>
     <Set name="Password">admin</Set>
     <Set name="Database">postgres</Set>
     <Set name="Server">127.0.0.1</Set>
     <Set name="Port">5432</Set>
     </New>
     </Arg>
     </New>
    </Configure>
    

    To connect to PostgreSQL, set the Server, Port (the default port is 5432), and Database connection properties and set the User and Password you wish to use to authenticate to the server. If the Database property is not specified, the data provider connects to the user's default database.

    SSH Connectivity for PostgreSQL

    You can use SSH (Secure Shell) to authenticate with PostgreSQL, whether the instance is hosted on-premises or in supported cloud environments. SSH authentication ensures that access is encrypted (as compared to direct network connections).

    SSH Connections to PostgreSQL in Password Auth Mode

    To connect to PostgreSQL via SSH in Password Auth mode, set the following connection properties:

    • User: PostgreSQL User name
    • Password: PostgreSQL Password
    • Database: PostgreSQL database name
    • Server: PostgreSQL Server name
    • Port: PostgreSQL port number like 3306
    • UserSSH: "true"
    • SSHAuthMode: "Password"
    • SSHPort: SSH Port number
    • SSHServer: SSH Server name
    • SSHUser: SSH User name
    • SSHPassword: SSH Password

    SSH Connections to PostgreSQL in Public Key Auth Mode

    To connect to PostgreSQL via SSH in Password Auth mode, set the following connection properties:

    • User: PostgreSQL User name
    • Password: PostgreSQL Password
    • Database: PostgreSQL database name
    • Server: PostgreSQL Server name
    • Port: PostgreSQL port number like 3306
    • UserSSH: "true"
    • SSHAuthMode: "Public_Key"
    • SSHPort: SSH Port number
    • SSHServer: SSH Server name
    • SSHUser: SSH User name
    • SSHClientCret: the path for the public key certificate file
  4. Configure the resource in the Web.xml:

     jdbc/postgresqldb
     javax.sql.DataSource
     Container
    
    
  5. You can then access PostgreSQL with a lookup to java:comp/env/jdbc/postgresqldb:

    InitialContext ctx = new InitialContext();
    DataSource mypostgresql = (DataSource)ctx.lookup("java:comp/env/jdbc/postgresqldb");
    

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.