gpt4 book ai didi

java - Spring 中的 "BindException: Address already in use"与 Apache FtpServer

转载 作者:行者123 更新时间:2023-12-01 16:53:06 26 4
gpt4 key购买 nike

我按如下方式配置了 Apache FtpServer:

@Component
public class FtpDummyServer {

private FtpServer server;

@PostConstruct
public void init() throws FtpException {
..some initialization
this.server = serverFactory.createServer();
this.server.start();
}

@PreDestroy
public void stop() {
this.server.stop();
}

请注意,服务器在@PostConstruct 中自动启动。我在 SpringBoot 中配置了不同的测试,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MainApplication.class)
@WebIntegrationTest
public class ApplicationTestX {
...
}

当我单独运行测试时,它们成功了。但是,当我一起运行它们时,我得到一个java.net.BindException:地址已在使用中:bind。我怎样才能避免这种情况?

最佳答案

如果您查看异常堆栈跟踪,您将看到 ftp 服务器尝试使用的地址。有点像

Caused by: org.apache.ftpserver.FtpServerConfigurationException: Failed to bind to address 0.0.0.0/0.0.0.0:21, check configuration

发生这种情况的原因可能是:

  1. 您的应用的另一个实例使用地址。如果是这样,您需要终止它们。
  2. 其他一些进程使用地址/端口。在这种情况下,您可以重新配置 ftp 服务器以绑定(bind)到另一个地址。

    FtpServerFactory serverFactory = new FtpServerFactory();

    ListenerFactory factory = new ListenerFactory();
    factory.setPort(2222); //use alternative port instead of default 21
    serverFactory.addListener("default", factory.createListener());

    server = serverFactory.createServer();
    server.start();

使用netstat找出保存地址的进程ID。

关于java - Spring 中的 "BindException: Address already in use"与 Apache FtpServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com