byte Geschrieben 18. September 2002 Geschrieben 18. September 2002 Ok ich hoffe ich kann mein Problem halbwegs gut beschreiben =) Ich habe ein Servlet das auf eine MySQL Datenbank zugreifen soll, da aber für die Datenbank irgendwie keine Treiber in dem JDK sind, habe ich mir zugehörige von der www.mysql.de Seite geladen. Jetzt meine Frage. Wie verwurschtel ich vernünftig den Treiber das mein Servlet den dann auch findet ? Zitieren
Jaraz Geschrieben 18. September 2002 Geschrieben 18. September 2002 Welcher Servlet Container? Tomcat? Ab Tomcat 4.1.x gibt es einen eigenen ConnectionPool, den du benutzen kannst. Die Installation ist unter : http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html beschrieben. Ansonsten kannst du auch eine einfache jndi DataSource definieren. Ein Beispiel dazu müßte auskommentiert in der Datei server.xml stehen. Gruß Jaraz Zitieren
byte Geschrieben 18. September 2002 Autor Geschrieben 18. September 2002 Geht das vielleicht auch ohne dieses Pool dingsda ? Ich will einfach nur diesen einen Treiber und mich um die Cons etc. allein kümmern. Benutze Tomcat 4.1 ne MySQL Datenbank und Servlet Ich brauch eine möglichst einfache Lösung. Zitieren
Emrep Geschrieben 18. September 2002 Geschrieben 18. September 2002 Wenn du den ODBC-Treiber für MySQL installierst, kannst du eine ODBC-Datenquelle für deine Datenbank erzeugen. Die kannst du auch vom Tomcat aus anzapfen(JDBC-ODBC-Bridge). Das ist wohl das einfachste. Emrep Zitieren
Jaraz Geschrieben 18. September 2002 Geschrieben 18. September 2002 Original geschrieben von Emrep Wenn du den ODBC-Treiber für MySQL installierst, kannst du eine ODBC-Datenquelle für deine Datenbank erzeugen. Die kannst du auch vom Tomcat aus anzapfen(JDBC-ODBC-Bridge). Das ist wohl das einfachste. Kein Wunder das da viele denken, Java wäre langsam. Also das ganze noch mal ohne Connection Pool. Du musst das ausführen, was unter http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html Im Abschnitt "JDBC Data Sources" steht. Du kannst alles übernehmen musst aber anstatt: org.hsql.jdbcDriver org.gjt.mm.mysql.Driver schreiben und anstatt jdbc:HypersonicSQL:database jdbc:mysql://localhost/database Wobei database die Datenbank ist die du unter mysql angelegt hast. Außerdem musst du natürlich noch username und passwort anpassen. Gruß Jaraz Zitieren
Emrep Geschrieben 18. September 2002 Geschrieben 18. September 2002 Original geschrieben von Jaraz Kein Wunder das da viele denken, Java wäre langsam. Das liegt wohl aber nicht am Datenbanktreiber. Emrep Zitieren
Jaraz Geschrieben 18. September 2002 Geschrieben 18. September 2002 Original geschrieben von Emrep Das liegt wohl aber nicht am Datenbanktreiber. Emrep Bei deinem Vorschlag schon. Zitat: "ODBC saugt tote Hamster durch Strohhalme. (Kristian Köhntopp "PHP und Mysql Guru" in de.comp.lang.php)" (Zitat Ende) Du willst eine Verbindung die du direkt herstellen kannt (JDBC - MySQL) über die extrem unperformante und nur auf Windows funktionierende Schnittstelle von Microsoft realisieren. (JDBC - ODBC - MySQL) Das ist so als wenn du dich in einen Hubschrauber setzt um schnell von Hamburg nach München zu kommen und diesen Hubschrauber dann mit einem Güterzug nach München transportierst. Gruß Jaraz Zitieren
byte Geschrieben 19. September 2002 Autor Geschrieben 19. September 2002 Das mit dem ODBC hat sich bei mir sowieso erledigt, da das ganze auf einem Linux Server laufen muss. Hab Jaraz zweiten Tip weiter verfolgt und es scheint soweit alles zu funktionieren. Vielen Dank nochmal an euch beide Bin halt neu in der Servletschiene und werde euch wohl noch mit einigen Fragen löchern Zitieren
byte Geschrieben 19. September 2002 Autor Geschrieben 19. September 2002 Aaaaarrrrrrrrrrrgh *Haare rauf* Er scheint die Klasse immer noch nicht zu finden ... Habe jetzt die mysql_uncomp.jar mit den Treibern in /common/lib/ reingetan und die Servlets in /common/classes/ des Tomcat Verzeichniss und hier nochmal mein code: import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.sql.*; public class main extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; public Connection con; /**Globale Variablen initialisieren*/ public void init(ServletConfig config) throws ServletException { try { Class.forName("org.gjt.mm.mysql.Driver"); // Treiberklasse laden con = DriverManager.getConnection("jdbc:mysql://bennid.dns2go.com:3306/wisotzki?user=byte"); //Verbindung herstellen } catch(Exception e) { e.printStackTrace(); } } /**Die HTTP-Anforderung Get bearbeiten*/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); String param = request.getParameter("param"); String[] nav = getNavigation(); for (int i = 0; nav.length >= i; i++) { out.println(nav[i]); } } /**Navigation aus der Datenbank holen*/ public String[] getNavigation() { String[] result = null; String sql = "select navigation_name from bd_navigation"; //Abfragestring für Query ResultSet rs; int i = 0; try { Statement statement = con.createStatement(); rs = statement.executeQuery(sql); //Alle eintraege aus der DB holen und in Array schreiben while (rs.next()) { result[i] = rs.getObject("navigation_name").toString(); i++; } statement.close(); rs.close(); } catch(SQLException sqle) { sqle.printStackTrace(); } return result; } /**Ressourcen bereinigen*/ public void destroy() { try { con.close(); } catch(SQLException sqle) { sqle.printStackTrace(); } } } [/PHP] Zitieren
jan76 Geschrieben 19. September 2002 Geschrieben 19. September 2002 wieso packst du den Treiber in /common/... ? der gehoert besser in dein /WEB-INF/lib/, dann gibts auch keine Probleme mit Klasse nicht gefunden usw. Zitieren
Jaraz Geschrieben 19. September 2002 Geschrieben 19. September 2002 Das ist schon ok so, alle libs in common/lib stehen allen Webanwendungen zur Verfügung. Die in WEB-INF/lib, nur der einen. Allerdings gehören Servlets nicht in common/classes sondern default ins webapp Verzeichnis. Und wie sieht denn deine web.xml aus? Gruß Jaraz Zitieren
jan76 Geschrieben 19. September 2002 Geschrieben 19. September 2002 Original geschrieben von Jaraz Das ist schon ok so, alle libs in common/lib stehen allen Webanwendungen zur Verfügung. Die in WEB-INF/lib, nur der einen. wer weiss ob der Treiber nicht ClassLoader-Probleme kriegt wenn er in /common/lib steht, lieber auf Nummer sicher gehen und ins eigene Verzeichnis packen.. Zitieren
byte Geschrieben 19. September 2002 Autor Geschrieben 19. September 2002 Hab die Servlets jetzt im Webapps Verzeichniss, hat an der Situation nichts geändert. web.xml ? Hab keine Ahnung wozu die da ist Hab aber eine in /conf gefunden. Ich glaube Ihr habts schon gemerkt aber nochmal: Ich bin echt noch frisch auf dem Gebiet Hat noch jemand ne Idee was ich machen muss ? Zitieren
Jaraz Geschrieben 19. September 2002 Geschrieben 19. September 2002 Hast du überhaupt schon ein eigenes servlet zum laufen bekommen? Zitieren
byte Geschrieben 19. September 2002 Autor Geschrieben 19. September 2002 Ja schon ein paar sogar. Auch Datenbanken waren blos interne auf die ich über ODBC zugegriffen habe. Zitieren
byte Geschrieben 20. September 2002 Autor Geschrieben 20. September 2002 Juhu, jetzt klappt es endlich. Dazu muss ich aber auch sagen das ich echt doof wie 4 Schritt Feldweg bin. Das haette alles schon viel schneller funktioniert haett ich nicht aufgehoert nach dem x-ten mal die Exceptions zu lesen, die schon lange einen anderen Fehler angezeigt haben *DAU*. Nochmal Danke für euer aller Hilfe. Die Servlets liegen jetzt übrigens doch wieder in /common/classes und die .jar in /common/lib und alles funktioniert bestens. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.