1

我有一个 Web 应用程序,我尝试将它部署在带有 java6、tomcat6 和 mysql5.5 的远程 Windows 2003 服务器上。在我点击应用程序 url 部署应用程序后,我收到以下错误。我做了一些谷歌,发现一些链接说要更改localhost连接字符串127.0.0.1但没有用,一些链接说要检查连接字符串,所以我在同一台 Windows 机器上创建了一个简单的 java 类来测试连接字符串、用户名和密码。当我运行该类时,它运行良好,没有任何错误,但是当我运行使用相同连接字符串以及用户名和密码的 Web 应用程序时,它会抛出错误。还有一些链接建议修改my.inimysql,但我在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\libtomcat\lib路径,但仍然没有结果。

4

3 回答 3

2

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

于 2012-09-28T10:34:31.067 回答
0

我认为您可能需要查看 tomcat 配置,这些现代设置上的一个常见错误是 mysql 或 tomcat 正在尝试使用 IPV6 进行连接,因此您需要确保仅在 IPV4 上侦听才能正常工作。

于 2012-09-21T13:08:08.163 回答
0

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

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

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

数据库是否与 Tomcat 在同一个机器上运行?这不是一个好的设计。

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

于 2012-09-21T13:11:08.623 回答