티스토리 뷰
보통은 로컬 개발환경을 제외하고는 was에 datasource 설정을 하는 JNDI 방식을 많이 사용을 한다. JNDI는 datasource 설정을 was에서 하고 효율적인 connection pool 관리 등 여러가지 장점을 가지고 있어서 주로 이 방식이 많이 사용이 된다. 나중에 JDBC 방식과 JNDI 방식이 어떻게 다르고 장단점은 무엇인지 자세히 알아보고 이번엔 실제 설정하는 방법과 어떻게 spring과 연동하여 사용하는지에 대해 알아보겠다.
server.xml or context.xml (tomcat)
<Context>
...
<Resource name="jndi/test" auth="Container"
factory="com.encrypt.EncryptedDataSourceFactory"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@ip:port:sid"
username="username" password="암호화된pwd" maxTotal="20" maxIdle="20"
maxWaitMillis="-1"/>
</Context>
여러 was 마다 각각 jndi 설정하는 방법이 있지만 이번에는 tomcat을 예로 알아보도록 하겠다.
tomcat의 설정 파일인 server.xml 이나 context.xml 파일에서 jndi 설정을 할 수 있다. 이 파일에서 <Context> 하위에 <Resource> 부분에 위와 같은 설정을 넣어준다.
여기서 다른 부분은 JDBC 설정과 동일하니 넘어가고 name과 factory 부분에 대해서만 살펴보겠다.
name은 java source와 이 설정을 연결시켜주는 연결고리 같은 역할을 한다고 보면 된다. 이름을 동일하게 지정을 해야 하고 tomcat의 경우는 name을 설정하는데 주의해야 할 점이 있다.
tomcat을 사용할때 spring에서의 jndi 설정
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jndi/test" />
</bean>
위의 bean은 server.xml에서 jndi/test로 지정한 datasource를 바라본다. 즉 tomcat의 경우는 spring bean 설정을 할때 jndiName에 java:comp/env/ 를 앞에 추가해 줘야 한다. 이렇게 하면 was의 datasource 설정을 바라볼 수 있다.
factory는 주로 username이나 password를 암호화 할때 사용을 한다. 암호화를 수행하는 프로젝트를 jar로 export하여 tomcat의 lib 폴더에 추가를 해 넣는다. 그리고 factory에서는 jar안에 들어있는 암호화를 수행하는 클래스를 정의해 놓으면 그 클래스를 통해 username이나 password를 복호화를 수행한다.
자세한 과정은 다음을 참고하도록 한다.
그 외에 기본적인 datasource 정보 및 optional한 설정들을 넣어주고 application을 deploy 시키고 서버 기동하여 연결을 확인해보면 된다.
끝!
'Server > WAS' 카테고리의 다른 글
Tomcat Context Path가 / 인 경우 manager 접근방법 (0) | 2020.08.14 |
---|---|
org.apache.catalina.loader.WebappClassLoaderBase modified 오류가 나며 무한재기동하는 현상 (0) | 2020.07.31 |
Tomcat username / password 암호화 (with DataSourceFactory) (3) | 2020.06.02 |
Jeus 인코딩 문제 해결방법 (1) | 2020.04.28 |
톰캣 프로젝트 외부 디렉토리에 있는 이미지 가지고오기 (0) | 2020.04.28 |