๐ŸŒ Backend/๐Ÿƒ Spring

JNDI๋ฅผ ์ด์šฉํ•˜์—ฌ Datasource๋ฅผ ์„ค์ •ํ•œ ์ด์œ 

DevPoong 2024. 4. 3. 22:27

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Local ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋Š” JNDI๋ฅผ ์ด์šฉํ•˜์—ฌ Datasource๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

WAS์— DB Resource๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ด์œ 

์ƒํ™ฉ) ์šฐ์„  ์—ฌ๋Ÿฌ๊ฐœ์˜ Datasource์— ์—ฐ๊ฒฐํ•ด์•ผ ํ–ˆ๊ณ , Jeus๋ผ๋Š” WAS์— DB Resource ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•ด ๋†“์€ ์ƒํƒœ์˜€๋‹ค.

์—ฌ๊ธฐ์„œ ์™œ WAS์— Data Resource๋ฅผ ์„ค์ •ํ•ด ๋†“์•˜๋Š”์ง€ ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค. (๋‚˜๋„ ๊ทธ๋žฌ๋‹ค..)

 

๋ณดํ†ต ์ง€๊ธˆ๊นŒ์ง€ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ˆœ์ˆ˜ JDBC๋‚˜ Spring์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋ณธ์ ์ธ DBCP๋ฅผ ์‚ฌ์šฉํ•ด์™”๋‹ค.
ํ•˜์ง€๋งŒ, ์‹ค์ œ ์šด์˜ํ•  ๋•Œ๋Š” JDBC ์„ค์ •์„ WAS์—์„œ ํ•˜๋Š”๊ฒŒ ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” 

  1. ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ธ๋ ฅ์€ ๋”ฐ๋กœ ์žˆ๋‹ค.
  2. ํ•˜๋‚˜์˜ WAS์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ ,  ๋งŒ์•ฝ N๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ 1๊ฐœ์˜ WAS์—์„œ ์‹คํ–‰ํ•  ๋•Œ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ผํ•œ DB๋ž‘ ์—ฐ๊ฒฐ๋œ๋‹ค๋ฉด DB Pool์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์ƒ์„ฑ๋˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฌ๋ฉด DB Pool ๊ด€๋ฆฌ๋„ ๋ณต์žกํ•ด์ง€๊ณ  ์ž์›์ด ๋‚ญ๋น„๋œ๋‹ค.
  3. ์„œ๋น„์Šค๋ฅผ ์šด์˜ ์ค‘์— DB๋ฅผ ๋ฐ”๊ฟ”์น˜๊ธฐ ๋˜๋Š” ๋‹ค๋ฅธ ์ฃผ์†Œ๋กœ ๋งคํ•‘ ํ•ด์•ผํ•œ๋‹ค๋ฉด.. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค๋‹จ์—์„œ ์„ค์ •ํ•˜๋Š”๊ฒŒ ์•„๋‹Œ WAS์—์„œ ์„ค์ •ํ•˜๋Š”๊ฒŒ ํŽธํ•˜๋‹ค.

 

 

์œ„์™€ ๊ฐ™์€ ์ด์œ ๋ฅผ ํ† ๋Œ€๋กœ WAS์— ์ €์žฅ๋œ Resource ์ •๋ณด๋ฅผ  Spring Boot์—์„œ ์ฝ์–ด์™€์„œ Datasource๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด JNDI๋ฅผ ์ด์šฉํ–ˆ๋‹ค.

์•„๋ž˜์—์„œ, JNDI๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋งํ•ด๋ณด๊ฒ ๋‹ค.

 

JNDI (Java Naming and Directory Interface API)

JNDI๋Š” Java Naming and Directory Interface API๋กœ ๋””๋ ‰ํ† ๋ฆฌ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” API์ด๋‹ค.

 

Application์€ JNDI๋ฅผ ์ด์šฉํ•ด์„œ WAS์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” Resource๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

Resouce๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ Resource๋ฅผ ์„œ๋ฒ„์— ๋“ฑ๋กํ•  ๋•Œ ๊ณ ์œ ํ•œ JNDI ์ด๋ฆ„์„ ๋ถ™์ด๋Š”๋ฐ, JNDI ์ด๋ฆ„์€ Directory ๊ฒฝ๋กœ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.
๋”ฐ๋ผ์„œ, JNDI ์ด๋ฆ„์„ ํ† ๋Œ€๋กœ Resource๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

// dataSource ์„ค์ •
@Bean
public DataSource jndi1DataSource() {
    JndiDataSourceLookup jndiDataSourceLookup = new JndiDataSourceLookup();
    return jndiDataSourceLookup.getDataSource("java:comp/env/jdbc/db1"); // java:comp/env/{jndi์ด๋ฆ„}
}

 

๋งŒ์•ฝ db1์ด๋ผ๋Š” Data Resource๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋ฉด "java:comp/env/jdbc/db1"๋ผ๋Š” JNDI ์ด๋ฆ„์„ ํ†ตํ•ด ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.