2012-09-21 4 views
1

java6, tomcat6 및 mysql5.5가 포함 된 원격 Windows 2003 서버에 배포하려는 웹 응용 프로그램이 있습니다. 응용 프로그램을 배포 한 후 응용 프로그램 URL을 누르면 다음과 같은 오류가 발생합니다. 나는 약간의 구글을했고 127.0.0.1에 연결 문자열에서 localhost을 바꾸라고 말한 링크를 발견했다. 그러나 그것은 작동하지 않았다. 연결 문자열을 검사하기 위해 어떤 링크는 그렇게 말한다. 연결 문자열을 테스트하기 위해 동일한 자바 컴퓨터에 간단한 자바 클래스를 만들었다. 암호. 이 클래스를 실행하면 오류없이 정상적으로 작동하지만 동일한 연결 문자열과 사용자 이름 및 암호를 사용하는 웹 응용 프로그램을 실행할 때 오류가 발생합니다. 또한 어떤 링크가 mysql의 my.ini을 수정할 수있는 링크가 있지만 mysql 설치 디렉토리에서 my.ini를 찾지 못했습니다.Tomcat이 JDBC 커넥터를 통해 mysql에 연결할 수 없음 [solved]

이 오류를 해결할 단서가 없으므로이 부분을 안내해주세요. 전체 스택 추적은 다음과 같습니다.

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 변수를 생성하고 그것에 경로하지만 여전히 어떤 결과 lib에는 자바 \ lib에바람둥이 \를 추가했습니다.

답변

3

죄송합니다. 내 질문을보고 노력하기 위해 노력했지만 죄송합니다.하지만 해결책을 찾았습니다. 실제로 그것은 모든 db 및 기타 변경 가능한 것들에 대한 .properties 파일을 사용하고 문제는 내가 잘못된 속성 파일을 수정하고 있다는 내 어리석은 실수입니다. 내가 단순한 일로 엉망이되어 버린 것은 당혹 스럽다. 어쨌든 당신 덕분에 많은 도움을주었습니다.

+0

여기에 답을 입력해서는 안됩니다. 다른 사람이 귀하의 질문에 대답 한 경우 대답을 수락하십시오. –

0

내가 tomcat 설정을 살펴볼 필요가 있다고 생각할 수도 있습니다. 이러한 현대 설정의 일반적인 오류는 mysql 또는 tomcat이 IPV6을 사용하여 연결하려고하기 때문에 IPV4에서만 수신 대기하는지 확인해야한다는 것입니다. 일하다.

+0

어떤 파일을 ipv4 또는 ipv6 설정으로 찾아야합니까? –

+0

-Djava.net.preferIPv4Stack = true로 유용한 Java VM 시작 http://docs.oracle.com/javase/1.4.2/docs/guide/net/ipv6_guide/ 또는 IPv4 원시 IP 주소를 사용하십시오. JDBC 연결 URL. –

0

Tomcat과 MySQL 사이에 방화벽이 있는지 여부도 알 수 있습니다. MySQL 용 포트를 열려면 방화벽 규칙이 필요할 수 있습니다.

Tomcat 서버에서 MySQL IP 주소를 핑 (ping)하여 알 수 있습니다. 핑 (ping)을 할 수 없다면 앱도 할 수 없습니다.

호스트는 localhost가 아닌 MySQL 서버의 이름이어야합니다.

데이터베이스가 Tomcat과 동일한 상자에서 실행되고 있습니까? 그건 좋은 디자인이 아니야.

MySQL을 실행 중이십니까? 관리 콘솔에 로그인하여 Java 응용 프로그램이 필요로하는 데이터베이스에 액세스 할 수 있습니까? 그렇다면 Java 앱이 적절한 자격 증명을 사용합니까? (제발 당신이 그에게 관리자의 루트 액세스 권한을 준다고하지 마십시오.)

+0

mysql 서버 포트에 방화벽 예외가 이미 추가되었습니다. 예 바람둥이도 같은 상자에 있습니다 –

+0

바람둥이에서 mysql을 ping하는 방법은 무엇입니까? 나는 그것에 수업을 써야 하나? –

+1

Tomcat 상자에서 MySQL을 실행하는 경우 방화벽 예외가 필요하지 않습니다. 그들 사이에는 방화벽이 없습니다. – duffymo

관련 문제