일단 문제는 Tomcat 5.0 버전에 대한 Global 영역에 대한 DBCP 설정 문제였습니다.
저는 기본 컨텍스트인 ROOT에 DBCP를 설정하길 원합니다.
그래서 다음과 같은 방법으로 작업을 진행하였습니다.
1. server.xml 의 <GlobalNamingResources> 영역에 DB Resource 정보를 넣었습니다.
<Resource auth="Container" name="jdbc/oracle" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/oracle">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>password</name>
<value>password</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@XXX.XX.XX.XXX:1521:NAME</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>username</name>
<value>username</value>
</parameter>
</ResourceParams>
2. WEB-INF의 web.xml에 매핑 정보를 추가 하였습니다.
<resource-ref>
<description>Oracle Development Datasource</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3. Java 에서는 아래와 같은 방법으로 커넥션 객체를 생성하였습니다.
public Connection getConnection(String connName) throws SQLException, Exception{
Context initContext = null;
Context envContext = null;
DataSource ds = null;
Connection conn = null;
try {
initContext = new InitialContext();
envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("jdbc/"+connName);
conn = ds.getConnection();
} catch(SQLException exception) {
exception.printStackTrace();
throw (SQLException)exception;
} catch(Exception exception) {
exception.printStackTrace();
throw (Exception)exception;
}
return conn;
}
문제는 다음과 같은 에러 메세지와 함께
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
커넥션을 가져오지 못했습니다.
예전에도 같은 문제로 고생을 한적이 있었는데, 똑같은 방법으로 해결하려 했지만, 해결이 되지 않았습니다.
물론, 컨텍스트를 생성해 (예: flex) 그곳에 %CATALINA_HOME%\conf\Catalina\localhost\flex.xml 에 해당
DataSource 정보를 넣으면 간단히 해결되지만, ROOT에서 DB 커넥션을 맺고 싶습니다.
Tomcat 5.0 과 5.5 에서 DBCP 설정해주는게 조금 바뀌었습니다.
Tomcat 5.5 에서는 %CATALINA_HOME%\conf\context.xml 에 DB Resource 정보를 넣어주면 됩니다.
[해결]
http://www.okjsp.pe.kr/seq/54402 에서 해결을 했습니다.
중간에 나온 "전역적인 JNDI 리소스 이용"을 보면,
1. 각각의 컨텍스트에 전역적인 JNDI를 매핑
2. 아래와 같은 방법으로
<DefaultContext>
<ResourceLink name="jdbc/oracle" global="jdbc/oracle" type="javax.sql.DataSource" />
</DefaultContext>
설정해주면 되는거였다.
후.. 2번째 삽질... 같은 걸로 이렇게 또 실수 하면 안되는 건데 흑흑
'was > tomcat' 카테고리의 다른 글
| Tomcat 에서 JConsole 사용하기 (0) | 2010/04/20 |
|---|---|
| Tomcat 5.0.28 DBCP 설정 (2) | 2008/04/29 |
| Tomcat 5 서비스 등록 및 메모리 늘리기 (1) | 2008/02/25 |
| Tomcat 5,5 Context 설정 (0) | 2008/02/15 |
| Tomcat META-INF context.xml (0) | 2008/02/15 |
| Commons-dbcp (1) | 2008/01/28 |




댓글을 달아 주세요
정말 못하시는게 뭔가요?
2010/02/22 10:49 [ ADDR : EDIT/ DEL : REPLY ]좋은 기사!
2011/08/25 20:10 [ ADDR : EDIT/ DEL : REPLY ]그것은 좋은 포인트를 만들어