【问题标题】:False java.net.BindException: Address already in use on Jetty错误的 java.net.BindException:地址已在 Jetty 上使用
【发布时间】:2015-04-14 08:37:59
【问题描述】:

在我的 CI 服务器上,我有一个需要启动 Jetty 服务器的测试。
测试如下:

  1. 生成随机端口(在合法 TCP 端口范围内使用 java rand)。
  2. 使用 Linux 的 fuser 进行验证以检查未使用的端口
  3. 运行测试

有时,即使在验证端口空闲后,我也会收到异常:


WARN:oejuc.AbstractLifeCycle:FAILED SelectChannelConnector@0.0.0.0:49277 FAILED: java.net.BindException: Address already in use
java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:172)
    at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:300)
    at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:249)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
    at org.eclipse.jetty.server.Server.doStart(Server.java:272)
    at org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
    at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:511)
    at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:364)
    at org.mortbay.jetty.plugin.JettyRunWarMojo.execute(JettyRunWarMojo.java:71)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

运行的测试:

  • RHEL 6.3 主机
  • Maven 3.0.4
  • jetty-maven-plugin:7.5.4
  • Java 1.7.51

可能是什么原因?

谢谢!

【问题讨论】:

  • 看起来有一个进程在端口49277上运行
  • 但我验证了之前没有进程正在运行...通过运行'fuser'

标签: java maven continuous-integration jetty rhel


【解决方案1】:

当 Jetty 尝试启动时,端口 49277 上已经有一个进程。

没有办法。

您可以询问 Linux 正在监听什么,并查看哪个进程正在使用该端口。

$ netstat -tlnp

但是,如果您想要的只是一个 Jetty 可以启动和侦听的随机端口,只需将 Jetty 应该使用的端口设置为0,这将告诉TCP to randomly assign an available port when binding for listening

那么,你的任务就是找出 Jetty 在启动后监听的端口。

【讨论】:

  • 谢谢!这真的很奇怪 49277 是随机生成的端口。此外,正如所写,我通过在执行码头之前运行“fuser”来验证这个端口是免费的。端口验证有没有可能出错?
【解决方案2】:

您可能在 8080 端口上使用 tomcat,请停止 tomcat 服务器并再次从 maven 运行 jetty。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2012-09-26
    • 2015-10-30
    相关资源
    最近更新 更多