Probleme beim ConnectionPooling mit mySQL

cfenner

Mitglied
Hallo,

ich brauche dringend Hilfe mit meine Datenbankanbindung.
Ich möchte connection pooling in meine Applikation einbauen.. hab dazu diverse Anleitungen gelesen aber offensichtlich nicht alles richtig gemacht. Ich erhalte beim Serverstart immer folgenden Fehler.
Code:
24.09.2008 09:42:12 org.apache.catalina.core.NamingContextListener addResource
WARNUNG: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

Bei meiner DB handelt es sich um eine mySQLdb.

sql-class
Code:
  Ctx	= new InitialContext();
  ds = (DataSource)Ctx.lookup("java:comp/env/jdbc/autoDB");
  connection = ds.getConnection();
  resultSet = connection.createStatement().executeQuery(chkPwdQuery);
web.xml
Code:
  [...]
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/autoDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
</web-app>
server.xml
Code:
<Server>
  <Context>
    <Resource name="jdbc/autoDB" auth="Container" 
              type="javax.sql.DataSource"
              maxActive="100" maxIdle="30" maxWait="10000"
              username="xyz" password="123"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://123.456.78.90/autostruts"/>
  </Context>

Ich hab gesehen dass bei manchen rescourcen eine factory mit angegeben ist.. welche wäre das bei mySQL, und würde das schon helfen?
Code:
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
 
Einfach von vorn nach hinten durchdenken: ClassNotFound heißt was? Richtig, die Klasse kann nicht gefunden werden! Ergo fehlt vermutlich das JAR mit der Klasse im Classpath (in deinem Fall wohl commons-dbcp.jar).

Stellt sich jetzt noch die Frage: Warum ist das so? Ich vermute mal du arbeitest mit Eclipse? Bei Serveranwendungen musst du die JARs, die nach WEB-INF/lib exportiert werden sollen (um im Classpath zu landen) explizit im J2EE Module dependencies Bereich der Projekteigenschaften anhaken.

Gruß
Ollie
 
Dein Projekt -> Rechtsklick -> Properties -> Java EE Module Dependencies.

Wie kommt die Anwendung in das webapps Verzeichnis? Wie sieht dein Deployvorgang aus?

Gruß
Ollie
 
Dein Projekt -> Rechtsklick -> Properties -> Java EE Module Dependencies.
Diesen Punkt gibt es leider nicht in meinen Projekteigenschaften. Ich benutze myEclipse 6.5

Wie kommt die Anwendung in das webapps Verzeichnis? Wie sieht dein Deployvorgang aus?
Ich habe das Projekt als War-Archiv auf einem tomcat veröffentlicht.
Das ist übrigens nicht der eclipse-interne tomcat falls das von bedeutung sein könnte.
 
Zuletzt bearbeitet:
Ok.. Problem gelöst.

mein tomcat hatte keine tomcat-dbcp.jar in seinem lib-Verzeichnis (warum auch immer....) in der jar-Datei sind die Jakarta-Commons DBCP, Jakarta-Commons Collections und Jakarta-Commons Pool enthalten.

Leider gehts noch immer nicht.. der Fehler ist nun ein anderer : (

edit:
url und driverclass sind eigentlich in der server.xml angegeben..

exception: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
 
Zuletzt bearbeitet:
Zurück