# WAS 설정 변경
JNDI방식은 익숙하게 사용하는 JDBC API를 활용하는것과는 다른 실행구조를 가진다.
JDBC의 경우 웹 어플리케이션 내부에서 연결해 데이터베이스를 호출하는 느낌이라면 JNDI의 경우에는 WAS에서 DB를 연결을 해놓은 후 웹어플리케이션은 그 연결된 WAS서버에서 데이터베이스를 호출하게된다. 따라서 JNDI를 활용하기 위해서는 WAS에서 DB환경설정을 한다.
나 같은 경우에는 WAS를 JEUS를 사용했기에 WEB_ADMIN에서 Resource > Database 를 들어가 Add+를 눌러 DB를 세팅한다.
그 이후 Server와 연동을 해야한다. Data Sources 에서 적용한 Data를 넣어주고 저장한다.
# Java > Spring 설정 변경하기
@Configuration
@EnableTransactionManagement
public class DatabaseConfig {
//JNDI 설정을 위해서 WAS의 값을 가져오는 코드
@Bean
public DataSource dataSource() throws DataSourceLookupFailureException{
JndiDataSourceLookup jdsl = new JndiDataSourceLookup();
jdsl.setResourceRef(true);
DataSource dataSource = jdsl.getDataSource("asradm");
return dataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setConfigLocation(resolver.getResource("mybatis설정파일"));
sessionFactory.setMapperLocations(resolver.getResources("mybatisXML파일위치"));
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception {
final SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
return sqlSessionTemplate;
}
}
Spring의 경우 JNDI 설정을 할 때 config를 XML 설정으로 빼는 설정이 많아서 설정을 수정하기가 어려웠다. (Java Config로 세팅하는 법에 대해서 공부를 좀 해야할 것같다. 인터넷에 자료가 나오지 않는다면 막막해..)
Java Config로 수정하는 경우 dataSource 메소드 생성시 JndiDataSourceLookup 클래스 객체를 생성한뒤에 setResourceRef 메소드를 통해 resource-ref 속성에 대한 설정을 한다. 그리고 dataSource에 WAS에 설정해놓은 DB객체를 가져와서 설정해놓고 리턴해줘서 SqlSessionFactory와 연동해주는?(잘모름) 역할을 한다면 JNDI 설정은 끝이다.
#후기
환경설정은 모든걸 적용해 놓으면 정말 쉬워보이는데, 그 내부의 작동이 돌아가는 방법을 모두 이해하고 있어야 코딩을 진행할 수 있기 때문에 정말 가성비 안나오는 작업중 하나이다 ... !!!!
'프로그래밍 회고록 > Java & Spring' 카테고리의 다른 글
Java(Spring)와 JavaScript(vue.js)로 서버단 Mp3파일 클라이언트로 보내 재생하기 - 1.Java (2) | 2021.11.03 |
---|---|
Java와 java_websocket library를 이용한 WebSocket Clinet쪽 통신방법 (0) | 2021.10.17 |
Filter, Interceptor, Aop가 뭔데? (0) | 2021.01.06 |
JAVA에서 생성자는 메소드일까 (0) | 2021.01.06 |
잊지않겠다... 디렉토리 (0) | 2020.11.11 |