'DBCP'에 해당되는 글 1건

  1. 2006.02.21 Tomcat 5.5 DBCP 사용하기.
eclipse의 어떤 설정을 건드렸는데, 뭘 건드렸는지 몰라도 계속 access denied 예외가 떴었다.
4시간 동안 삽질하다가 그냥 프로젝트를 새로 만들고 Copy & Paste 하니까 잘 돌아간다.

tomcat의 DBCP를 사용하기 위해서는 총 3군데에서 수정하고, 코드에 한 부분을 추가해야 한다.

server.xml에서의 설정은 다음과 같다.(자세한 설명은 http://tomcat.apache.org/tomcat-5.5-doc/index.html 부분을 참고하도록 한다.)
<GlobalNamingResources>

...
<Resource name="jdbc/dada_db" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="username" password="passwd" driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/dada_db?autoReconnect=true"/>

</GlobalNamingResources>


eclipse에서 war를 만들지 않고 바로 톰캣에 올릴 때는 $CATALINA/conf/Catalina/localhost/xxxxx.xml 파일안을 다음과 같이 편집한다. (xxxxx는 context명으로 되어있다.)
<Context path="/test" reloadable="true" docBase="D:\test\test" workDir="D:\test\test\work" >
<ResourceLink name="jdbc/dada_db" global="jdbc/dada_db" auth="Container" type="javax.sql.DataSource"/>
</Context>


war를 만들었을 경우에는 server.xml 안의 Host 태그를 다음과 같이 편집하면 된다.
<Context path="/test" reloadable="true" docBase="D:\test\test" workDir="D:\test\test\work" >
<ResourceLink name="jdbc/dada_db" auth="Container" type="javax.sql.DataSource"/>
</Context>


두 개의 차이점은 global 속성에서 차이가 난다. 마지막 설정은 어플리케이션의 web.xml에서 편집한다.
마지막 부분에 다음을 추가해준다.
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/dada_db</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


마지막으로 자바 소스 코드에서 Connection을 얻어올 때 다음과 같이 처리한다.
Context ctx = null;
DataSource dataSource = null;
Connection con = null;
try {
ctx = new InitialContext();
dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/dada_db");
con = dataSource.getConnection();
} catch (NamingException e) {
System.out.println("Naming : " + e.toString());
} catch (SQLException e) {
System.out.println("Connection : " + e.toString());
}
Posted by xHuro
,