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:918)
....
{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]>