Hoe connect je PostgreSQL met een Java-toepassing?
PostgreSQL met een Java-toepassing connecten
1. Meld je aan bij PaaS+, ga naar het dashboard en maak een nieuwe omgeving aan met de Java-toepassingsserver en de PostgreSQL-database.
2. Na het aanmaken van de omgeving ontvang je een e-mail met de toegangsgegevens voor je database (host, gebruikersnaam en wachtwoord).
3. Klik op de "Config" knop naast je toepassingsserver (Tomcat in ons geval) om toegang te krijgen tot de configuratiebestandsbeheerder en maak een nieuw bestand met de naam "mydb.cfg" aan in de map "/opt/tomcat/temp".
4. Voeg de volgende verbindingsgegevens toe aan het bestand mydb.cfg:
host=jdbc:postgresql://{host}/{db_name}
username={user}
password={password}
driver=org.postgresql.Driver
Hier zijn de vervangbare waarden:
{host} - link naar je DB-node zonder het protocolgedeelte
{db_name} - naam van de database (postgres in ons geval)
{user} en {password} - referenties van de beheerder-gebruiker
Let op: In de regel wordt voor productieomgevingen aanbevolen om een nieuwe beperkte gebruiker te definiëren via phpPgAdmin voor je toepassing, met toegang tot alleen de specifieke database. Voor dit voorbeeld zullen we echter de standaardgebruiker (webadmin met volledige beheerstoegang tot de server) en de database (postgres) gebruiken.
5. Hieronder de code van de applicatie die we in deze techblog gebruiken:
package connection;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DbManager {
public String date = new SimpleDateFormat("dd-MM-yyyy-HH-mm").format(new Date());
private final String createTable = "CREATE TABLE \"" + date + "\" (id INT, data VARCHAR(100));";
private static final int LoginTimeout = 10;
public DbManager() {
}
public Connection createConnection() throws IOException, ClassNotFoundException, SQLException {
Properties prop = new Properties();
System.out.println("\n\n=======================\nJDBC Connector Test " + date);
System.out.println("User home directory: " + System.getProperty("user.home"));
String host;
String username;
String password;
String driver;
try {
prop.load(new java.io.FileInputStream(System.getProperty("user.home") + "/mydb.cfg"));
host = prop.getProperty("host").toString();
username = prop.getProperty("username").toString();
password = prop.getProperty("password").toString();
driver = prop.getProperty("driver").toString();
} catch (IOException e) {
System.out.println("Unable to find mydb.cfg in " + System.getProperty("user.home") + "\n Please make sure that configuration file created in this folder.");
host = "Unknown HOST";
username = "Unknown USER";
password = "Unknown PASSWORD";
driver = "Unknown DRIVER";
}
System.out.println("host: " + host + "\nusername: " + username + "\npassword: " + password + "\ndriver: " + driver);
Class.forName(driver);
System.out.println("--------------------------");
System.out.println("DRIVER: " + driver);
System.out.println("Set Login Timeout: " + LoginTimeout);
DriverManager.setLoginTimeout(LoginTimeout);
Connection connection = DriverManager.getConnection(host, username, password);
System.out.println("CONNECTION: " + connection);
return connection;
}
public String runSqlStatement() {
String result = "";
try {
Statement statement = createConnection().createStatement();
System.out.println("SQL query: " + createTable);
statement.execute(createTable);
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(DbManager.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Exception occurred: " + ex);
result = ex.getMessage();
} catch (SQLException ex) {
ex.printStackTrace();
result = ex.getMessage();
}
return result;
}
}
6. Rol ons voorbeeldprogramma uit op je Tomcat-server. Vanwege de verschillende versies van servlet-specificaties die worden ondersteund door Tomcat 9 en Tomcat 10, hebben we de respectieve toepassingen voorbereid:
Tomcat 9: https://download.jelastic.com/public.php?service=files&t=18753849900d2461b3162bd4355f834d&download
Tomcat 10: https://download.jelastic.com/public.php?service=files&t=503e9768ee573fd452cec8a34a2215b2&download
Let op: Onze voorbeeldtoepassing bevat al de jdbc-connector voor toegang tot de PostgreSQL-database. Voor andere projecten moet je deze mogelijk handmatig uploaden naar de map webapps/{app_context}/WEB-INF/lib op je toepassingsserver (vergeet niet de server opnieuw op te starten om de wijzigingen toe te passen).
7. Na het uitrollen van het voorbeeldprogramma klik je op Open in Browser naast je applicatieserver.
8. Klik op ''open in browser'' en vervolgens op ''Create test table in your database''.
Je verzoek wordt verwerkt. Er komt vanzelf een voltooid bericht in beeld.
9. Ga de database in via phpPgAdmin om te controleren of er een nieuwe tabel is aangemaakt (de toegangsgevens worden verstrekt via de e-mail die wordt beschreven in de tweede stap van deze handleiding).
Zoals je kunt zien is er succesvol een nieuwe tabel aangemaakt en toegevoegd aan onze Java-toepassing (vernoemd naar de datum en tijd van het aanmaken). De verbinding is succesvol aangemaakt!
Probeer Previder PaaS+ 30 dagen gratis! Maak direct jouw PaaS 30 dagen free trial account aan.
Maak direct je account aan en probeer Previder PaaS+ 30 dagen gratis!
- Ongelimiteerd aantal gebruikers
- Geen creditcard vereist
- 30 dagen volledige functionaliteit
- Binnen 1 minuut aan de slag
Maak gratis account aan
Meer weten over ons PaaS+ platform?
Neem contact op met jouw accountmanager of neem contact op via onze contactpagina.
Lees hier alles over:
- Dienst: Platfom as a Service
- Dienst: Kubernetes as a Service
- Markt: IT oplossingen voor ontwikkelaars
- Blog: Wat is PaaS?
- Blog: Wat is Kubernetes?
- Blog: Platform as a Service van Previder vs. Internationale hyperscalers
- Techblog: Kubernetes (k8s)
- Techblog: Grafana kubernetes dashboard
- Techblog: BitNinja: security add-on op Previder PaaS+
- Kubernetes website: Kubernetes
- BitNinja website: BitNinja