I have the following jsp file on tomcat 5.5.23.  When the file is invoked,
it only returns the header row of the table (First Name, Last Name, User
Name, Password), but does not return the expected records from the Oracle
data table.  The entire jsp file is as follows:

<%@ page session="false" %>
<%@ page import="java.sql.*, javax.sql.*, javax.naming.*, java.io.*,
java.util.*" %>

<%! DataSource ds; %>

<%
  try {
     Context initCtx = new InitialContext();
     Context envCtx = (Context) initCtx.lookup("java:comp/env");
     ds = (DataSource) envCtx.lookup("jdbc/DBDevTrackConnDS");
  } catch (NamingException e) {
     e.printStackTrace();
  }
%>

<HTML>
<HEAD>
<TITLE>Display All Users</TITLE>
</HEAD>
<BODY>
<CENTER>
<BR><H2>Displaying All Users</H2>
<BR>
<BR>
<TABLE border="1" cellspacing="0">
<TR>
<TH>First Name</TH>
<TH>Last Name</TH>
<TH>User Name</TH>
<TH>Password</TH>
</TR>

<%
  String sql = "SELECT FirstName, LastName, UserName, Password FROM
tomcats";
  try {
    Connection con = ds.getConnection();

    Statement s = con.createStatement();
    ResultSet rs = s.executeQuery(sql);

    while (rs.next()) {
      out.println("<TR>");
      out.println("<TD>" + rs.getString(1) + "</TD>");
      out.println("<TD>" + rs.getString(2) + "</TD>");
      out.println("<TD>" + rs.getString(3) + "</TD>");
      out.println("<TD>" + rs.getString(4) + "</TD>");
      out.println("</TR>");
    }
    rs.close();
    s.close();
    con.close();
  }
  catch (SQLException e) {
  }
  catch (Exception e) {
  }
%>

</TABLE>
</CENTER>
</BODY>
</HTML>

Checking the log file, the stdout file has the following:

javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
    at org.apache.jsp.jsp.dblogin_jsp._jspService(dblogin_jsp.java:55)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:328)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java
:315)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11AprProcessor.process(
Http11AprProcessor.java:834)
    at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(
Http11AprProtocol.java:640)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java
:1286)
    at java.lang.Thread.run(Unknown Source)

I have been using the same try{} blocks in my servlet files.  The connection
to the same database has always be successful and the data records are
retrieved.  I figure that the only difference between the servlets and the
jsp is that the servlet has the binding information for the database in the
appName/META-INF/context.xml file:

<Context>
    <Resource  name="jdbc/DBDevTrackConnDS"
               auth="Container"
               type="javax.sql.DataSource"
               username="testUser"
               password="testPW"
               driverClassName="oracle.jdbc.driver.OracleDriver"
               url="jdbc:oracle:thin:@sb.lehman.cuny.edu:1521:idm0"
               maxActive="8"
               maxIdle="4" />
</Context>

and the reference information in the appName/WEB-INF/web.xml file:

<web-app>
   <resource-ref>
      <description>
         Resource refrence to a factory for java.sql.Connection instnaces
         that may be used for talking to a particular database that is
         configured in the server.xml file.
      </description>
      <res-ref-name>
         jdbc/DBDevTrackConnDS
      </res-ref-name>
      <res-type>
         javax.sql.DataSource
      </res-type>
      <res-auth>
         Container
      </res-auth>
   </resource-ref>

What is wrong or missing with the jsp file?  Apparently the jsp file is not
aware of the context.xml file and the web.xml file.  How do I convey the
same binding and reference information to the jsp container and the jsp
page?

Many thanks for helping me out!

Reply via email to