본문 바로가기
실전 임베디드

APACHE TOMCAT8.5 JDBC ORACLE 실전 임베디드 2016. 1

by BABEL-II 2019. 9. 23.

첨부 파일은 ORACLE JDBC DRIVER 파일이다.

이것을 apache-tomcat/lib 밑에 두면 된다.

 

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.naming.NameNotFoundException: Name [jdbc/remolet] is not bound in this Context. Unable to find [jdbc].
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:565)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

 

web.xml에 아래 내용이 없으면 위의 에러가 난다.

 그 런 데 , 8.5부터는 없어도 된다.
<resource-ref>
  <description>Connection</description>
  <res-ref-name>jdbc/remolet</res-ref-name>
  <res-type>jajax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

 

그런데, 위의 내용을 넣어주면 톰캣이 바뀐 걸 알고 자동으로 리로딩을 하는데, 여전히 아래와 같은 오류가 난다.
type Exception report

message javax.servlet.ServletException: javax.naming.NamingException: Cannot create resource instance

description The server encountered an internal error that prevented it from fulfilling this request.

exception
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.naming.NamingException: Cannot create resource instance
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:565)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

 

해결은 단순한데,

아래에 기록하겠음 ㅎㅎ

 

<!-- 일단 Host -> Context -> Resource 순임을 기억하자 --> 

<Host name="host" appBase="D:\\jinjin.co.kr"
       unpackWARs="false" autoDeploy="false" reload="true"
       xmlValidation="false" xmlNamespaceAware="false">
  
  <Alias></Alias>">www.host.co.kr</Alias>
  
  <Context path="/" docBase="root" debug="0" reloadable="true"><-- 이게 중요하다.
   
<!--여기부터-->

    <Resource name="jdbc/jdbc" auth="Container" type="javax.sql.DataSource"
    maxActive="20" maxIdle="3" maxWait="10000"
    username="user" password="pass" driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@jinj.iptime.org:4521/orcl" />

<!--여기까지가  Context안에 있어야 한다. 그리고 8.5에서는 web.xml에 없어도 된다.-->
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="D:\\LOGS\\java"  prefix="kr_access_log." suffix=".txt"
    pattern="common"/>
      
   <Logger className="org.apache.catalina.logger.FileLogger"
    directory="D:\\LOGS\\java"  prefix="kr_log." suffix=".txt"
    timestamp="true"/>
 </Context>