GWT - Externe Java Libs auf Server Seite - zB. JDBC

MadBlue

Aktives Mitglied
Hallo zusammen,

ich mach gerade meine ersten Gehversuche mit GWT.
Aktuell versuche ich auf der Serverseite eine Verbindung zu meinem mySQL Server herzustellen.
Hab dazu den mySQL JDBC Treiber als externe JAR in die "build Path" importiert. Beim Ausführen kams dann natürlich zum Error, da das Paket wohl dem Application-Server nicht bekannt ist. Hab das Paket dann noch mit " <inherits name="com.mysql.jdbc"/>" in die *.gwt.xml importiert. (wobei ich mir nicht ganz sicher bin ob hier nicht nur Client Seitige Pakete importiert werden müssen?)

Na wie auch immer, das wirft jetzt eine andere Exception:
Code:
 [ERROR] Unable to find 'com/mysql/jdbc.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
         [ERROR] Line 16: Unexpected exception while processing element 'inherits'

Glaub ich treib da gerade Unfug.
Weiß da wer wie man das richtig anstellt?

Sören

EDIT:
Habs selber raus bekommen.
Der "Trick" ist das die externe Jar mit ins war verzeichnis muss... hab den BuildPath dann auch direkt da drauf gelegt und fertig...
 
Zuletzt bearbeitet:

Latsche90

Mitglied
Hi,

kann mir hierzu auch jemand helfen?

