Tomcat无法通过JDBC连接器连接到mysql

时间:2012-09-21 13:05:29

标签: java mysql tomcat

我有一个Web应用程序,我尝试使用java6,tomcat6和mysql5.5部署在远程Windows 2003服务器上。在我点击应用程序URL时部署应用程序后,我收到以下错误。我做了一些谷歌,发现一些链接,说连接字符串中的localhost更改为127.0.0.1但是没有用,有些链接说要检查连接字符串,所以我在同一台Windows机器上创建了一个简单的java类测试连接字符串,用户名和密码。当我运行该类时它没有任何错误工作正常,但当我运行使用相同的连接字符串和用户名和密码的Web应用程序时,它抛出错误。还有一些链接建议修改mysql my.ini,但我没有在mysql安装目录中找到任何my.ini。

我没有得到任何线索来处理这个错误,所以请你指导我。完整堆栈跟踪如下

INFO: Server startup in 2832 ms
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link fai
lure

The last packet sent successfully to the server was 0 milliseconds ago. The driv
er has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1
117)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:350)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2408)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2
445)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:334)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at com.adxchange.utils.DBConnectionSingleton.getConnection(DBConnectionS
ingleton.java:28)
        at com.adxchange.utils.ADXchange.getStates(ADXchange.java:402)
        at org.apache.jsp.homepage_jsp._jspService(homepage_jsp.java:252)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:388)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
13)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatc
her.java:416)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
r.java:877)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
ocess(Http11AprProtocol.java:594)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:16
75)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at java.net.Socket.connect(Socket.java:478)
        at java.net.Socket.<init>(Socket.java:375)
        at java.net.Socket.<init>(Socket.java:218)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.ja
va:259)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
        ... 38 more
getStates: Error in database connection

可能是一些许可问题吗?

修改

我还在系统变量中创建了 CLASSPATH 变量,并在其中添加了 java \ lib tomcat \ lib 路径,但仍然没有结果。< / p>

3 个答案:

答案 0 :(得分:3)

对不起朋友们让你努力寻找和回答我的问题,但我找到了解决方案。实际上,我使用.properties文件来处理所有数据库和其他可更改的东西是我的愚蠢错误,问题是我正在修改错误的属性文件。令人尴尬的是,我为简单的事情制造了一团糟。无论如何,非常感谢你们帮助过的人。

答案 1 :(得分:0)

我想你可能需要看一下tomcat配置,这些现代设置的常见错误是mysql或tomcat试图使用IPV6进行连接所以你需要确保你只听IPV4它工作

答案 2 :(得分:0)

我还会看到你的Tomcat和MySQL之间是否有防火墙。您可能需要防火墙规则来打开MySQL的端口。

您可以通过ping Tomcat服务器的MySQL IP地址来判断。如果你无法ping通,你的应用也不能。

主机应该是MySQL服务器的名称,而不是localhost。

数据库是否与Tomcat在同一个盒子上运行?那不是一个好的设计。

你确定MySQL正在运行吗?您是否可以登录管理控制台并访问Java应用程序需要访问的数据库?如果是,Java应用程序是否使用适当的凭据? (请不要告诉我你给了管理员root权限。)