본문 바로가기

개발자愛/JAVA

JAVA6 + Tomcat6

java6 와 tomcat6 의 연동은 java5+tomcat5.5 와 크게 다르지 않았다.

parameter 부분을 하나의 컨텍스트 안에 모두 표현하고 하는 것 까지는 좋았으나, 

tomcat home conf 디렉토리 아래로.. \Catalina\localhost 디렉토리들은 없는 것이 아닌가... 

일단 해보자는 생각에... 컨텍스트 설정을 모두 마친 후 서블릿을 타고 메인 페이지를 뿌리는 것 까지는 좋았으나, 

DB를 커넥트 못하고 에러 화면을 뿌린 것이다.

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at base.DBConnResource.<init>(Unknown Source)
at user.UserServ.userLogin(UserServ.java:781)
at user.UserServ.performTask(UserServ.java:49)
at base.PublicBaseServlet.performPreTask(Unknown Source)
at com.nara.jdf.servlet.JDFBaseServlet.performBasePreTask(JDFBaseServlet.java:60)
at com.nara.jdf.servlet.JDFBaseServlet.doPost(JDFBaseServlet.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:402)
at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
at java.sql.DriverManager.getDriver(DriverManager.java:253)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
... 26 more


이 상태에서 고민을 반복하다..
Resource name="jdbc/Mysql" auth="Container" 이 부분이 있었던 기존의 xml을 context.xml 에 아래와 같이 추가하였다.

<?xml version='1.0' encoding='utf-8'?>
<Context reloadable="true" privileged="true">

  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

<Resource name="jdbc/Mysql" auth="Container"
           type="javax.sql.DataSource" username="jsjung" password="hahaha"
           driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mail?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=euc_kr&amp;mysqlEncoding=euckr"
           maxActive="100" maxIdle="10"/>

</Context>

그리고 톰캣 재시작.. 이제야 되는 구나... 이후로 일사천리로 작업을 진행~

오라클 역시 위와 같은 방법으로 연결할 수 있었다...

역시 뭐든지 모르는 건 부딪혀 봐야 알겠더라는...

삽질의 보람이 느껴지는 하루였다..^^