วิธีเชื่อมต่อ PostgreSQL กับ Java Application
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
วัตถุประสงค์
บทความนี้อธิบายการใช้งาน วิธีเชื่อมต่อ PostgreSQL กับ Java Application บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง
ก่อนเริ่มดำเนินการ
- เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
- ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
- สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production
PostgreSQL เป็น Database SQL แบบโอเพนซอร์สที่มีประสิทธิภาพพร้อมด้วยโครงสร้างเชิงสัมพันธ์เชิงวัตถุ และคุณสมบัติที่แข็งแกร่งมากมายเพื่อให้มั่นใจถึงประสิทธิภาพและความน่าเชื่อถือ ในบทนี้เราจะแสดงวิธีเชื่อมต่อ Database PostgreSQL กับ Application Java Host เข้ากับ Ruk-Com Cloud
1. เข้าสู่ระบบเข้าสู่ Dashboard Ruk-Com Cloudสร้าง Environmentใหม่ ที่เป็น Server Java Application และเลือก Database PostgreSQL

2. หลังจากสร้างคุณจะได้รับอีเมลพร้อมข้อมูลรับรองการเข้าถึง Database (Host การเข้าสู่ระบบและรหัสผ่าน)

3. คลิกปุ่ม Config ถัดจาก Application Server ของคุณ (ในกรณีของเราคือ Tomcat) เพื่อเข้าถึงConfiguration File Managerและสร้างไฟล์mydb.cfgใหม่ในโฟลเดอร์ /opt/tomcat/temp

4. ระบุรายละเอียดการเชื่อมต่อต่อไปนี้ในไฟล์ mydb.cfg:
host=jdbc:postgresql://{host}/{db_name}
username={user}
password={password}
driver=org.postgresql.Driver

และส่วนนี้
- {host} - ลิงก์ไปยัง NodeDatabase โดยไม่มีส่วน Protocol
- {db_name} - ชื่อของ Database (ในกรณีของเรา คือ postgres)
- {user} และ {password} – ข้อมูลรับรองผู้ใช้ของแอดมิน
หมายเหตุ :
โดยปกติสำหรับการใช้งานจริงขอแนะนำให้กำหนดผู้ใช้ที่ถูกจำกัดสิทธิ์ใหม่ผ่าน phpPgAdmin สำหรับ Application ด้วยเข้าถึง Database เฉพาะได้เท่านั้น
อย่างไรก็ตามสำหรับตัวอย่างนี้เราจะใช้ user ที่เป็นค่าเริ่มต้น (เช่น webadmin ที่มีสิทธิ์เข้าถึง Server ระดับผู้ดูแลระบบเต็มรูปแบบ) และ Database (postgres)
5. ด้านล่างนี้คุณจะเห็น Code ของ Application ที่ใช้ในบทการสอนนี้
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. สามารถใช้ Code ดังต่อไปนี้ deploy เพื่อทดสอบได้
https://node.example.ruk-com.cloud/public.php?service=files&t=18753849900d2461b3162bd4355f834d&download

หมายเหตุ : Application ตัวอย่างของเรามี Libraryjdbc-ตัวเชื่อมต่อสำหรับการเชื่อมต่อ Database PostgreSQL อยู่แล้ว อย่างไรก็ตามสำหรับโปรเจ็กต์อื่น ๆ คุณอาจต้องอัปโหลด Libary ไปยังโฟลเดอร์ webapps/{app_context}/WEB-INF/lib บน Server ของคุณด้วยตนเอง (อย่าลืม RestartServer ในภายหลังเพื่อบันทึกการเปลี่ยนแปลงค่า)
7. หลังจากติดตั้งสำเร็จให้คลิก Open in Browser ที่ถัดจาก Application Server

8. ภายในแท็บ Browser ที่เปิดอยู่ให้คลิกปุ่ม Create test table in your database

คำขอของคุณจะได้รับการดำเนินการในไม่ช้าโดยจะแสดงข้อความผลลัพธ์ที่ได้

9. มาเข้าถึง Database ของเราผ่านphpPgAdmin.phpเพื่อให้แน่ใจว่ามีการสร้างตารางใหม่ (ข้อมูลรับรองการเข้าถึงอยู่ในอีเมลที่อธิบายไว้ในขั้นตอนที่สองของคู่มือนี้)

อย่างที่คุณเห็น ตารางใหม่ (ตั้งชื่อตามวันที่และเวลาที่สร้าง) ได้รับการเพิ่มแล้วโดย Application Java ของเรา สร้างการเชื่อมต่อสำเร็จแล้ว! ลองใช้ link ผู้ให้บริการรักคอมที่มีอยู่ทั่วโลกสักอันดูสิ
