허원철의 개발 블로그

JNDI 살펴보기 본문

web

JNDI 살펴보기

허원철 2016. 12. 9. 21:29

이번 글은 JNDI에 대한 글입니다.


JDBC, DBCP.. JAVA로 개발을 하다보면, 흔히 볼 수 있고, 반드시 써야 Database를 연결할 수 있는 라이브러리 입니다. 하지만.. JNDI..? 비슷한 놈인가 하고 넘겼지만, 이제는 알아야 하고 정리해야 할 필요성을 느끼게 되었습니다.


What..?


- Java 소프트웨어 클라이언트가 이름(name)을 이용하여 데이터 및 객체를 찾을 수 있도록 도와주는 디렉토리 서비스에 대한 Java API이다.

(Wiki 참고)


- 예를 들자면, WAS에 데이터 및 객체 정보(ex. DB 정보)를 Naming을 해놓고 WAS 내에서 가져다 쓰는 것 입니다.




Why..?


- WAS내에 N개의 웹 어플리케이션이 들어가는 경우가 있습니다.(WAS : Web Application = 1 : N) 이 때 소스 레벨에서 설정을 하게 되면, 하나하나 관리하기 어렵고, 자원 낭비도 심하기 때문에 JNDI를 사용하여 WAS에서 관리하게 하는 것 입니다.



How..!


[ Tomcat + Spring 설정 ]


Tomcat


1. server.xml


- ${TOMCAT_HOME}/conf/server.xml 에 다음 내용을 추가해줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<GlobalNamingResources>
  <Resource name="jdbc/DatabaseName"
   auth="Container"
   description="DB Connection"
   driverClassName="com.mysql.jdbc.Driver"
   maxActive="50"
   initialSize="10"
   username="springdemo"
   password="demo1234"
   factory="org.apache.naming.factory.BeanFactory"
   type="com.mchange.v2.c3p0.ComboPooledDataSource"
   url="jdbc:mysql://localhost:3306/springdemo?autoReconnect=true&useUnicode=true&characterEncoding=utf8"
/>  
</GlobalNamingResources>
cs


2. context.xml


- ${TOMCAT_HOME}/conf/context.xml 에 다음 내용을 추가해줍니다.


1
2
3
<Context>
   <ResourceLink name="jdbc/DatabaseName" global="jdbc/DatabaseName" type="javax.sql.DataSource"/>
</Context>
cs



Spring


1. root-context.xml or 하위 context.xml


- jdbc나 dbcp를 활용한 datasource를 bean으로 등록하는 것이 아닌 jee를 이용하여 datasoure 등록 해줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:jee="http://www.springframework.org/schema/jee"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
                    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
                    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
  
<jee:jndi-lookup id="dbDataSource"
    jndi-name="jdbc/DatabaseName"
    expected-type="javax.sql.DataSource" />
  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
        p:dataSource-ref="dbDataSource"
        p:mapperLocations="classpath:/com/mycom/springdemo/mapper/*Mapper.xml"
        p:configLocation="classpath:/com/mycom/springdemo/mybatis-config.xml"
        />
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="dbDataSource" />
  
</beans>
 cs


설정 출처https://www.lesstif.com/pages/viewpage.action?pageId=17105933


'web' 카테고리의 다른 글

HTTP1.1 Header  (404) 2016.12.17
Spring Boot - Redis를 활용한 Session Clustering  (423) 2016.12.13
페이징에 대한 이해 - 2  (396) 2016.12.08
페이징에 대한 이해 - 1  (429) 2016.12.06
Spring Boot - Async  (412) 2016.12.05
Comments