Jetty 9.4.30升级至10.0.15后REST服务启动失败,报SO_REUSEPORT错误
Jetty 10.0.15升级后SO_REUSEPORT不支持问题解决方法
Jetty 10.x版本开始默认尝试配置SO_REUSEPORT套接字参数,但部分JDK版本或操作系统环境不支持该选项,导致启动时抛出UnsupportedOperationException: 'SO_REUSEPORT' not supported错误。以下是几种可行的解决方式:
方法一:显式禁用SO_REUSEPORT配置
在Jetty的连接器配置中强制关闭SO_REUSEPORT,避免触发不支持的系统调用。
代码配置示例:
Server server = new Server(); ServerConnector connector = new ServerConnector(server); // 显式设置禁用SO_REUSEPORT connector.setReusePort(false); server.addConnector(connector);
XML配置示例(如jetty.xml):
<Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.ServerConnector"> <Arg name="server"><Ref refid="Server"/></Arg> <Set name="port">8080</Set> <!-- 禁用SO_REUSEPORT --> <Set name="reusePort">false</Set> </New> </Arg> </Call>
方法二:升级JDK版本
SO_REUSEPORT在JDK 11及以上的部分更新版本中得到了完善支持,如果当前使用的JDK版本较低(如JDK 8早期版本),升级到支持该参数的JDK版本可解决问题。
方法三:确认操作系统兼容性
部分旧版本操作系统(如Windows 7及更早、特定旧版Linux发行版)本身不支持SO_REUSEPORT套接字选项,这种情况下优先使用方法一禁用该配置即可正常启动服务。
内容的提问来源于stack exchange,提问作者nilesh vadar
相关产品推荐
相关产品推荐

