Reputation: 14125
I have an web application that I was trying deployed on a remote windows 2003 server with java6, tomcat6 and mysql5.5. After deploying application when I hit the application url I am getting following error. I did some google and found some link which says to change localhost
in connection string to 127.0.0.1
but that did not worked, some link says to check connection string so I created a simple java class on same windows machine to test the connection string, usename and password. When I ran that class it worked fine without any error but when I am running web application which uses same connection string and username and password it is throwing the error. There are also some links which advice to modify my.ini
of mysql but I did not find any my.ini in mysql installation directory.
I am not getting any clue to deal with this error so could you please guide me on this. Full stack trace is as below
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
could it be some permission issue?
EDIT:
I also created CLASSPATH variable in system variables and added java\lib and tomcat\lib path in it but still no result.
Upvotes: 2
Views: 2623
Reputation: 14125
Sorry friends to put you in effort of looking and answering my question but I found the solution. Actually it is my silly mistake that I have used .properties file for all db and other changeable things and the problem was that I was modifying wrong properties file. It is so embarrassing that I created a mess for simple thing. Anyway thanks a lot that you guys helped.
Upvotes: 2
Reputation: 308763
I'd also see if there's a firewall between your Tomcat and MySQL. You might need a firewall rule to open up the port for MySQL.
You can tell by pinging the MySQL IP address from the Tomcat server. If you can't ping, your app can't either.
The host should be the name of the MySQL server, not localhost.
Is the database running on the same box as Tomcat? That's not a good design.
Are you sure MySQL is running? Can you log into the admin console and access the database that your Java app needs to get to? If yes, does the Java app use appropriate credentials? (Please don't tell me that you gave it the admin root access.)
Upvotes: 0
Reputation: 1932
I think you may need to take a look at the tomcat config, a usual error on these modern setups is that either mysql or tomcat is trying to connect using IPV6 so you need to make sure you only listen on IPV4 for it to work.
Upvotes: 0