2

我在 Java 6/Websphere 8.5 上遇到套接字绑定错误(Liberty 配置文件,Websphere 的精简可用版本)。当再次立即杀死并启动应用程序服务器时,我得到:

[错误] CWWKO0221E: TCP 通道 defaultHttpEndpoint 初始化未成功。主机 * 和端口 9988 的套接字绑定未成功。该端口可能已在使用中。

这是因为 Java 或 WAS 都没有正确释放 IPv6 套接字。

但是,这是一个障碍:当我通过strace(使用 -f 选项来跟踪子进程)运行 WLP 时,不会发生绑定错误。

到底是怎么回事?为什么我不能通过这个捕捉到这个strace

我可以通过指定来解决这个问题soReuseAddress,但这里让我担心的是为什么/如何通过strace(即不依赖愚蠢的运气)来捕捉这个问题以及为什么它不起作用?

4

1 回答 1

3

您可能会发现将soReuseAddr选项添加到您的httpEndpoint配置会有所帮助,尤其是在 Linux 平台上。例如,

<httpEndpoint id="defaultHttpEndpoint"
             host="*"
             httpPort="9080">
      <tcpOptions soReuseAddr="true" />
 </httpEndpoint>

尽管服务器进行了最佳尝试,但操作系统可能需要一段时间才能释放端口,这对于 Liberty 尤其明显,因为它往往会快速反弹。

于 2012-12-20T14:34:32.620 回答