일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- g1
- 리팩토링
- oauth2
- tomcat
- JWT
- Producer
- JPA
- 스프링
- 스프링 부트
- assertj
- jvm
- 권한
- gdg
- Spring
- 시큐리티
- Security
- 페이징
- GC
- spring boot
- OAuth
- clean code
- RabbitMQ
- load balancing
- apache
- 페이스북
- 스프링부트
- java
- 비동기
- 클린코드
- Refactoring
- Today
- Total
허원철의 개발 블로그
JNDI 살펴보기 본문
이번 글은 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 |