Suse 11:Java 远程调试无法正确连接

Suse 11:Java 远程调试无法正确连接

我知道这是一个 Java 问题,但我觉得这更像是一个网络问题。

我有一台 Suse 11 服务器,上面放了一个简单的 Java 程序,我用调试选项启动它。就像我在任何其他 XP/Win7/Ubuntu 机器上所做的一样。

在虚拟机硬件上使用 Suse11 时,我无法连接套接字。有时确实可以连接,但之后就好像我从未收到任何数据包一样。

我很困惑,为什么我可以连接到另一个 Suse11 VM,而且一切正常。我看不出它们之间有什么区别(它们可能在不同的子网上,尽管网络部门向我保证这没有区别)

谁能给我一些建议,或者我可以检查的东西。

谢谢杰夫


看来 Websphere 7 / JDK 1.6 要求将端口设置为“0.0.0.0:7777”,而不仅仅是“7777”。这允许端口在当前计算机之外打开。

这已经解决了我的问题。

谢谢大家的帮助。

杰夫·波特

答案1

默认情况下,Sles Linux 不会暴露外部端口。

因此,通过网页(IBM/console)将 WS 中的调试端口设置为 7777 只会将端口内部暴露给盒子。要暴露它,您需要输入“0.0.0.0:7777”,但网页不允许将此值用作值。

因此,要手动更改它,请转到盒子上的这个文件...

/opt/IBM/WebSphere/AppServer/profiles/WRSProfile/config/cells/WRSNodeCell/nodes/WRSNode/servers/server1/server.xml

然后在文件中将 7777 替换为 0.0.0.0:7777。(文件中有 3 处需要更改)

 <services xmi:type="debugservice:DebugService" 
 xmi:id="DebugService_1331818723840" enable="true" 
 jvmDebugPort="0.0.0.0:7777" 
 jvmDebugArgs="-agentlib:jdwp=transport=dt_socket,
 server=y,suspend=n,
 address=0.0.0.0:7777" 
 BSFDebugPort="4444" BSFLoggingLevel="0"/>
...
 <jvmEntries xmi:id="JavaVirtualMachine_1183122130078" 
 verboseModeClass="false" verboseModeGarbageCollection="false" 
 verboseModeJNI="false" maximumHeapSize="1024" runHProf="false" 
 hprofArguments="" debugMode="true" 
 debugArgs="-agentlib:jdwp=transport=dt_socket,
 server=y,suspend=n,
 address=0.0.0.0:7777" 
 genericJvmArguments="">

然后停止并启动服务器。

/opt/IBM/WebSphere/AppServer/bin # ./stopServer.sh server1

..

/opt/IBM/WebSphere/AppServer/bin # ./startServer.sh server1

您现在可以将调试器连接到机器!

相关内容