On Wed, 6 Oct 2004 14:37:58 -0700, Eric Wulff <[EMAIL PROTECTED]> wrote:
> I have gone over some of the tomcat docs and googled errors
> but there is SO much information covering JNDI, connection pooling,
> and Datasources. Can someone review the info below and consult or
> point me in the right direction? Although I feel I'm missing
> something obvious, I can't find out what's wrong with my set-up.
>
> thx
> Eric
>
> System:
> Tomcat 5 on Fedora Core 2 connecting to a db on an Informix Dynamic
> Server 9.4 on Windows Server
>
> -I am able to connect to my db via typical JDBC
> DriverManager.getConnection(). This leads me to believe that my
> informix jdbc driver is in the correct place...
> CATALINA_HOME/common/lib
> -I have a Context set up in my server.xml per examples in a text
> tutorial I'm referencing
>
> Below listed...
> -errors
> -web.xml
> -server.xml <Context> (minus connection actual values)
> -.java
>
> exception/errors:
> -Exception: org.apache.commons.dbcp.SQLNestedException: Cannot create
> JDBC driver of class '' for connect URL 'null'
> SQL state: null
> Error code: 0
>
> -stack trace reveals this, but I can't see why since I have the driver
> in the correct directory...
> java.sql.SQLException: No suitable driver at
> java.sql.DriverManager.getDriver(DriverManager.java:243) at
> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
>
> web.xml:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!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>
> <servlet>
> <servlet-name>Test Connection Pooling</servlet-name>
> <servlet-class>TestConnectionPooling</servlet-class>
> </servlet>
>
> <servlet-mapping>
> <servlet-name>Test Connection Pooling</servlet-name>
> <url-pattern>/testConnectionPooling</url-pattern>
> </servlet-mapping>
>
> <resource-ref>
> <res-ref-name>jdbc/test_connect</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
> </web-app>
>
> server.xml <Context>:
> <Context path="/testConnectionPooling"
> docBase="testConnectionPooling" debug="0" reloadable="true">
<Resource name="jdbc/test_connection" auth="Container"
type="javax.sql.DataSource"/>
is missing
> <ResourceParams name="jdbc/test_connect">
> <parameter>
> <name>username</name>
> <value>informix</value>
> </parameter>
> <parameter>
> <name>password</name>
> <value>informix</value>
> </parameter>
> <parameter>
> <name>driverClassName</name>
> <value>com.informix.jdbc.IfxDriver</value>
> </parameter>
> <parameter>
> <name>url</name>
> <value>jdbc:informix-sqli://url:port/dbName:INFORMIXSERVER=serverName</value>
> </parameter>
> </ResourceParams>
> </Context>
>
> .java:
> import java.io.*;
> import java.sql.*;
> // -Must import javax.naming use JNDI which is required to implement data
> // resource references and hence connection pooling.
> import javax.naming.*;
> import javax.sql.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import java.util.*;
>
> public class TestConnectionPooling extends HttpServlet {
> private DataSource dataSource;
>
> public void init(ServletConfig config) throws ServletException {
> try {
> Context init = new InitialContext();
> // don't know what the 'java:comp/env' refers to
> Context ctx = (Context) init.lookup("java:comp/env");
> // I know "jdbc/conversion must match the web.xml
> res-ref-name of
> the web.xml but don't know what the path really refers to
> dataSource = (DataSource) ctx.lookup("jdbc/test_connect");
> } catch (NamingException ex) {
> throw new ServletException("Cannot retrieve
> java:comp/env/jdbc/test_connect",ex);
> }
> }
>
> public void doGet(HttpServletRequest request, HttpServletResponse response)
> throws ServletException, IOException {
> response.setContentType("text/html");
> PrintWriter out = response.getWriter();
> Connection connection = null;
> out.println ("<HTML><HEAD><TITLE>Test Connection
> Pooling</TITLE></HEAD><BODY>");
> out.println("<H1>Customer Name Query</H1>");
>
> try {
> synchronized(dataSource) {
> connection = dataSource.getConnection();
> }
> out.println("<br>");
> out.println("<strong>Loaded informix driver successfully via
> server.xml.</strong>" +
> "Now attempting db connection.");
> out.println("<br>");
> PreparedStatement pstmt =
> connection.prepareStatement("SELECT blah
> FROM blah blah");
> ResultSet results = pstmt.executeQuery();
> if (!results.next()) {
> throw new SQLException("No data returned for some
> reason");
> }
> out.println("<br>");
> while(results.next()) {
> out.println("<tr><td>" + results.getString("blah") +
> "</td></tr>");
> }
> } catch (Exception ex) {
> out.println("<br>");
> out.println("Exception: " + ex);
> if(ex instanceof SQLException) {
> SQLException sqlex = (SQLException) ex;
> out.println("<br>");
> out.println("SQL state:
> "+sqlex.getSQLState()+"<BR>");
> out.println("<br>");
> out.println("Error code:
> "+sqlex.getErrorCode()+"<BR>");
> out.println("<br><br>");
> sqlex.printStackTrace(out);
> out.println("<br><br>");
> }
> }
> finally {
> try { connection.close(); } catch (Exception ex) {}
> }
> out.println ("</BODY></HTML>");
>
>
> }
> }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
:)
Atishay Kumar
Btech, SEM VII
DA-IICT
Gandhinagar - 382009
India
ph: +91 9825383948
/****************************************************************************
* Learn the rules as you would need them to break them properly *
****************************************************************************/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]