# Tomcat, MySQL



## heffernan (30. Okt 2007)

Hallo,

ich möchte die eingebaute Authentication vom Tomcat benutzen. Habe dazu die "mysql-connector-java-5.1.5-bin.jar" in das lib Verzeichnis meines Tomcats (Version 6) kopiert. Gemäß der Anleitung auf der Apache Homepage (Link) habe ich folgendes der server.xml hinzugefügt:


```
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
      driverName="org.gjt.mm.mysql.Driver"
   connectionURL="jdbc:mysql://localhost:3306/projekt?user=user&password=password"
       userTable="users" userNameCol="username" userCredCol="password"
   userRoleTable="users" roleNameCol="rolename"/>
```

Und bekomme schon beim Start des Tomcats die folgende Meldung:


```
SCHWERWIEGEND: Exception opening database connection
java.sql.SQLException: org.gjt.mm.mysql.Driver
	at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:691)
	at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:769)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1037)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
```

Die MySQL DB läuft definitiv und über ein normales Java-Programm kann ich auch darauf zugreifen. Verwende hierbei allerdings einen anderen Parameter für die Verbindung zur DB. Setzte com.mysql.jdbc.Driver in die Server.xml ein, ändert sich allerdings nichts an der Fehlermeldung.


```
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;

public class sqlconn {
	public static void main(String[] args) throws SQLException, ClassNotFoundException{
		Class.forName( "com.mysql.jdbc.Driver" );
		Connection cn 		= DriverManager.getConnection("jdbc:mysql://localhost:3306/projekt", "root", "berlin");
		Statement  st    	= cn.createStatement();
		ResultSet  rs    	= st.executeQuery("select count(*) from users" );
		if(rs.next()) 
			System.out.println(rs.getString(1));
		rs.close();
		st.close();
		cn.close();
	}
}
```

Bin überfragt


----------



## maki (30. Okt 2007)

Kannst du denn eine Verbindung vom localhost zur DB herstellen?


----------



## heffernan (31. Okt 2007)

maki hat gesagt.:
			
		

> Kannst du denn eine Verbindung vom localhost zur DB herstellen?



Bin nicht sicher was du meinst. Das Javaprogramm kann jedenfalls auf die Datenbank zugreifen und verwendet ja localhost als Adresse.

Gibt es eine Möglichkeit die Fehlermeldung ausführlicher zu bekommen?


----------



## maki (31. Okt 2007)

Wenn der JDBC Treiber das commons-logging unterstützt, kann man das aktivieren.

Den TC Debug hast du ja schon hoch geschraubt.

Versuche dich einfach mal in beiden Fällen mit dem selben Benutzer anzumelden, MySql lässt in der Standard Konfig nicht jeden vom localhost zugreifen.


----------



## freez (5. Nov 2007)

Hallo,

hast du es schon mal mit dem Lib Verzeichniss deiner Applikation versucht? Ich hatte ähnliche Probleme mit der 6er Version von Tomcat. Bin bis jetzt immer noch nicht dahinter gestiegen, wohin ich die JAR packen muss im Tomcat. Aber im Lib Verzeichniss der Applikation hatte es damals funktioniert.

ich hatte damals auch die Klasse com.mysql.jdbc.Driver benutzt.


----------

