본문 바로가기

WAS/JBoss&WildFly

jboss - cubrid 연동

728x90

===

https://dodomain93.tistory.com/156

 

cubrid DB 설치

cubrid는 어디 DB인가 했는데 opensource DB에 국산제품이라 하더라.일단 한 번 설치나 해보고 JBoss에 연결해보자.connection test 목적을 위해서 구성중이니, 여기에 적힌게 절대적인건 아니다.. 1. cubrid 설

dodomain93.tistory.com

===

 

1. ${JBOSS_HOME}/modules/system/layers/base 경로에

com/cubrid/main 경로를 생성

[app@test11 base] mkdir -p /sw/jboss-eap-7.4/modules/system/layers/base/com/cubrid/main

 

2. ${JBOSS_HOME}/modules/system/layers/base/com/cubrid/main 경로에 module.xml 작성

<?xml version='1.0' encoding='UTF-8'?>

<module xmlns="urn:jboss:module:1.1" name="com.cubrid">
    <resources>
        <resource-root path="JDBC-11.3-latest-cubrid.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

 

3. /sw/jboss-eap-7.4/modules/system/layers/base/com/cubrid/main 경로에 cubrid JDBC Driver 위치

 

4. /sw/domains/${INSTANCE}/bin/jboss-cli.sh 실행 하여 JDBC Driver 설정

[app@test11 bin]$ ./jboss-cli.sh 
================================================
JBOSS_HOME=/sw/jboss-eap-7.4
DOMAIN_BASE=/sw/domains
SERVER_NAME=node11
CONFIG_FILE=standalone-ha.xml
BIND_ADDR=192.168.56.101
PORT_OFFSET=0
CONTROLLER=192.168.56.101:9991
jboss.node.name=node11
================================================
[standalone@192.168.56.101:9990 /] 

[ex. /subsystem=datasources/jdbc-driver=cubridDS:add(driver-name=${이름은 알아보기 쉽게},driver-module-name=${module.xml에 적힌 name= 을 적을 것},driver-class-name=${JDBC Driver 벤더 별 class 확인})]
[standalone@192.168.56.101:9990 /] /subsystem=datasources/jdbc-driver=cubridDS:add(driver-name=cubridDS,driver-module-name=com.cubrid,driver-class-name=cubrid.jdbc.driver.CUBRIDDriver)

 

5. /sw/domains/${INSTANCE}/bin/jboss-cli.sh 실행 하여 data source 설정

data-source add --name=${이름 아무거나} --jndi-name=java:/${JNDI명} --driver-name=${방금생성한 Driver}  --connection-url=jdbc:cubrid:${IP}:33000:${cubrid DB이름}:::?charset=utf-8  --user-name=${DB ID} --password=${DB 암호} --background-validation=true --validate-on-match=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker --check-valid-connection-sql="select 1" --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter
[standalone@192.168.56.101:9990 /] data-source add --name=cubridDS --jndi-name=java:/cubridDS --driver-name=cubridDS  --connection-url=jdbc:cubrid:192.168.56.110:33000:cub_testdb:::?charset=utf-8  --user-name=dba --password=1234 --background-validation=true --validate-on-match=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker --check-valid-connection-sql="select 1" --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter

 

※ 대부분의 블로그에서는 validate-on-match = true, background-validation = false로 해두는 거 같다.

cubrid는 JBoss 상에서 공식적으로 tested 된 DB는 아니기에 정답은 없는 거 같다.

 

6. 테스트 커넥션 보내보기

[standalone@192.168.56.101:9990 /] data-source test-connection-in-pool --name=cubridDS
true

 

7. 테스트 페이지 호출

 

[app@test11 cubrid]$ cat test.jsp 

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.sql.DataSource" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>CUBRID JDBC Test</title>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        table { border-collapse: collapse; margin-top: 15px; width: 100%; }
        th, td { border: 1px solid #999; padding: 8px; text-align: left; }
        th { background: #f0f0f0; }
        .ok { color: blue; font-weight: bold; }
        .fail { color: red; font-weight: bold; }
        pre { background: #f7f7f7; padding: 10px; border: 1px solid #ddd; }
    </style>
</head>
<body>
<h2>CUBRID + JBoss JDBC 연동 테스트</h2>

<%
Connection conn = null;
PreparedStatement pstmt = null;
Statement stmt = null;
ResultSet rs = null;

try {
    Context initCtx = new InitialContext();
    DataSource ds = (DataSource) initCtx.lookup("java:/cubridDS");

    conn = ds.getConnection();

    out.println("<p class='ok'>[OK] DataSource lookup 및 DB 연결 성공</p>");
    out.println("<p>Connection Class : " + conn.getClass().getName() + "</p>");

    // 현재 시간 조회
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT SYS_DATETIME FROM db_root");

    if (rs.next()) {
        out.println("<p>DB 현재시간 : " + rs.getString(1) + "</p>");
    }
    rs.close();
    stmt.close();

    // 테스트 테이블 조회
    String sql = "SELECT ID, TITLE, CONTENT, REG_DATE " +
                 "FROM TB_JBOSS_CUBRID_TEST " +
                 "ORDER BY ID DESC";

    pstmt = conn.prepareStatement(sql);
    rs = pstmt.executeQuery();

    out.println("<h3>TB_JBOSS_CUBRID_TEST 조회 결과</h3>");
    out.println("<table>");
    out.println("<tr><th>ID</th><th>TITLE</th><th>CONTENT</th><th>REG_DATE</th></tr>");

    while (rs.next()) {
        out.println("<tr>");
        out.println("<td>" + rs.getInt("ID") + "</td>");
        out.println("<td>" + rs.getString("TITLE") + "</td>");
        out.println("<td>" + rs.getString("CONTENT") + "</td>");
        out.println("<td>" + rs.getString("REG_DATE") + "</td>");
        out.println("</tr>");
    }

    out.println("</table>");

} catch (Exception e) {
    out.println("<p class='fail'>[FAIL] 오류 발생</p>");
    out.println("<pre>");
    e.printStackTrace(new java.io.PrintWriter(out));
    out.println("</pre>");
} finally {
    try { if (rs != null) rs.close(); } catch (Exception ignore) {}
    try { if (pstmt != null) pstmt.close(); } catch (Exception ignore) {}
    try { if (stmt != null) stmt.close(); } catch (Exception ignore) {}
    try { if (conn != null) conn.close(); } catch (Exception ignore) {}
}
%>

</body>
</html

 

'WAS > JBoss&WildFly' 카테고리의 다른 글

[jboss 8.1] patch  (0) 2026.04.09
JBoss 배포 cli command  (0) 2026.04.09
jboss-deployment-structure.xml <exclusions> 사용 해보기  (1) 2026.03.24
log4j 설정 관련 추가 정리  (0) 2026.03.24
http method 제한  (0) 2026.03.16