# Tomcat: "Unable to get connection, DataSource invalid&q



## JFreak (1. Jan 2008)

Hallo,

die volle Fehlermeldung lautet:


```
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/sampi"
	org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)
	org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)
	org.apache.jsp.index_jsp._jspx_meth_sql_005fquery_005f0(index_jsp.java:160)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:96)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390
```

Kritisiert wird im Quelltext folgender Teil:


```
<sql:query var="users" dataSource="${db}">
  SELECT * FROM users
</sql:query>
```

Die Datenquelle habe ich so gesetzt:

```
<sql:setDataSource 
  var="db"
  scope="session"
  driver="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/sampi"
  user="dummy"
  password="dummy"
/>
```

Datenbank läuft, mit direkter Arbeit über JDBC (ConnectionManager etc.) läuft alles. MySQL-Driver ist im Classpath. Wo ist das Problem?

Lars


----------



## maki (2. Jan 2008)

> MySQL-Driver ist im Classpath.


Wo genau?



> Wo ist das Problem?


Er findet den JDBC Treiber nicht, so wie es in der Exception steht:


> No suitable driver found for


----------



## JFreak (2. Jan 2008)

Die Jar-Datei befindet sich im Standardordner bei Netbeans 6 (<netbeanshome>\ide8\modules\ext). Anschließend habe ich die vorhandene Bibliothek "MySQL..." im Projekt bei "Libraries" hinzugefügt.


----------



## maki (2. Jan 2008)

> Die Jar-Datei befindet sich im Standardordner bei Netbeans


Da nützt sie dir (fast) nix, lieber im richtigen Ordner so wie es der Standard (und Tomcat auch) will.

Wenn die Datasource "Container-Managed" ist, gehört die jar ins TOMCAT_HOME/common/lib, ansonsten in den WEB-INF/lib Ordner deiner Webanwendung.


----------



## JFreak (2. Jan 2008)

Ja, das haut hin. Ich habe die Jar-Datei einfach in TOMCAT_HOME/lib kopiert (common/lib existiert bei mir nicht). Prima, danke!


----------



## maki (2. Jan 2008)

Du solltest die jars nicht einfach irgendwo und überall hinkopieren , wenn du die DS selbst verwaltest, gehört sie ins WEB-INF/lib Verzeichnis.

Warum das wichtig ist?
Die Anwendung sollte an sich alles dabeihaben um überall zu laufen, wenn deine Anwednung eine eigene DS verwaltet, braucht sie auch den JDBC Treiber dazu, somit gehört der JDBC Treiber in WEB-INF/lib Verz.



> common/lib existiert bei mir nicht


Welche TC Version benutzt du?

Ich hoffe du richtest deine Anwendung nicht nach Netbeans aus, es haben schon soviele Webanwednungen auf die IDE ausgerichtet, dass diese danach woanders nicht lauffähig waren, das es nicht mehr lustig ist.. (zB. fehlender Context, falsche Verzeichnissstruktur, etc. pp.)


----------



## JFreak (2. Jan 2008)

Ich versuche das schon nach Kräften universell lauffähig zu bekommen. Es soll ein Projekt werden, was auch ohne IDE laufen soll. Der MySQL-Connector ist nur ein Provisorium, in der Produktivumgebung soll Java DB laufen, was im JDK 6 sowieso enthalten ist. Da sollte es keine Probleme geben.

Tomcat ist übrigens 6.0.14.

EDIT: Mich macht gerade noch etwas stutzig. Warum ist er noch nicht bei Class.forName("com.mysql.jdbc.Driver") rausgeflogen?


----------



## JFreak (13. Feb 2008)

Hallo,

ich muss diesen Thread leider wieder ausgraben, da mein Problem doch nicht gelöst ist. Es tritt wieder der gleiche Fehler auf. Wenn ich aus einer JSP eine Java Bean aufrufe, in welcher dann eine DB-Connection geöffnet wird, funktioniert alles tadellos. Über die Taglibs hingegen funktioniert gar nichts. Die Jar-Datei mysql-connector-x.x.x.jar ist in der War-Datei im Verzeichnis WEB-INF\lib vorhanden. Woran kann das liegen?

Lars


----------



## JFreak (13. Feb 2008)

Ich sollte heute nichts mehr machen. Der Fehler liegt im Detail. So muss es aussehen:
<sql:query dataSource="${db}" var="rs">
So sah es aus:
<sql:query dataSource="db" var="rs">
Da kommt natürlich Käse raus!

Lars


----------

