1

Eclipse からリモート ホストで Tomcat デバッグ セッションを開始したいのですが、次のエラーで失敗します。

Failed to connect to remote VM
com.sun.jdi.connect.spi.ClosedConnectionException

私のTomcatは、ポート8000​​でデバッグセッションを受信するように正しく構成されていると思います:

tomcat   18771     1  1 17:18 ?        00:00:16 /usr/lib/jvm/java/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Djava.rmi.server.hostname=10.30.0.17 -Dcatalina.ext.dirs=/usr/share/tomcat5/shared/lib:/usr/share/tomcat5/common/lib -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Djava.endorsed.dirs=/usr/share/tomcat5/common/endorsed -classpath /usr/lib/jvm/java/lib/tools.jar:/usr/share/tomcat5/bin/bootstrap.jar:/usr/share/tomcat5/bin/commons-logging-api.jar:/usr/share/java/mx4j/mx4j-impl.jar:/usr/share/java/mx4j/mx4j-jmx.jar -Dcatalina.base=/usr/share/tomcat5 -Dcatalina.home=/usr/share/tomcat5 -Djava.io.tmpdir=/usr/share/tomcat5/temp org.apache.catalina.startup.Bootstrap start

PC とリモート サーバーの間にファイアウォールがありますが、tcpdumpサーバー上でこれらのパケットを確認できるように、ポートは十分に開いています。

17:41:17.110977 IP X.X.X.X.57010 > Y.Y.Y.Y.irdmi: S 868833744:868833744(0) win 8192 <mss 1460,nop,wscale 8,nop,nop,sackOK>
17:41:17.111183 IP Y.Y.Y.Y.irdmi > X.X.X.X.57010: S 3571247457:3571247457(0) ack 868833745 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 7>
17:41:17.112624 IP X.X.X.X.57010 > Y.Y.Y.Y.irdmi: . ack 1 win 256
17:41:19.113216 IP Y.Y.Y.Y.irdmi > X.X.X.X.57010: F 1:1(0) ack 1 win 46
17:41:19.114246 IP X.X.X.X.57010 > Y.Y.Y.Y.irdmi: P 1:15(14) ack 1 win 256
17:41:19.114279 IP Y.Y.Y.Y.irdmi > X.X.X.X.57010: R 3571247458:3571247458(0) win 0

Tomcat ログに書き込まれる唯一のメッセージは、Debugger failed to attach: timeout during handshake です。

Webで見つけた情報にもかかわらず、何が悪いのかわかりません。

誰でも私を助けることができますか?

私のサーバー: RHEL 5.9、Tomcat 5.5、Java 1.6

よろしく、ロバート

4

1 に答える 1

0

問題を解決しました。PC とサーバーの間のファイアウォールでパケット インスペクションが有効化されていました。特定の TCP パケットを通過させるため、TCP ハンドシャックが発生する可能性がありますが、データ TCP パケットはブロックされます。

私が理解しているように、最初にTCP接続が確立され、次にTCPデータパケットを使用してJavaサーバーによってアプリケーションハンドシェイクが行われます。データ パケットがファイアウォールによってフィルタリングされたため、アプリケーション ハンドシェイクを完了できず、アプリケーションは FIN パケットを送信して TCP 接続を閉じました。

よろしく、ロバート

于 2013-08-08T13:49:03.227 に答える