java

java web application JNDI 사용법

초이짬 2020. 5. 21. 11:19
728x90

JNDI 룩업

web application 에서 기본적으로 jndi 를 사용할려면 tomcat은 최소 5.5 이상이 필요하다

web application 의 META-INF 파일안에 context.xml 을 넣고 이를 was 에서 인식하기 위해서 최소버전이 저때부터

가능 했다고 한다.

기본적으로 context.xml 파일을 was 가 읽고 해당 jndi 연결을 하면 web application 은 해당 룩업 주소만 콜 하면 된다.

나머진 다 was 에서 연결을 맺어 둔 상황이니까

context.xml 은 아래와 같다.

<!-- oracle ConnectionPool -->
<!-- 
<Resource type="javax.sql.DataSource"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
       auth="Container"
    initialSize="3"
    maxTotal="3"
    maxIdle="3"
    minIdle="3"
    maxWaitMills="-1"
    defaultAutoCommit="true"
    testOnBorrow="true"
    testOnReturn="false"
    testWhileIdle="false"
    validationQuery="SELECT 1 FROM DUAL"
    name="jdbc/callDB"
    username="계정"
    password="비번"
    url="jdbc:oracle:thin:@localhost:3306/Test" 
    driverClassName="oracle.jdbc.driver.OracleDriver"
/>
 -->
<Resource type="javax.sql.DataSource"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
       auth="Container"
    initialSize="3"
    maxTotal="3" 
    maxIdle="3"
    minIdle="3" 
    maxWaitMills="-1"
    defaultAutoCommit="true"
    testOnBorrow="true"
    testOnReturn="false"
    testWhileIdle="false"
    validationQuery="SELECT 1"
    name="jdbc/baseDB" 
    username="계정" 
    password="비번"
    url="jdbc:mariadb://디비ip:디비port/webAtgwTest"
    driverClassName="org.mariadb.jdbc.Driver"
/>

다음 블로그 업뎃하고 대체 왜 마크 다운 색깔은 저따윈지....

암튼 저렇게 먼저 호출을 해주는데 max값하고 idle 값은 운영시에 잘 잡아야 된다 50 정도면??

저거 그대로 쓰면 3개만 호출 하니 참고 꼭 하기 바란다.

저렇게 하고 스프링 같은 경우 context-datasource.xml

 

<!-- ======================================================================= -->        
<bean id="baseDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="${BaseWebApp.JndiName}" />
    <property name="resourceRef" value="true" />
</bean>

중요한건 저기에 property name이 jndiName으로 가져가고 저 이름이 context 의 name 을 호출하면 된다는거다

${BaseWebApp.JndiName} 부부은 당연히 properties 파일에 명시되있다

 

 

BaseWebApp.JndiName=java:/comp/env/jdbc/baseDB

 

근데 보면 호출 네임앞에 java:/comp/env 가 더붙는다. 저게 없어도 되는지는 미처 확인 못햇다.

728x90