=======
여기에서 이어짐
https://dodomain93.tistory.com/148
postgresql 설치와 DB 계정과 테이블 생성
1. rocky linux 9 버전용 repo 설치[app@test11 ~]$ sudo dnf install https://ftp.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm 2. postgesql -server 버전 확인 및 패키지 설치 : 17까지 설치가 되는걸
dodomain93.tistory.com
=======
1. JDBC Driver 파일 다운로드
https://jdbc.postgresql.org/download/
Download | pgJDBC
Download Binary JAR file downloads of the JDBC driver are available here and the current version with Maven Repository. Because Java is platform neutral, it is a simple process of just downloading the appropriate JAR file and dropping it into your classpat
jdbc.postgresql.org

2. /sw/wildfly/modules/system/layers/base/com 경로에 postgresql/main 경로 생성
[app@test11 ~]$ mkdir -p /sw/wildfly/modules/system/layers/base/com/postgresql/main
3. 다운로드 받은 드라이버 파일을 ${JBOSS_HOME}/modules/system/layers/base/com/postgresql/main 경로에 위치
[app@test11 ~]$ mv ./postgresql-42.7.10.jar /sw/wildfly/modules/system/layers/base/com/postgresql/main
4. module.xml 작성
[app@test11 ~]$ vi /sw/wildfly/modules/system/layers/base/com/postgresql/main/module.xml
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.postgresql">
<resources>
<resource-root path="postgresql-42.7.10.jar"/>
</resources>
<dependencies>
<module name="javaee.api"/>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
※ 최종결과
[app@test11 ~]$ tree /sw/wildfly/modules/system/layers/base/com/postgresql
/sw/wildfly/modules/system/layers/base/com/postgresql
└── main
├── module.xml
└── postgresql-42.7.10.jar
1 directory, 2 files

5. wildfly 내에 JDBC 드라이버 추가
[app@test11 bin]$ ./jboss-cli.sh
=================================================
...
=================================================
[standalone@192.168.56.101:9990 /] /subsystem=datasources/jdbc-driver=postgreDriver:add(driver-name=postgreDriver,driver-module-name=com.postgresql)
{"outcome" => "success"}
6. 생성한 드라이버를 바탕으로 datasource 생성
[standalone@192.168.56.101:9990 /] data-source add --name=postgreDS --jndi-name=java:/postgreDS --driver-name=postgreDriver --connection-url=jdbc:postgresql://192.168.56.104:5432/appdb --user-name=appuser --password=1234! --check-valid-connection-sql="select 1" --validate-on-match=false --background-validation=true --background-validation-millis=60000 --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter

※ Connection URL 관련 정리
1️⃣ 전체 구조
구성 요소:
| jdbc | Java Database Connectivity |
| postgresql | 사용할 DBMS |
| HOST | DB 서버 IP 또는 hostname |
| PORT | DB 포트 |
| DATABASE | 접속할 데이터베이스 |
2️⃣ 실제 예시 해석
| jdbc | JDBC 프로토콜 |
| postgresql | PostgreSQL 드라이버 사용 |
| 192.168.56.104 | DB 서버 IP |
| 5432 | PostgreSQL 기본 포트 |
| appdb | 접속할 DB |
7. connection test 페이지 호출

[standalone-ha.xml 상 내용]
<datasource jndi-name="java:/postgreDS" pool-name="postgreDS">
<connection-url>jdbc:postgresql://192.168.56.104:5432/appdb</connection-url>
<driver>postgreDriver</driver>
<security>
<user-name>appuser</user-name>
<password>1234!</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
<check-valid-connection-sql>select 1</check-valid-connection-sql>
<validate-on-match>false</validate-on-match>
<background-validation>true</background-validation>
<background-validation-millis>60000</background-validation-millis>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="postgreDriver" module="com.postgresql"/>
</drivers>
[테스트용 JSP]
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.DataSource" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PostgreSQL Member 조회</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 30px;
}
h2 {
margin-bottom: 15px;
}
table {
border-collapse: collapse;
width: 900px;
}
th, td {
border: 1px solid #999;
padding: 8px 12px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
.error {
color: red;
font-weight: bold;
}
.info {
margin-bottom: 15px;
color: #444;
}
</style>
</head>
<body>
<h2>member 테이블 조회</h2>
<div class="info">JNDI: java:/postgreDS</div>
<%
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/postgreDS");
conn = ds.getConnection();
String sql = "SELECT id, name, dept, email, created_at FROM member ORDER BY id";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
%>
<table>
<tr>
<th>ID</th>
<th>NAME</th>
<th>DEPT</th>
<th>EMAIL</th>
<th>CREATED_AT</th>
</tr>
<%
while (rs.next()) {
%>
<tr>
<td><%= rs.getInt("id") %></td>
<td><%= rs.getString("name") %></td>
<td><%= rs.getString("dept") %></td>
<td><%= rs.getString("email") %></td>
<td><%= rs.getTimestamp("created_at") %></td>
</tr>
<%
}
%>
</table>
<%
} catch (Exception e) {
%>
<p class="error">에러 발생: <%= e.getClass().getName() %> - <%= e.getMessage() %></p>
<%
e.printStackTrace();
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) {}
try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}
try { if (conn != null) conn.close(); } catch (Exception e) {}
}
%>
</body>
</html>'WAS > JBoss&WildFly' 카테고리의 다른 글
| http method 제한 (0) | 2026.03.16 |
|---|---|
| Session Timeout 설정 (0) | 2026.03.16 |
| [JBoss EAP 7] 세션 병렬 처리 관련 지원 ISPN000136/ISPN000299 (1) | 2026.03.10 |
| [JBoss 7] access log 설정 (0) | 2026.03.10 |
| Reverse Proxy 설정 (0) | 2026.03.09 |