我在Java 6 / Websphere 8.5上获得套接字绑定错误(Liberty配置文件,Websphere的缩减版,可用版本)。当我再次立即杀死并启动应用服务器时,我得到:
[ERROR] CWWKO0221E:TCP通道defaultHttpEndpoint初始化 没有成功。套接字绑定未成功用于主机*和端口 9988.该端口可能已在使用中。
这是因为Java或WAS没有正确发布IPv6套接字。
但是,这里有一个障碍:当我通过strace运行WLP时(使用-f选项跟踪子进程),绑定错误不会发生。
WT。正在进行?为什么我不能通过strace来抓住这个?
我可以通过指定soReuseAddress
来解决这个问题,但是我在这里担心的是为什么/如何通过strace捕获这个问题(不依赖于愚蠢的运气,那就是)以及为什么它不起作用?
答案 0 :(得分:3)
您可能会发现将soReuseAddr
选项添加到httpEndpoint
配置帮助中,尤其是在Linux平台上。例如,
<httpEndpoint id="defaultHttpEndpoint"
host="*"
httpPort="9080">
<tcpOptions soReuseAddr="true" />
</httpEndpoint>
尽管服务器尝试次数最多,但操作系统可能需要一段时间才能释放端口,这对于Liberty尤其明显,因为它往往会快速反弹。