You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Tarek M. Nabil" <Ta...@itworx.com> on 2003/06/12 19:08:59 UTC

JNDI DataSource

Hi,

I'm trying to setup a JDBC DataSource on Tomcat 4.1.24.

I performed the steps in the documentation:

1- Added this part to the GlobalNamingResources section of the server.xml

    <Resource name="jdbc/as400" scope="Shareable" type="javax.sql.DataSource" auth="Container"/>
    <Resource name="UserDatabase" scope="Shareable" type="org.apache.catalina.UserDatabase" auth="Container" description="User database that can be updated and saved"/>
    <ResourceParams name="jdbc/as400">
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>8</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:as400:AS400</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>access2k</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>com.ibm.as400.access.AS400JDBCDriver</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>DBA</value>
      </parameter>
    </ResourceParams>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>

2- I added this to my web.xml

	<resource-ref>
		<description>
		    Resource reference to a factory for java.sql.Connection
			instances that talk to an AS400 database
		</description>
		<res-ref-name>
			jdbc/as400
		</res-ref-name>
		<res-type>
			javax.sql.DataSource
		</res-type>
		<res-auth>
			Container
		</res-auth>
	</resource-ref>

3- I put this in a JSP

<%@ page import="javax.naming.*, java.sql.*, javax.sql.*" %> 
<%
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
  envCtx.lookup("jdbc/as400");

Connection conn = ds.getConnection();
conn.close();

%>


And Still, I get the following error when accessing the JSP

type Exception report

message 

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

exception 

org.apache.jasper.JasperException: Cannot load JDBC driver class 'null'
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Thread.java:484)


root cause 

javax.servlet.ServletException: Cannot load JDBC driver class 'null'
	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:536)
	at org.apache.jsp.test_jsp._jspService(test_jsp.java:61)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Thread.java:484)



--------------------------------------------------------------------------------

Any help is appreciated.

Thanks,
Tarek M. Nabil

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Re: JNDI DataSource

Posted by Jacob Kjome <ho...@visi.com>.
You need a <ResourceLink> in your <Context ...> for each webapp that you 
want to make the resource available to.

Jake

At 08:08 PM 6/12/2003 +0300, you wrote:
>Hi,
>
>I'm trying to setup a JDBC DataSource on Tomcat 4.1.24.
>
>I performed the steps in the documentation:
>
>1- Added this part to the GlobalNamingResources section of the server.xml
>
>     <Resource name="jdbc/as400" scope="Shareable" 
> type="javax.sql.DataSource" auth="Container"/>
>     <Resource name="UserDatabase" scope="Shareable" 
> type="org.apache.catalina.UserDatabase" auth="Container" 
> description="User database that can be updated and saved"/>
>     <ResourceParams name="jdbc/as400">
>       <parameter>
>         <name>maxWait</name>
>         <value>5000</value>
>       </parameter>
>       <parameter>
>         <name>maxActive</name>
>         <value>8</value>
>       </parameter>
>       <parameter>
>         <name>url</name>
>         <value>jdbc:as400:AS400</value>
>       </parameter>
>       <parameter>
>         <name>password</name>
>         <value>access2k</value>
>       </parameter>
>       <parameter>
>         <name>driverClassName</name>
>         <value>com.ibm.as400.access.AS400JDBCDriver</value>
>       </parameter>
>       <parameter>
>         <name>maxIdle</name>
>         <value>4</value>
>       </parameter>
>       <parameter>
>         <name>username</name>
>         <value>DBA</value>
>       </parameter>
>     </ResourceParams>
>     <ResourceParams name="UserDatabase">
>       <parameter>
>         <name>factory</name>
>         <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
>       </parameter>
>       <parameter>
>         <name>pathname</name>
>         <value>conf/tomcat-users.xml</value>
>       </parameter>
>     </ResourceParams>
>
>2- I added this to my web.xml
>
>         <resource-ref>
>                 <description>
>                     Resource reference to a factory for java.sql.Connection
>                         instances that talk to an AS400 database
>                 </description>
>                 <res-ref-name>
>                         jdbc/as400
>                 </res-ref-name>
>                 <res-type>
>                         javax.sql.DataSource
>                 </res-type>
>                 <res-auth>
>                         Container
>                 </res-auth>
>         </resource-ref>
>
>3- I put this in a JSP
>
><%@ page import="javax.naming.*, java.sql.*, javax.sql.*" %>
><%
>Context initCtx = new InitialContext();
>Context envCtx = (Context) initCtx.lookup("java:comp/env");
>DataSource ds = (DataSource)
>   envCtx.lookup("jdbc/as400");
>
>Connection conn = ds.getConnection();
>conn.close();
>
>%>
>
>
>And Still, I get the following error when accessing the JSP
>
>type Exception report
>
>message
>
>description The server encountered an internal error () that prevented it 
>from fulfilling this request.
>
>exception
>
>org.apache.jasper.JasperException: Cannot load JDBC driver class 'null'
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
>         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
>         at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
>         at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
>         at java.lang.Thread.run(Thread.java:484)
>
>
>root cause
>
>javax.servlet.ServletException: Cannot load JDBC driver class 'null'
>         at 
> org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:536)
>         at org.apache.jsp.test_jsp._jspService(test_jsp.java:61)
>         at 
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>         at 
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
>         at 
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
>         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
>         at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>         at 
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
>         at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
>         at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
>         at java.lang.Thread.run(Thread.java:484)
>
>
>
>--------------------------------------------------------------------------------
>
>Any help is appreciated.
>
>Thanks,
>Tarek M. Nabil
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org