Eclipse: Remote-Debugging eines Tomcat-Servers hinter einer Firewall

Nach dem starten von tomcat mit jpda auf, während in meiner Firma kann ich das remote-debug-ein Bündel von web-Anwendungen in eclipse. Für eine Reihe von Gründen, ich bin jetzt in der Notwendigkeit von Entwicklungs-und remote-debugging die gleichen webapps von außerhalb der Unternehmens-firewall, und ich kann nur Zugriff auf diesen server über ssh auf port 22.

Ich getunnelt meisten benötigten ports (svn, nexus, tomcat selbst, vom server oder über den server) localhost und diese Dienste funktionieren, aber ich kann nicht starten Sie den eclipse-debugger in keiner Weise; ich bin immer "connection timed out while waiting for packet-XXX" oder "connection refused" ab dem zweiten mal, wenn ich versuche auf.
Prüfung mit nmap auf dem server, meldet es der port offen ist, vor dem ersten Verbindungsversuch, und es wird geschlossen, dass nach. Ich bekomme keine interessanten output-log-in catalina.aus

Den Befehl, den ich verwenden, um den tunnel ist:

ssh -L 8000:localhost:8000 user@mycompany.com

iptables wurde vorübergehend angehalten, sowohl auf dem server und auf dem lokalen Computer zum testen.

Bin ich etwas fehlt? Muss ich vorn paar anderen port auf localhost? Oder ist es in irgendeiner Weise beteiligt Namensauflösung?

BEARBEITEN

Offenen ports vor dem Verbindungsversuch von eclipse:

root@lnxulisse:/opt/apache-tomcat-6.0.32/bin# lsof -p 2147  -n |grep TCP
java    2147 root    4u  IPv4 640850      0t0     TCP *:8000 (LISTEN)
java    2147 root   38u  IPv6 640859      0t0     TCP *:http-alt (LISTEN)
java    2147 root   40u  IPv6 640865      0t0     TCP *:https (LISTEN)
java    2147 root   46u  IPv6 640908      0t0     TCP 127.0.0.1:18005 (LISTEN)
java    2147 root   48r  IPv6 642625      0t0     TCP 172.24.0.82:48347->172.24.0.82:mysql (ESTABLISHED)
java    2147 root  181u  IPv6 640891      0t0     TCP 172.24.0.82:60353->172.24.0.82:mysql (ESTABLISHED)

und nach:

java    2147 root    4u  IPv6 642769      0t0     TCP 172.24.0.82:48956->172.24.0.82:mysql (ESTABLISHED)
java    2147 root    5u  IPv4 640851      0t0     TCP 127.0.0.1:8000->127.0.0.1:34193 (ESTABLISHED)
java    2147 root   38u  IPv6 640859      0t0     TCP *:http-alt (LISTEN)
java    2147 root   40u  IPv6 640865      0t0     TCP *:https (LISTEN)
java    2147 root   46u  IPv6 640908      0t0     TCP 127.0.0.1:18005 (LISTEN)
java    2147 root  181u  IPv6 640891      0t0     TCP 172.24.0.82:60353->172.24.0.82:mysql (ESTABLISHED)

genaue eclipse zurückgegebene Fehler ist:

Exception occurred during launch
Failed to connect to remote JVM. Connection timed out.
Timeout occurred while waiting for packet 204.

(die Paket-Anzahl variiert in jedem Versuch).

in workspace/.metadata/.log ich bekommen:

!ENTRY org.eclipse.osgi 2 0 2011-07-17 18:43:53.024
!MESSAGE While loading class "org.eclipse.core.net.proxy.IProxyService", thread "Thread[main,6,main]" timed out waiting (5000ms) for thread "Thread[Thread-6,5,main]" to finish starting bundle "org.eclipse.core.net_1.2.1.r35x_20090812-1200 [232]". To avoid deadlock, thread "Thread[main,6,main]" is proceeding but "org.eclipse.core.net.proxy.IProxyService" may not be fully initialized.
!STACK 0
org.osgi.framework.BundleException: State change in progress for bundle "reference:file:plugins/org.eclipse.core.net_1.2.1.r35x_20090812-1200.jar" by thread "Thread-6".
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.beginStateChange(AbstractBundle.java:1073)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:278)
[...]

!ENTRY org.eclipse.ui.ide 4 4 2011-07-17 18:43:53.028
!MESSAGE Proxy service could not be found.

eclipse konfiguriert ist für die direkte internet-Verbindung.

EDIT 2

Ich glaube, die Lösung könnte hier sein:

http://blog.cantremember.com/debugging-with-jconsole-jmx-ssh-tunnels/

aber ich habe einige Schwierigkeiten zu verstehen, seine JNDI/RMI-Einstellungen, und in welchem Umfang die bezieht sich auf meine Konfiguration.

EDIT 3

Dies ist eine Klarstellung für die Beantwortung "verwenden <lan|local ip address> statt <localhost>"

  • computer Ein: meine workstation in der Firma
  • Rechner B: mein Arbeitsplatz zu Hause
  • - computer-C: - server mit tomcat

B und C sind in zwei verschiedenen sub-Netzwerke in der gleichen Netzwerk-Infrastruktur; nur verbindungen zu port 22, der C von außen sind erlaubt (und etwas "umgeleitet" wird, weiß ich nicht-Netzwerk-Interna).

Einem "außerhalb" (meine dsl-Verbindung mit dynamischer ip-Adresse).

Debugging on C from B via ssh tunnel -> works
Debugging on C from A via ssh tunnel -> connection timed out while waiting for packet XXX

InformationsquelleAutor der Frage | 2011-07-16

Schreibe einen Kommentar