2016-03-26 7 views
2

Ich habe eine Wand getroffen und ich kann nicht ohne Hilfe durchkommen.Servlet mit Datenbank funktioniert gut in Eclipse, stürzt aber auf dem Server ab?

Ich versuche, eine einfache Anmeldung und Registrierung für meine Android-App mit Java-Servlet, und das Problem ist, wenn ich es lokal auf Tomcat/Eclipse läuft alles funktioniert gut, aber wenn ich WAR-Datei damit auf Heroku bereitstellen Freier Server, der Datenbank-Teil scheint überhaupt nicht zu funktionieren.

Ich vermute, es ist ein Problem mit dem Treiber tatsächlich, aber ich kann keine Protokolle erhalten, seit ich über meine Android App verbinden.

Ich habe meine Datenbank auf Freesqldatabase bereitgestellt. Ich habe meinen SQL-Treiber in tomcat directory abgelegt und tausendmal überprüft, ob es sich um Tomcat-Bibliotheken handelt. Ziemlich sicher, dass JDBC Driver Probleme bei der Bereitstellung verursacht, aber ich kann nicht herausfinden, warum, alles ist in Ordnung mit Android Teil der App.

Hier ist der Code des Servlets:

Connection connection = null; 
boolean check = false; 
//this part does not work online 

try { 
    Class.forName("driver"); 

    connection = DriverManager.getConnection("jdbc:mysql://sql7.freesqldatabase.com/sql7112115", "sql7112115", "xxxxxxxxxxx"); 
    response.getWriter().append("4"); 
    String query = "select * from userdata where username = ? and pass = ? "; 
    response.getWriter().append("5"); 

    PreparedStatement statement = connection.prepareStatement(query); 
    statement.setString(1, "Sue"); 
    statement.setString(2, "Pass1"); 

    ResultSet result = statement.executeQuery(); 
    check = result.next(); 
    connection.close(); 
} catch (ClassNotFoundException e) { 
    System.out.print("Driver error"); 
} catch (SQLException e) { 
    System.out.print("SQL error"); 
} 

if (check) { 
    response.getWriter().append("Login succesful"); 
} else { 
    response.getWriter().append("Login unsuccesful"); 
} 
} 
+0

Vielleicht möchten Sie einen der Heroku MySql-Datenbankanbieter wie [JawsDB] (https://elements.heroku.com/addons/jawsdb) und deren [Dokumente für die Verwendung von JDBC] verwenden (https: // devcenter.heroku.com/articles/jawsdb#using-with-java) – codefinger

+0

Ihre Ausnahmeübergabe ist wirklich schlecht. Ersetzen Sie 'System.out.print (..)' durch 'throw new ServletException (e)'. Sie werden auf diese Weise sofort eine Fehlerseite im Browser sehen. – BalusC

Antwort

1

Das erste, was ich bemerkt habe ist, Class.forName("driver"). Normalerweise möchten Sie den Namen der kanonischen Klasse - etwa com.mysql.jdbc.Driver.

0

Danke für die Antworten! Es stellte sich heraus, dass Heroku diese Art von Konstrukt nicht zulässt - JDBC und eine Drittanbieter-Datenbank verwenden, um vor Ressourcenlecks zu schützen. Ich habe ihre Datenbank installiert und es funktioniert gut!

Verwandte Themen