Versuchs schon seit 5 stunden selbst hin zu bekommen, aber klappt nicht. :(

Ich programmiere mit Eclipse.
Ich habe eine kleine GWT-Anwendung mit GWT-RPC, wo serverseitig auf meine mysql-datenbank zugegriffen wird. Die Anwendung wird fehlerfrei compiliert nur das komische:

Sobald ich mit der Client-seite teste, kommt eine Fehlermeldung, dass die Mysql-Treiber nicht gefunden werden. Baue ich aber eine Main-Klasse auf der serverseite dazwischen und teste nur den Datenbankconnector, findet er die Mysql-Treiber.

Was du oben geschrieben hast, habe ich auch probiert hat aber nichts davon geklappt.

Bin am verzweifeln, baue jetzt auf euch

grüße

*.gwt.xml
[XML]
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.1//EN"
"http://google-web-toolkit.googlecode.com/svn/tags/2.5.1/distro-source/core/src/gwt-module.dtd">
<module rename-to='alphabetmemory'>
<inherits name='com.google.gwt.user.User'/>

<inherits name='com.google.gwt.user.theme.clean.Clean'/>

<entry-point class='de.home.alphabetMemory.client.AlphabetMemory'/>

<source path='client'/>
<source path='Beans'/>
<source path='Beans.services'/>



</module>

[/XML]

dbconnector.java
Java:
package de.home.alphabetMemory.server.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnector {
	
	private static Connection con;
	
	public static void createDriverClass() {
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			System.out.println("com.jdbc.mysql.Driver gefunden");
		} catch (ClassNotFoundException e) {
			System.out.println("com.jdbc.mysql.Driver nicht gefunden");
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void connect() {
		try {
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/memory", "root", "grefrath");
			System.out.println("Datenbankverbindung erstellt");
		} catch(Exception e) {
			System.out.println("Fehler: Verbindung zur Datenbank konnte nicht hergestellt werden");
			e.printStackTrace();
		}
	}
	
	public static void disconnect() {
		try {
			con.close();
			System.out.println("Datenbankverbindung geschlossen");
		} catch (SQLException e) {
			System.out.println("Fehler: Connection konnte nicht geschlossen werden.");
			e.printStackTrace();
		}
	}
	
	public static Connection getCon() {
		return con;
	}

}

playermapper.java
Java:
Eine riesen Klasse die Informationen in die Datenbank speichert. Aber der Fehler wird immer schon oben im DBConnector geworfen.

main.java
Java:
package de.home.alphabetMemory.server.db;

import de.home.alphabetMemory.Beans.Player;

public class Main {
	
	public static void main(String[] args) {
		PlayerMapper pm = new PlayerMapper();
		
		for(Player p : pm.showAllPlayer()) {
			System.out.println(p.toString());
		}
	}

}
 
Zuletzt bearbeitet:

MadBlue

Aktives Mitglied
Hi,

also erstmal: Das du nicht von der Client Seite auf den MySQL Treiber zugreifen kannst ist eh klar gell?

Das Problem ist wie bereits kurz angeschnitten, das zur Laufzeit des Programms, der Java-App-Server nicht auf die mySQL Libs zugreifen kann, da diese einfach nicht im Package vorhanden sind. In der klassischen Java-EE Anwendung kann man die ja einfach mit "Deploy Assembly" hinzufügen. In der GWT schaut das anders aus.

Meine Lösung war wie folgt: Lege den MySQL treiber (also die .jar) in das Libs Verzeichnis im War Ordner des GWT Projektes, und mach den Build-Path von dort aus. Weiß nicht ob das die Vorzeigelösung ist, aber sie tut es zumindest!

Sören
 

Latsche90

Mitglied
Danke für die sehr schnelle Antwort.

Also hab jetzt die *mysql.jar* datei in den \war\WEB-INF\lib\* gelegt und er findet den Treiber :)
Cool danke schonmal.

Aber dass der Client jetzt trotzdem nicht auf die Datenbank kommt ist mir nicht so ganz klar sry. Jetzt kommt nämlich bei mir in der PlayerMapper.java Klasse der Fehler. Aber das liegt nicht am Quellcode sondern weil gwt wieder iwelche Klassen nicht findet.

Z.b kommt jetzt bei mir diese Fehlermeldung über die Client-Seite
Java:
Unable to initialize driver properties due to java.lang.IllegalAccessException: Class com.google.appengine.tools.development.agent.runtime.Runtime can not access a member of class com.mysql.jdbc.ConnectionPropertiesImpl with modifiers "private"

Sry das mit der GWT-logik hab ich noch nicht so ganz raus.
Was muss ich tun, damit der Client den Servercode und Mysql-Code sauber ausführen kann.
 
Zuletzt bearbeitet:

MadBlue

Aktives Mitglied
Die Client Seite kann nur GWT eigene Klassen verwenden da diese Objekte hinterher nach Java-Script kompiliert werden. Der Java-Java-Script Kompiler hat aber keine Ahnung wie ein MySQL Treiber in Java-Script aussehen müsste.

Wenn du etwas aus der Datenbank laden willst, dann tust du das auf der Server Seite. Die geladenen Informationen steckst du in ein GWT Kompatibles Objekt. Das kannst du ja auf der Client-Seite ausführen.

Bin aber auch nicht ganz Trittsicher auf dem Thema. Bin selber noch dabei mich rein zu arbeiten.

sröen

EDIT:

nur so btw. du willst auch nicht das Client-Seitig eine Datenbankverbindung aufgebaut wird. Damit könnte wer auch immer vom Client sitzt noch ne ganze Menge Unfug anstellen. Denk dran, der Java-Script Code kann als Klartext ausgelesen werden!
 
Zuletzt bearbeitet:

Latsche90

Mitglied
Ok, danke schonmal. Wenn ich ne Lösung finde, die ich verstehe, meld ich mich nochmal.

Wobei ich ja serverseitigen Quellcode habe, weil ich hab ja diese GWT-RPC schicht gebaut. Also zwischen dem PlayerMapper sind jetzt noch diese PlayerService.java PlayerServiceAsync.java und PlayerServiceImpl.java Klassen, die ja von GWT-Klassen erben müssen. Und dahinter ist dann die Oberfläche mit meinem EntryPoint.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K HttpServletResponse und externe CSS Web Tier 8
G Externe Bibliotheken in war-Datei angeben Web Tier 8
S Von GWT auf externe Lib zugreifen Web Tier 10
LimDul Komplexe Generierung von Java-Klassen aus WSDL Web Tier 1
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
platofan23 Java Login Überprüfung ohne Srciptlets in der JSP Web Tier 4
Dimax JSP Progress Bar in JSP nur mit Java Web Tier 4
S Einträge aus Datenbank einzeln darstellen (JSP, JAVA, HTML) Web Tier 9
R JavaScript für Java Enterprise Entwickler Web Tier 1
O JSF Java Unsigned Applet PrivilegedActionException Problem Web Tier 2
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
S Button klick soll Java methode aufrufen Web Tier 2
R Tomcat - java.lang.OutOfMemoryError: PermGen space Web Tier 0
F JSP jSP Datei mit normalem Java Programm auslesen? Web Tier 5
T Spark Java Web Framework Web Tier 0
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
S java.lang.ExceptionInInitializerError: Wieso??? Web Tier 3
N JSP Free Webhoster Java Backend? PHP? Web Tier 1
D Java EE Servlet login Problem Web Tier 1
L Servlet Java Entschlüsselungsprogramm in Webapplikation einbinden Web Tier 0
Streeber java.lang.NoClassDefFoundError: org/sqlite/NativeDB Web Tier 0
S Java Bean und Java Servlet Web Tier 2
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
H MVC in Java pur / Controller als Instanz? / Theorie! Web Tier 4
T Einsteigerfragen zu Servlets/Webprogrammierung mit Java Web Tier 11
J Übergabe von Parameter aus JSP an Java Web Tier 2
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
D JSF Überprüfen der Session ID in JSF und JAVA Web Tier 9
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
B JSF Mojarra 2.1.5: java.lang.IllegalStateException: Cannot create a session after the response has been Web Tier 7
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
J JSF Java Beans Konventionen Web Tier 2
P Blog in Java/JSP Web Tier 5
S Per JavaScript Java ansteuern - Welche Technik? Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B Thread start bei Java Web Anwendung Web Tier 6
M Suche Java Framework Web Tier 2
B Tomcat 6 ergibt Fehler - java.net.SocketException Web Tier 2
G Probleme mit EclipseLink und Java.util.Date Web Tier 3
ruutaiokwu js kalendar, der mit java.text.SimpleDateFormat kombatibel ist... Web Tier 4
B Java EE 6 Problem (EL) Web Tier 4
F Migration eines CMS von PHP nach JAVA Web Tier 3
R GWT 2.1.1 mit Java 1.6 statt 1.5 Web Tier 8
W JSP - Attribut-Werte aus JAVA-Klasse ? Web Tier 8
T Werte aus java Klasse in jsp nutzen Web Tier 5
N java.lang.NoClassDefFoundError: org/jdom/JDOMException Web Tier 3
M JSP Ausgabe von Java-Objekten Web Tier 7
D JSP, Java Applets einbinden Web Tier 2
LadyMilka java.lang.NumberFormatException: For input string: ... Web Tier 5
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
K Bilder in Java-Webapplikationen Web Tier 12
S Java Servlet Content Type Web Tier 3
K Analye einer Seite (Java, JSP, ...) Web Tier 12
J rich:modalpanel vom java-code aus öffnen und schliessen Web Tier 2
S Expression Language in Java Web Tier 13
A Ssh connection mit java jsch? Web Tier 2
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
M Body onUnload Java Methode aufrufen Web Tier 13
F Frage zu Java Beans Web Tier 17
M Java Framework für größere Projekte verwenden Web Tier 5
U access denied bei Datei Schreiben mit Java unter Linux trotz gesetzter Rechte Web Tier 2
P Java-Program -> Web Programm Web Tier 6
F Java Applets in html einbinden Web Tier 10
A SSL-Zertifikat in Java-Webanwendungen laden Web Tier 4
ruutaiokwu Wert hinter JSP-Tag nach Java-String in Skriptlet Web Tier 4
N java bean in eclipse Web Tier 6
S Java Code in JSF Web Tier 10
N Servlet und java.lang.NoClassDefFoundError Web Tier 4
D request.contextPath in Java-Klasse ausführen Web Tier 5
T In einem Struts Tag Werte mit Java einfügen Web Tier 2
G [JAVA / JSP] ArrayList in JSTL foreach verarbeiten Web Tier 4
G CSV-Anbindung an Java Web Tier 2
G Java Server Face Performancelastig? Web Tier 2
H Java Servlet und HTML Form Web Tier 3
U Java Application auf Tomcat Web Tier 5
G Validierung mit Java Server Faces Web Tier 4
T Eclipse: Adden von projektspezifischen libs in web-inf/lib? Web Tier 4
D Tapestry :: JavaScript - Libs import Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben