PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CGI & MySQL Zugriff mit ClassNotFoundException



tortugita
07.05.15, 16:27
Hallo zusammen

Ich brauche dringendst Hilfe bez. folgender Problematik (Bin für jeden Tip dankbar):

Habe einen Ubuntu Server (14.04) mit Apache2 & Tomcat6 am laufen. Über eine lokale Website werden MySQL Abfragen gemacht (CGI & Perl Skript). Nun wirft das aufgerufene SQL Query in Java, dass vom Perl Script aufgerufen wird (über Browser als www-data User) immer ein "java.lang.ClassNotFoundException: com.mysql.jdbc.Driver". (Fehler registriert in log /var/log/apache2/error.log)
Rufe ich das Perl Script, welches das Java Programm aufruft, manuell von der Konsole auf, so funktioniert alles einwandfrei und ich erhalte die Daten von der Datenbank. Habe schon symb. Link des Java Mysql connectors in /usr/share/tomcat6/lib gemacht, aber ohne Erfolg.

Bitte um Hilfe!!!

Danke & MfG

DrunkenFreak
07.05.15, 16:44
Funktioniert das auch noch, wenn du als Benutzer www-data das Skript per Hand aufrufst?

Evtl. sind die Umgebungsvariablen für Java nicht richtig geladen.

tortugita
07.05.15, 18:25
Wenn ich mich als www-data einlogge, dann funktioniert es auch mit manuellem Aufruf. Die Umgebungsvariable des mysql habe ich in /etc/environment gesetzt: CLASSPATH=".:/usr/share/java/mysql.jar"

marce
07.05.15, 20:05
So wie es aussieht wird die Klasse einfach nicht gefunden - vermutlich stimmt also irgendeine Environment-Variable nicht. Lass Dir die relevanten Variablen (ClassPath u.s.w.) einfach mal ausgeben.

Du könntest auch mal noch ein wenig mehr zu der Umgebung sagen und wie das was verschaltet ist - ich frage mich z.B. gerade, warum Du ein Java-Programm über Apache, CGI + PHP aufrufst, wo Du doch einen TomCat am laufen hast?

tortugita
08.05.15, 15:21
Das ist gut möglich. Wie erwähnt habe ich den connector in Classpath wia /etc/environment definiert. Ev. Tips, welche Variablen fehlen? Da zumindest bei direktem login über User Funktionalität per Shell funktioniert, nehme ich an, dass keine Variablen fehlen sollten.

Grundsätzlich erfolgt über Browser die Navigation einer dynamischen Webseite, welche per CGI das Perl Skript aufruft und die Site dynamisch erzeugt. Dabei sind auch MySql Manipulationen dabei, welche vom Perl Skript die entsprechenden Java Files aufrufen. Und genau bei diesen DB Manipulationen per Web Browser werden die Exceptions geworfen.

tortugita
09.05.15, 13:36
Habe es nun gelöst. Die Problematik ist, dass für den Apache die Variable in /etc/apache2/envvars definiert werden muss (export CLASSPATH=$CLASSPATH:/usr/share/java/mysql.jar). Danach muss aber noch im Apache config file /etc/apache2/apache2.conf PassEnv gesetzt werden (PassEnv CLASSPATH).

Vielen Dank für alle Tips!!!

MfG