JNDI

與 JDBC 的區別

JDBC:是 java 去找資料庫驅動。

JNDI:是通過伺服器配置(ex: Tomcat)的配置文件,來尋找資料來源(DataSource)。

Java Naming And Directory Interface

JNDI 已成為 J2EE 的標準之一,所有的 J2EE 容器都必須提供一個 JNDI 的伺服器。

配置方式

透過容器 Context.xml 配置檔

  <Resource 
    name="jdbc/TestDB"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.cj.jdbc.Driver" 
    url="jdbc:XXXDB://localhost:3306/TestDB"
    username="matthung"
    password="12345"
    maxTotal="100" 
    maxIdle="20" 
    maxWaitMillis="10000" 
    minIdle="5"/>

透過程式

//取得環境
Context ctx = new java.naming.InitialContext();
//取得資料來源
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/XXXDB");
//透過 SQL 操作資料庫
conn=ds.getConnection();
.
.
.
//關閉連線
conn.close();

解決問題

  • 資料庫名稱修改 、使用者和 SQL 都可能需要改變,導致 JDBC URL需要修改。

  • 資料庫可能改用別的產品,如改用MySQL 或者Oracle,導致 JDBC驅動和類名需要修改。

  • 隨着實際使用連線數的增加,原配置的連接池參數可能需要調整。

Last updated

Was this helpful?