1

java6、tomcat6、およびmysql5.5を使用してリモートWindows 2003サーバーにデプロイしようとしていたWebアプリケーションがあります。アプリケーションの 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パスを追加しましたが、結果はまだありません。

4

3 に答える 3

2

申し訳ありませんが、私の質問を調べて回答するためにあなたを苦しめましたが、私は解決策を見つけました。実際、すべてのデータベースやその他の変更可能なものに.propertiesファイルを使用したのは私のばかげた間違いであり、問​​題は間違ったプロパティファイルを変更していたことです。簡単なことをめちゃくちゃに作ってしまったのはとても恥ずかしいです。とにかく、助けてくれてありがとう。

于 2012-09-28T10:34:31.067 に答える
0

tomcatの構成を確認する必要があると思います。これらの最新のセットアップでの通常のエラーは、mysqlまたはtomcatがIPV6を使用して接続しようとしているため、IPV4でのみリッスンしていることを確認する必要があります。

于 2012-09-21T13:08:08.163 に答える
0

また、Tomcat と MySQL の間にファイアウォールがあるかどうかも確認します。MySQL のポートを開くには、ファイアウォール ルールが必要になる場合があります。

Tomcat サーバーから MySQL の IP アドレスを ping することで確認できます。ping できない場合は、アプリもできません。

ホストは、localhost ではなく、MySQL サーバーの名前にする必要があります。

データベースは Tomcat と同じボックスで実行されていますか? それは良いデザインではありません。

MySQL が実行されていることを確認しますか? 管理コンソールにログインして、Java アプリがアクセスする必要があるデータベースにアクセスできますか? はいの場合、Java アプリは適切な資格情報を使用していますか? (管理者ルート アクセス権を与えたとは言わないでください。)

于 2012-09-21T13:11:08.623 に答える