Проблема загрузки драйвера JDBC в пуле соединений JDBC - PullRequest
1 голос
/ 07 февраля 2012

Я настроил пул соединений JDBC, и он показывает следующую ошибку, когда я выполняю пример страницы JSP, пытающейся использовать соединение.

Error occurred org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load 
    JDBC driver class 'com.sybase.jdbc3.jdbc.SybDriver' 

Я поместил jconn2.jar оба в common/libи web-inf/lib.Как исправить ошибку?

    The context.xml

<Context>
        <Resource name="jdbc/mysybase" auth="Container"
                  type="javax.sql.DataSource" driverClassName="com.sybase.jdbc3.jdbc.SybDriver"
                  url="jdbc:sybase:Tds:H2S33.studtrack.com:2025/student"
                  username="scott" password="tiger" maxActive="20" maxIdle="10"
                  maxWait="-1"/>
    </Context>


    In The web.xml file
    <resource-ref>
     <description>Sybase Datasource example</description>
     <res-ref-name>jdbc/mysybase</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>


    And the jsp page

    <%@page import="java.sql.*"%>
    <%@page import="javax.naming.Context"%>
    <%@page import="javax.naming.InitialContext"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="java.sql.SQLException"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="javax.sql.DataSource"%>
    <html>
    <head>
    <title>Obtaining a Connection</title>
    </head>
    <body>

    <%
        Connection conn = null;
        ResultSet result = null;
        Statement stmt = null;
         try {
           Context initContext = new InitialContext();
        Context envContext  = (Context)initContext.lookup("java:/comp/env");
           DataSource ds = (DataSource)envContext.lookup("jdbc/mysybase");
           conn = ds.getConnection();
        if (conn != null) 
        {
            String message = "Got Connection " + conn.toString() + ", ";
            out.write(message);
        }
        else
        {
            out.write("hello no conn obtained");

        }

            stmt = conn.createStatement();
            result = stmt.executeQuery("SELECT * FROM Student");
        while(result.next())
        {
            out.write(result.getString("name"));
        }

         }
         catch (SQLException e) {
             out.write("Error occurred " + e);
          }

    %>

    </body>
    </html>`

1 Ответ

2 голосов
/ 07 февраля 2012

Драйвер Sybase JDBC имеет разные названия пакетов в разных версиях. Вы пытаетесь загрузить более новую версию com.sybase.jdbc3.jdbc.SybDriver, в то время как ваша банка скорее всего содержит более старую com.sybase.jdbc2.jdbc.SybDriver.

...