Обсуждение: Re: Tomcat - PostgreSQL - Cannot load JDBC driver class "n

Поиск
Список
Период
Сортировка

Re: Tomcat - PostgreSQL - Cannot load JDBC driver class "n

От
Andreas Prohaska
Дата:
Hm, what a strange and weird problem you are having. Your setup is look
exactly the
same as mine. When you start Tomcat and have a look at it's log, what does
the log
say about the configured resources. Is it something like this:

    NamingContextListener[...]: Creating JNDI naming context
    NamingContextListener[...]:   Resource parameters for
jdbc/PersonalDb= ResourceParams[name=jdbc/PersonalDb,
    NamingContextListener[...]:   Adding resource ref jdbc/PersonalDb
    NamingContextListener[...]:
ResourceRef[className=javax.sql.DataSource,.......
    NamingContextListener[...]:   Resource parameters for
UserTransaction = null

which would be ok, or more something like that

    NamingContextListener[...]: Creating JNDI naming context
    NamingContextListener[...]:   Resource parameters for
jdbc/PersonalDb= null
    NamingContextListener[...]:   Adding resource ref jdbc/PersonalDb
    NamingContextListener[...]:
ResourceRef[className=javax.sql.DataSource,...
    NamingContextListener[...]:   Resource parameters for
UserTransaction = null

which would be wrong, because it doesn't assign the resource parameters.

Besides that you seem to have multiple versions of some libraries in your
common/lib directory. Although it should still work, I would remove those
copies. Who knows? It might help.

You don't have to do anything with your classpath.

I think that there is a problem if you do not have compatible versions
of commons-dbpc.jar and commons-pool.jar. As far as I can remember there
have been some bugfixes for DBPC that are only available in a nightly
build (not the release version), but the nightly build requires a not
yet released version of commons-pool. However, it should report this with
an exception, shouldn't it?

Sorry, that I can only guess...

    Andreas


-----Ursprüngliche Nachricht-----
Von: CRAIG GOLBY [mailto:craig@golby.me.uk]
Gesendet: Freitag, 26. September 2003 18:30
An: pgsql-jdbc@postgresql.org
Betreff: [JDBC] Tomcat - PostgreSQL - Cannot load JDBC driver class "null"


Help, I am tearing my hair out.

I am a newbie to Linux and Tomcat, and am therefore amazed that I have got
as far as I have, that said I now seem to be stuck in front of a brick wall,
with no ladder !!

Tomcat 4.1.24 is running on ServerOne (Red Hat 9), it is currently serving
out a couple of very basic JSP's and seems to be working quite well.
ServerOne also has J2SDK 1.4.1_03 installed.  PostgreSQL 7.3 is running on
ServerTwo (Red Hat 9).  Have also installed pgAdminIII on both a Windows
Laptop and ServerTwo.  The Laptop version works fine, if a little unstable,
so TCP/IP connectivity is working fine.

Within PostgreSQL I have created a new Db called "PersonalDb", within the
public Schema I have created a table called "testOne".  TestOne has three
columns, Id, FieldOne and DateStamp, and there are currently 2 rows of data
within the table

Sample of code used is below, along with a list of the Jar files in
common/lib.

I have read through so many mailing lists now and tried so many things that
I dont know what I have and havent done, am fairly sure that it is either a
configuration issue or a missing file so will no doubt kick myself when I
find out the answer.

Any assistance would be greatly appreciated.

Regards


Craig


*******************************************************
Server XML :- Tomcat/conf
*******************************************************
<Context path="/DBTest"
         docBase="DBTest"
         debug="5"
         reloadable="true"
         crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
        prefix="localhost_DBTest_log." suffix=".txt"
        timestamp="true"/>

<Resource name="jdbc/PersonalDb"
          type="javax.sql.DataSource"
          auth="Container"/>

<ResourceParams name="jdbc/PersonalDb">
 <parameter>
  <name>factory</name>
  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
 </parameter>

 <parameter>
  <name>driverClassName</name>
  <value>org.postgresql.Driver</value>
 </parameter>

 <parameter>
  <name>url</name>
  <value>jdbc:postgresql://ServerTwo:5432/PersonalDb</value>
 </parameter>

 <parameter>
  <name>username</name>
  <value>myUser</value>
 </parameter>

 <parameter>
  <name>password</name>
  <value>myPassword</value>
 </parameter>

 <parameter>
  <name>maxActive</name>
  <value>10</value>
 </parameter>

 <parameter>
  <name>maxIdle</name>
  <value>30</value>
 </parameter>

 <parameter>
  <name>maxWait</name>
  <value>10000</value>
 </parameter>

</ResourceParams>
</Context>

</Host>
</Engine>
</Service>


*******************************************************
Web XML  :-  Tomcat/webapps/root/WEB-INF
*******************************************************
  <description>PostgreSQL Test App</description>
    <resource-ref>
       <description>postgreSQL Datasource example</description>
       <res-ref-name>jdbc/PersonalDb</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>



*******************************************************
My Class File
*******************************************************

  public void init() {
    try{
      Context ctx = new InitialContext();
      if(ctx == null )
          throw new Exception("Boom - No Context");
      status = "checking CTX";

      DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/PersonalDb");
      status = "Completing Lookup of CTX";

      if (ds != null)
        {
         status = "Creating Connection";
         Connection conn = ds.getConnection();   <----- FAILS HERE
         status = "Created Connection";
         if(conn != null)
           {
            foo = "Got Connection "+conn.toString();
            Statement stmt = conn.createStatement();
            ResultSet rst =
                stmt.executeQuery(
                  "select Id, FieldOne, DateStamp from Public.testOne");
            status = "Completing Select";
            if(rst.next())
            {
               foo=rst.getString(2);
               bar=rst.getInt(3);
            }
            status = "Looped through Resultset";
            conn.close();
           }
        }
      else {status = "Fell into Else";}
    }catch(Exception e) {
      e.printStackTrace();
        status = status + ", now in exception block :-" + e.toString();

    }
 }

*******************************************************
Class Files in Tomcat/common/lib
*******************************************************
activation.jar
ant.jar
collections-2.1.jar
commons-collections.jar
commons-dbcp-1.0.jar
commons-dbcp.jar
commons-logging-api.jar
commons-pool.jar
jasper-compiler.jar
jasper-runtime.jar
jdbc2_0-stdext.jar
jndi.jar
jta.jar
mail.jar
naming-common.jar
naming-factory.jar
naming-resources.jar
pg73jdbc3.jar
pool-1.0.1.jar
postgresql.jar    (Copy of  pg73jdbc3.jar)
servlet.jar

Tomcat - PostgreSQL - Perfomance Tunning

От
Germán Gazzoni
Дата:
We’re using PostgresSQL with Tomcat on Linux Red Hat 9 kernel 2.4.20-8
and we´re experiencing performance problems when more than 20 users are
connected to the database..

The database has approximately 24 MB, the application is entirely
constructed with Java an all of connections on that database are using
JDBC.

The server characteristics are:
- Pentium 4 2.8 Mhz
- 2 GB of RAM
- 80 GB of disk storage


Any body can help us on how to begin a performance tuning job for this
architecture?.

Thanks,

Germán