Tomcat automatische Benutzer abfrage funktioniert nicht.

your-mike

Grünschnabel
Hallo zusammen,
ich habe folgendes Problem:
bei einem Projekt versuche ich eine Automatischen Benutzerlogin über web.xml und context.xml vom Apache Server durchführen zu lassen.
Die web.xml sieht so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>backend implementierung</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>backend</web-resource-name>
			<url-pattern>/*</url-pattern>
			<http-method>GET</http-method>
			<http-method>POST</http-method>
		</web-resource-collection>
		<auth-constraint>
			<role-name>admin</role-name></auth-constraint>
	</security-constraint>
	<security-role>
		<description>Administrator</description>
		<role-name>admin</role-name>
	</security-role>
	<login-config>
		<auth-method>BASIC</auth-method>
		<realm-name>JDBCRealm</realm-name></login-config>
</web-app>

und meine context.xml:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<Context>

 <Realm   className="org.apache.catalina.realm.JDBCRealm" debug="99"
          driverName="org.gjt.mm.mysql.Driver"
          connectionURL="jdbc:mysql://inet00.de:3306/"
          connectionName="<user>" connectionPassword="<pw>"
          userTable="user" userNameCol="email" userCredCol="passwort"
          roleNameCol="rolle" realmName="JDBCRealm" resourceName="<dbName>"></Realm>
          
</Context>

natürlich habe ich die <variablen> sinvoll ersetzt. Leider bekomme ich keinen Zugriff hin. Der Tomcat liefert immer die Fehlermeldung:

Code:
SCHWERWIEGEND: Exception opening database connection
java.sql.SQLException: org.gjt.mm.mysql.Driver
	at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:693)
	at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:771)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4166)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:448)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
	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:295)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

weis einer hier vielleicht woran das liegen könnte? Oder mache ich an den xml definitionen was falsch?
 
S

SE

Warum verwendest du diesen UR-ALT-Kompatibilitäts-Driver ?
Schon mal auf der MySQL-Seite nachgelesen wofür dieser ist ? Lediglich um sehr alten Anwendungen welche noch für diese alte Driver-Version entwickelt wurden weiterhin funktionieren. Bei neuen Anwendungen sollte man IMMER den neuen Driver "com.mysql.jdbc.Driver" verwenden.
Auch ist deine Datenbank-URL nicht ganz korrekt : "jdbc:mysql://Host:port/Datenbank" ... bei dir fehlt der letzte Parameter. Soweit ich weis wählt der Server nur die Tabelle , nicht aber die Datenbank alleine.
 

your-mike

Grünschnabel
Danke, habe ich gleich ausporbiert die neue context.xml sieht so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Context>

 <Realm   className="org.apache.catalina.realm.JDBCRealm" debug="99"
          driverName="com.mysql.jdbc.Driver"
          connectionURL="jdbc:mysql://inet00.de:3306/usr_web1681_1"
          connectionName="<user>" connectionPassword="<passwort>"
          userTable="user" userNameCol="email" userCredCol="passwort"
          userRoleTable="user" roleNameCol="rolle"></Realm>
          
</Context>

leider hat dies auch keine erfolg gebracht da die Fehlermeltdung immer noch änlich aussieht:

Code:
SCHWERWIEGEND: Exception opening database connection
java.sql.SQLException: com.mysql.jdbc.Driver
	at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:693)
	at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:771)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4166)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:448)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
	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:295)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

Ist es überhaupt möglich bei solch einem zugriff die Rolle in der ganz normalen user Tabelle zu haben oder muss dafür zwingend die Rolle in eine eigene Tabelle?
 
S

SE

Ähm ... Frage : ist der Driver überhaupt richtig installiert und kann verwendet werden ? ... Server schon mal neu gestartet ...

Weil dieser StackTrace ist dann doch etwas dürftig ... aber dafür kannst du ja nichts.
 

your-mike

Grünschnabel
Genau dass wars. Der Tomcat selbst benötigte noch die mysql-connector-java-5.1.16-bin.jar.
Danke für die schnelle Hilfe.

Grüße
Michael
 
S

SE

Das ist jetzt nicht dein Ernst oder ?
Du hast versucht auf einen Driver zuzugreifen ohne diesen zu installieren ? Sorry ... aber das ist wirklich selten ... *zensiert*.

btw : makiere den Thread bitte als erledigt.
 

your-mike

Grünschnabel
naja doch der treiber ist schon installiert bei mir aber nicht auf dem Online Tomcat wo ich Ihn erst nicht nur im Projekt deployen musste sondern auch noch dem Tomcat mitgeben. Dachte dass der Tocat diese Bibliotekten besitzt.
 
S

SE

Nein ... von selbst aus nicht ... woher denn auch ?
Nur weil Sun MySQL aufgekauft hat und beide zusammen dann von Oracle geschluckt wurden heißt das nicht das irgendwelche DB-Driver nun automatisch mit drin sind *wobei man das in der neuen 7er Version ruhig mal hätte machen können weil es ja mitlerweile alles unter einem Namen läuft*.
Solche Lib's musst du Grundsätzlich für jedes Projekt oder den gesamten Server installieren und danach in der Regel das ganze neu starten damit der Driver auch geladen wird. Wie das bei Online-Hostern der Fall ist wo du ja keine Möglichkeit zu re-start hast weis ich nicht ... aber du siehst ja das es doch irgendwie geht.