Ich benutze einen Apache Tomcat 6.0.20/MySQL 5.1.37-lubuntu/sun-java6-jdk/sun-java6- jre/sun-java6-bin auf meinem lokalen Rechner mit Ubuntu 9.10 als Betriebssystem. Ich versuche, ein einfaches DB-Abfrage Beispiel zu bekommen jetzt für 2 Tage laufen, aber ich bekomme immer noch diese Ausnahme:Tomcat6 kann keine Verbindung zu MySql herstellen (Der Treiber hat keine Pakete vom Server empfangen)
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)"
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
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: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)"
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:104)
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)
root cause
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)"
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:285)
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:168)
org.apache.jsp.index_jsp._jspx_meth_sql_005fquery_005f0(index_jsp.java:274)
org.apache.jsp.index_jsp._jspx_meth_c_005fotherwise_005f0(index_jsp.java:216)
org.apache.jsp.index_jsp._jspx_meth_c_005fchoose_005f0(index_jsp.java:130)
org.apache.jsp.index_jsp._jspService(index_jsp.java:93)
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)
meine web.xml wie folgt aussehen:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/testDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
den Kontext .xml sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/my1stApp" docBase="/var/www/jsp/my1stApp" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource"
maxActive="5" maxIdle="5" maxWait="10000"
username="user" password="password" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/some"/>
</Context>
und die jsp-Datei sieht wie folgt aus:
<%@ page contentType="text/html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<html>
<head>
<title>DroneLootTool</title>
</head>
<body bgcolor="white">
<sql:query var="res" dataSource="jdbc/testDB">
select name, othername
from mytable
</sql:query>
<h2>Results</h2>
<c:forEach var="row" items="${res.rows}">
Name ${row.name}<br/>
MoreName ${row.othername}<br/><br/>
</c:forEach>
</body>
</html>
- lesen viele Foreneinträge/versucht, viele verschiedene Einstellungen (immer wieder auf die ursprünglichen Einstellungen geändert werden, wenn es den Ball hielt Arbeit)
- Satz TOMCAT6_SECURITY = no in/etc/default/tomcat6 weil TOMCAT6_SECURITY = yes verursache Probleme zu
- der Skip-Networking-Flag nicht für die DB gesetzt (BIND 127.0.0.1 gesetzt)
- Firewall swiched off (sudo ufw deaktivieren)
- MySQL funktioniert (getestet mehrmals mit Benutzern in diesem verwendet skript)
telnet localhost 3306 sagt
Probieren :: 1 ... Probieren 127.0.0.1 ... Verbunden mit localhost. Escape-Zeichen ist '^]'. Verbindung vom fremden Host geschlossen.
Die TestConnection.java die folgende Ausgabe erzeugt:
me @ my-Laptop: ~/Desktop $ java -classpath ‚/usr/share/java/mysql.jar:./ 'Testconnection com.mysql.jdbc.Driver jdbc: mysql: // localhost: 3306/TESTDB myuser mypassword
com.mysql.jdbc.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1070)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at TestConnection.checkConnection(TestConnection.java:40)
at TestConnection.main(TestConnection.java:21)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1070)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:666)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1069)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
... 7 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2431)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:590)
... 9 more
Connection failed.
ich weiß nicht, ob es einen Unterschied zwischen der Art und Weise ist die jav ein Fahrer einer Verbindung mit dem DB und das Perl DBI-Modul funktioniert, aber die PERL Skript arbeitet
#!/usr/bin/perl -w
use CGI;
use DBI;
use strict;
print CGI::header();
my $dbh = DBI->connect("dbi:mysql:some:localhost", "user", "password");
my $sSql = "SELECT * from mytable";
my $ppl = $dbh->selectall_arrayref($sSql);
foreach my $pl (@$ppl)
{
my @array = @$pl;
print @array;
}
$dbh->disconnect;
aktiviert --log-Warnungen auf dem mysql, aber ich habe keine neue Warnungen erhalten. Als ich die Protokolle für Warnungen der Suche fand ich diese Nachrichten, wenn ich den Kater neu starten, weiß nicht, ob es das Problem zu finden, hilft:
Feb 2 19:50:37 tobias-laptop jsvc.exec[3129]: 02.02.2010 19:50:37 org.apache.catalina.startup.HostConfig checkResources#012INFO: Undeploying context [/myapp]
Feb 2 19:50:37 tobias-laptop jsvc.exec[3129]: 02.02.2010 19:50:37 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads#012SCHWERWIEGEND: A web application appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.
Feb 2 19:50:37 tobias-laptop jsvc.exec[3129]: 02.02.2010 19:50:37 org.apache.catalina.startup.HostConfig deployDescriptor#012INFO: Deploying configuration descriptor myapp.xml
Könnten Sie den 'TestConnection.java' von http versuchen: //testdrive.mapinfo. com/techsupp/miprod.nsf/kbase_by_product/B309A6631406A514852569770060E795 und aktualisieren Sie die Frage mit dem Ergebnis? –
Wo haben Sie den mysql-Treiber jar platziert? Versuchen Sie, das Attribut auth = "Container" sowie – nos
die mysql.jar symlinked in tomcat6/lib aus/usr/share/java zu entfernen. in/usr/share/java mysql.jar ist ein Symlink zur eigentlichen Datei im selben Verzeichnis. versuchte Versionen mysql-connector-java-5.1.11 und 5.1.6. Entfernen des Auth = "Container" -Attributs hilft auch nicht. :( –