我知道这是一个 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
您现在可以将调试器连接到机器!