<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-설정 []
MySql
톰켓 DB connection 관련 Server.xml/web.xml 설정
반응형
반응형
댓글