Hi,

I notice that you are doing the JDBC lookup in the "init" function. This
doesn't appear to work properly (at least on 4.1.6), move the initialisation
code to the "doGet/doPost" and see if that helps. This cured my JNDI/JDBC
problems.

Regards.

----- Original Message -----
From: "Przemyslaw Kowalczyk" <[EMAIL PROTECTED]>
To: "'Tomcat Users List'" <[EMAIL PROTECTED]>
Sent: Tuesday, July 02, 2002 11:08 AM
Subject: Tomcat 4.0.4, jndi, jdbc and postgresql [long]


> Hi
>
> I've just started to write servlets. Servlets that only do processing,
without
> connecting to database work fine, but I have some problems to get the
> connection with postgresql via jdbc work.
>
> Tomcat: 4.0.4 (on linux)
> Postgresql: 7.2.1 (on linux)
> Jdbc: pgjdbc2.jar (from jdbc.postgresql.org)
>
> The servlet is quite simple:
>
> import java.io.*;
> import java.util.*;
> import java.sql.*;
> import javax.sql.*;
> import javax.naming.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> public class InfoServlet extends HttpServlet {
>
>         Connection con;
>         private boolean conFree = true;
>
>         public void init() throws ServletException {
>                 try  {
>                         Context initCtx = new InitialContext();
>                         Context envCtx =
> (Context)initCtx.lookup("java:comp/env");
>                         DataSource ds = (DataSource)
>                         envCtx.lookup("jdbc/BookDB");
>                         Connection con = ds.getConnection();
>                 } catch (Exception ex) {
>                         throw new ServletException("Couldn't open
connection
> to database: " + ex.getMessage());
>                 }
>         }
>
>         public void destroy() {
>                 try {
>                         con.close();
>                 } catch (SQLException ex) {
>                         System.out.println(ex.getMessage());
>                 }
>         }
>
>         public void doGet (HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException {
>
>                 HttpSession session = request.getSession();
>
>                 // set content-type header before accessing the Writer
>                 response.setContentType("text/html");
>                 response.setBufferSize(8192);
>                 PrintWriter out = response.getWriter();
>
>                 // then write the data of the response
>                 out.println("<html>" +
>                 "<head><title>Duke's Bookstore</title></head>");
>         }
> }
>
> in web/WEB-INF/web.xml I defined:
>
>
> <!DOCTYPE web-app
>     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>     "http://java.sun.com/dtd/web-app_2_3.dtd";>
> <web-app>
>         <display-name>Currency Converter Application</display-name>
>         <description>
>                 Test servlet
>         </description>
>         <servlet>
>                 <servlet-name>info</servlet-name>
>                 <display-name>info</display-name>
>                 <description>no description</description>
>                 <servlet-class>InfoServlet</servlet-class>
>         </servlet>
>         <servlet-mapping>
>                 <servlet-name>info</servlet-name>
>                 <url-pattern>/info</url-pattern>
>         </servlet-mapping>
>         <session-config>
>                 <session-timeout>30</session-timeout>
>         </session-config>
>         <resource-ref>
>                 <res-ref-name>jdbc/BookDB</res-ref-name>
>                 <res-type>javax.sql.DataSource</res-type>
>                 <res-auth>Containter</res-auth>
>         </resource-ref>
> </web-app>
>
> And in server.xml in the contex of the application:
>
>        <Context path="/bookstore" docBase="bookstore" debug="0"
>                  reloadable="true" crossContext="true">
>           <Logger className="org.apache.catalina.logger.FileLogger"
>                      prefix="localhost_bookstore_log." suffix=".txt"
>                   timestamp="true"/>
>           <Resource name="jdbc/BookDB" auth="Container"
>             type="javax.sql.DataSource"/>
>           <ResourceParams name="jdbc/BookDB">
>             <parameter>
>               <name>user</name>
>               <value>java</value>
>             </parameter>
>             <parameter>
>               <name>password</name>
>               <value>java</value>
>             </parameter>
>             <parameter>
>               <name>driverClassName</name>
>               <value>org.postgresql.Driver</value>
>             </parameter>
>             <parameter>
>               <name>driverName</name>
>               <value>jdbc:postgresql:public</value>
>             </parameter>
>           </ResourceParams>
>         </Context>
>
> I've tried a few different driverName parameters: (restarting Tomcat after
> each change)
> jdbc:postgresql://localhost/public
> jdbc:postgresql://full.server.name/public
> jdbc:postgresql:public
> jdbc:postgresql://localhost/
>
> But, despite the parameters, I always get the following error:
>
> exception
> javax.servlet.ServletException: Couldn't open connection to database:
> Exception creating DataSource: org.hsql.jdbcDriver
>         at InfoServlet.init(Unknown Source)
>         at javax.servlet.GenericServlet.init(GenericServlet.java:258)
>         at
>
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:91
8)
> ....
>
> {cut}
>
> I have no idea why Tomcat wants to connect using hsql driver. I grepped
> through tomcat directory and found only one reference to this driver (in
> examples section). I removed event the sample section, restarted Tomcat
but
> it didn't help.
>
> Does anyone know what is wrong?
>
> regards
> Przem
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to