# Connection - möglich & nicht möglich



## kapertourguide (2. Jan 2012)

Hallo Leute,

ich habe ein Problem mit einer Connection zu einen MySQL-Datenbank.
Ich will eine JSP "ausführen" und dabei ein SQL-Statement ausführen.
Die Datenbank befindet sich auf meiner NAS.
Ich programmiere in Eclipse.

1. Fall:
Ich führe die Datei index.jsp in Eclipse aus. Über Run As -> Run on Server.
Dabei läuft der Tomcatserver ja auf meinem Rechner. (JRE7, Tomcat Version 6.0)
-> Alles funktioniert und das Programm läuft durch.

2. Fall:
Ich Exportiere das Projekt als .war Datei. 
Und kopiere es auf meiner NAS in den Tomcat-Ordner /webapps. (jre7, Tomcat 6.0.20)
Wenn ich nun diese JSP direkt im Browser aufrufe läuft das Programm nur bis 
out.println("Im Try (Beginn)") -> Zeile 24.
und dann passiert einfach gar nicht mehr.

Eine Exception kommt auch nicht, ich weiß leider nicht mehr weiter und hoffe nun hier auf ein bischen Hilfe.



```
<%@ page language="java" import="java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
   <title>Datenbanktest</title>
</head>
<body>

<%

// DB-Treiber initialisieren
try {
   // JDBC Treiber zum Zugriff auf Datenquelle verwenden
   Class.forName("com.mysql.jdbc.Driver");  
}
catch(ClassNotFoundException ex)
{
  System.out.println("JDBC-Treiber nicht gefunden! " + ex);
}
out.println("Nach Treibersuche");

try {
	out.println("Im Try (Beginn)");
   Connection oConnection = DriverManager.getConnection("jdbc:mysql://192.168.2.2:3306/xxxxxxx", "xxxxxxx", "xxxxxxxx");
   out.println("Nach Connection");
   
   // DB-Statement Objekt erzeugen
   Statement oStatement = oConnection.createStatement();
   out.println("Nach Statement");
   
   // Beispiel   für ein INSERT
   // tabellenname durch gewuenschte tabelle ersetzen, den String hinter VALUES entsprechend den tabellenfeldern anpassen
   int dbfbi = oStatement.executeUpdate("INSERT INTO xxxxxxx VALUES (" + null + ", 'xxxxx','xxxxx')");
   out.println("Nach Insert");
   
   // Beispiel für eine QUERRY
   // Result-Set Objekt erzeugen und initialisieren
   ResultSet oResultSet = oStatement.executeQuery("SELECT * FROM Personen");
   
   // irgendwohin mit den results ggf. andere Typen
   String result1 = "";
   String result2 = "";   

   // einfach mal ausgeben
   while(oResultSet.next())
   {
      // Zugriff auf das ResultSet
      result1 = oResultSet.getString("vorname");
      result2 = oResultSet.getString("nachname");
      out.println(result1 + " " + result2 + "<br>");
   }
   
   // DB-Statement und DB-Connection schliessen
   oStatement.close();
   oConnection.close();
   
}
catch(Exception sql)
{
	System.out.println("SQL-Fehler: " + sql);
} 

%>
</body>
</html>
```


Gruß
Kapertourguide


----------



## bronks (3. Jan 2012)

kapertourguide hat gesagt.:


> Eine Exception kommt auch nicht, ich weiß leider nicht mehr weiter und hoffe nun hier auf ein bischen Hilfe.


Die Exception kommt nicht, weil Du diese im CatchBlock verarbeitest und nur die Fehlermeldung auf die stdout schickst. Deshalb findest Du die Fehlermeldung in den Logs vom Tomcat.

Du kannst auch das ganze try/catch auskommentieren und bekommst dafür den Stacktrace im Browser angezeigt.


----------



## kapertourguide (3. Jan 2012)

Hallo bronks,

Danke für die Antwort, das hat mir schon weitergeholfen, habe den Fehler gefunden.

Habe den try/catch auskommentiert und dann im Browser folgenden Fehler erhalten:

```
exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 24

21: 
22: //try {
23: 	out.println("Im Try (Beginn)");
24:    Connection oConnection = DriverManager.getConnection("jdbc:mysql://XXX.XXX.XXX.XXX:3306/DB", "DUMMY", "dummypw");
25:    out.println("Nach Connection");
26:    
27:    // DB-Statement Objekt erzeugen


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.servlet.ServletException: java.sql.SQLException: Access denied for user 'DUMMY'@'DUMMY' (using password: YES)
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:125)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
```
also: Access denied for user 'DUMMY'@'DUMMY' (using password: YES)

Das Problem war das ich auf dem Server einen User in der MySQL-DB angelegt hatte der von allen Hosts Zugreifen darf, der eingene hat dabei nicht funktioniert.
Nun habe ich noch einen User angelegt der 'DUMMY'@'SERVERNAME' ist, mit diesem funktioniert der Zugriff.
Problem solved.

Danke für die schnelle Hilfe!!!
Ich denke das ich hier im Forum jetzt öfter aktiv bin und auch einen Teil an Lösungen dazu beitragen kann 

Gruß
KTG


----------

