我有一个 WebSphere 应用程序服务器 8,我在其中部署了一个企业应用程序。现在我想让该应用程序的 Web GUI 可以访问。因此,我设置了一个端口 (9080),添加了一个 Web 容器传输链,为端口 9080 添加了一个虚拟主机,并将该虚拟主机添加到了我部署的应用程序中。但是,无法访问。
深入研究 WebSphere 的日志,我发现了这条消息:
TCPC0001I: TCP Channel TCP_6 is listening on host * (IPv6) port 9080.
很明显,该 channel 在 IPv6 上监听,而不是在 IPv4 上监听。我用netstat验证了这一点,它确实表明服务器的进程只监听IPv6。如何让 channel 在 IPv4 上监听?我已经尝试在服务器的 JVM 中设置 java.net.preferIPv4Stack=true
,但这并没有改变任何内容。
有趣的是,Websphere 的控制台可通过 IPv4 访问,但我无法弄清楚它的哪一部分配置不同,以便它可以工作,而我的设置却不能。
最佳答案
在许多操作系统上,通配符地址(*
或 ::/0
)上的 IPv6 套接字可以接受 IPv4 和 IPv6 连接。例如,在 Mac OS 上,netstat 将显示诸如 tcp46
之类的套接字,以表明它们是双堆栈的。其他操作系统(包括 Linux)只是将它们显示为 tcp6
,即使它们也接受 IPv4 连接。
所以它可能在 IPv4 上监听得很好,这只是向系统管理员显示它的一种令人困惑的方式。
关于websphere - 让 WebSphere 监听 IPv4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36742756/