MySQL + Java JDBC Connector

Hi,

@Spike vielen Dank für die ausführliche Antwort. Ich hatte schon einpaar Beiträge von dir gelesen auch den "dummy-klasse" kann aber nicht so den Sinn verstehen (Sorry bin noch in Sachen Datenbanken Anfänger).
Also zu den Gründen 1 und 2 habe ich mich geäußert (Server läuft und Port ist standard). Zu 3 ich nutze ubuntu und hab noch nie eine Firewall-Einstellung vorgenommen (Wäre cool zu wissen was man alles dort einstellen kann, gehört aber nicht in diesen Thread).

Zu "Class.forName() und JDBC-Driver" alle Beispiel/Tutorials die ich gelesen hab benutzen diese Syntax. Ich bin gerne bereit neues zu lernen und würde mich über einen link freuen der die neue Syntax einschließt.

Zu "Enumeration" ich wollte nur sehen ob ich den driver richtig eingebunden hab, hätte ja seien können das "Communication failure" aus gelöst wird weil er den driver nicht findet?

Zu "IP" ich hatte noch nie Probleme mit Host-name vor allem nicht bei unix-Systemen, aber gut zu wissen.

Zu "mysql in MySQL" gebe ich zu eine etwas doofe Frage, aber der User will nur helfen. Bitte nicht zu sehr darauf rumhacken.

So und ich habe mein Problem gelöst.
Zuerst hab ich in /etc/init.d/tomcat6 nachgeschaut ob die TOMCAT6_SECURITY=no ist, dem war so :(.
Als nächstes hab ich die bind-addresse in etc/mysql/my.cnf auskommentiert und das war die Lösung.

Aber ich bin damit nicht ganz zufrieden, das ist doch nicht sicher oder? Mit dieser Einstellung hört der MySQL-Server alles?

Gruß Air
 
zum Auto-Load

Erstmal muss ich mich korrigieren ... so alt ist es dann doch noch nicht. Driver-Auto-Load wurde erst mit JDBC4 und damit mit Java6 eingeführt ... war mein Fehler.
Von offizieller Seite : http://today.java.net/pub/a/today/2...jdbc-40.html#getting-connected-becomes-easier

Das so gut wie alle Seiten im Netz den alten Standard verwenden liegt entweder daran das diese aus der Zeit vor JDBC4 sind oder daran das sich die Autoren an solch alten orientiert oder es falsch gelernt haben. Auch könnte abwärtskompatibilität ein Grund sein.

Ganz nebenbei : wenn du Tomcat startest und dieser in seinem CP einen JDBC-Driver findet wird dieser eh für die gesamte Laufzeit geladen und kann somit natürlich von allen anderen Klassen verwendet werden ohne ihn selbst dierekt laden zu müssen. Ich würde also vorschlagen anstatt den MySQL-JDBC-Driver nur pro Projekt zu verwendet für den gesamten Tomcat-Server verfügbar machen.


Hmm ... zu klären wäre jetzt ob Tomcat unter Unix über einen File-Socket geht */var/etc/mysql.sock oder sowas ... keine Ahnung* oder über einen TCP-Socket *127.0.0.1:3306* und welches von beiden auf deinem Server überhaupt verfügbar ist bzw verwendet wird.

Wie sah denn die BIND-Zeile der Config vorher aus ? Weil ich kann es mir irgendwie nicht vorstellen das wenn du einer Server-Anwendung den Parameter für den Socket wegnimmst sich dann plötzlich eine andere verbinden kann. Oder stand in dieser Zeile eben der File-Socket welcher den TCP-Socket blockiert hat ?

Natürlich bin ich froh das es funktioniert ... aber warum gerade erst nach löschen der BIND-Zeile in der Config würde mich dann doch schon interessieren.
 
Hi Spike,

ich bin genauso verwundert wie du. Ich habe keine Ahnung wie ich das erklären kann, aber auf die Lösung bin ich darüber gekommen:
http://serverfault.com/questions/89...h-jdbc-connector-through-tomcat-or-externally
In der bind zeile war nur die IP des Computers (dieser hängt an einem größeren Netzwerk, also keine Standard_ip).

Zum Connector den hab ich in die ext von java gesteckt somit wird er doch für jedes java projekt genutzt?

Ich schätze das sehr das du dir so viel Zeit für mein Problem nimmst vielen Dank.

Gruß Air
 
Also davon ausgehend das diese Maschine eine Art "Server" sein soll sollte man eine statische IP zuweisen.
Was den Ort des JDBC-Drivers angeht : ja naja ... kann man für sich selbst so machen ... aber in nem produktivem Umfeld eher ungern gesehen.

Soweit ich den Link verstanden habe hat es was mit dem bound-to-interface und dem DNS-resolve zu tun. Dir das ganze jetzt so zu erklären das man es halbwegs versteht würde den Rahmen des Posts sprengen.
 
Zurück