본문 바로가기
MySql

톰켓 DB connection 관련 Server.xml/web.xml 설정

by 루에 2017. 4. 19.
반응형

<Context Path="/myapp" docBase="myapp" debug="5" reloadable="true" crossContext="true">

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"

                maxActive="100" maxIdle="30" maxWait="10000"

                username="sys" password="password"     

                driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

                url="jdbc:Microsoft:sqlserver://localhost:3306/javatest?autoReconnect=true"/>

</Context>

 

//내용설명

Context - path : URL 호출시 사용될 이름

            - docBase : 실제 웹 어플리케이션이 위치한 폴더명

            - debug : 로그 작성 레벨

            - reloadable : 톰캣서버의 재시작 없이 수정된 내용을 불러오기 위한 옵션

            - crossContext : myapp이외의 Context에서도 사용 가능하도록 하는 옵션

Resource - name : Resource명칭(JNDI Lookup 시 사용할 명칭)

              - auth : Resource 관리자를 지정. 여기서는 톰캣컨테이너가 관리자임

              - type : Resource 의 형태 지정. 데이타소스 형태를 지정함

              - maxActive : 최대 연결 가능한 Connection 숫자를 지정함

              - maxIdle : Connection pool 유지를 위해 최대 대기 connection 숫자

              - maxWait : Connection 재 사용을 위해 대기해야 하는 최대 시간(단위:ms)

              - username : DB접속 계정

              - password : DB접속 암호

              - driverClassName : DB와 접속하기 위한 driver 클래스를 지정. 예에서는 MySql임

              - url : 접속한 DB가 위치한 서버명, 포트명, 사용할 데이타베이스명을 지정

 

 

// tomcat - web.xml파일에 DB Connection생성을 위한 설정

<resource-ref>

              <description> DB Connection </description>

              <res-ref-name>jdbc/TestDB</res-ref-name>

              <res-type>javax.sql.DataSource</res-type>

              <res-auth>Container</res-auth>

</resource-ref>

 

//내용설명

resource-ref - description : 참조할 resource에 대한 설명

                  - res-ref-name : 참조할 resource의 명칭. Server.xml에 정의된 이름과 일치해야함

                  - res-type : 참조할 resource 형태로 여기서는 DataSource를 지정함

                  - res-auth : 참조할 resource를 관리할 주체로 톰캣컨테이너를 지정함

 

 

- jsp 페이지에서 호출방법

   Context ic = new InitialContext(); 
   DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/TestDB"); 
   con = ds.getConnection();

 

  * mysql 의 경우 context 가 다르면,  각각 설정을 따로 하셔야 합니다.

 

  * data source 의 접근 방식은 다음과 같이 할 수도 있습니다.

   Context initContext = new InitialContext();
   Context envContext  = (Context)initContext.lookup("java:/comp/env");
   DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");  


  * tomcat 에서 JNDI 관련 에러메시지별 대처 방법

    - Cannot load JDBC driver class 'com.mysql.jdbc.Driver', cause: com.mysql.jdbc.Driver 또는 

       Null Pointer Exception '', cause: No suitable driver

    ==> 해당 jdbc 드라이버(위의경우 mysql 드라이버) 가 없기 때문입니다.

          해당 드라이버 파일을 $CATALINA_HOME/common/lib 디렉토리로 복사합니다.



    - Name xxxx is not bound in this Context

      ==> server.xml 과 web.xml 에서 해당 JNID가 설정되지 않은 경우입니다.

           server.xml 과 web.xml 에 JNDI resource 를 설정하고 이름을 동일하게 설정하도록 합니다.

출처: http://holiclove.tistory.com/entry/톰켓-DB-connection-관련-Serverxmlwebxml-설정 []

반응형

댓글