【问题标题】:How to discover embedded Jetty port after requesting random available port?请求随机可用端口后如何发现嵌入式 Jetty 端口?
【发布时间】:2012-01-16 18:52:31
【问题描述】:
Server server = new Server(0);   
(..)
server.start();
// this returns _zero_ ?!?!
int listeningPort = server.getConnectors()[0].getPort();

我正在使用嵌入式 Jetty 7 API。将零传递给 Server(int) 构造函数会导致 Jetty 自动分配可用端口,我如何才能发现分配了哪个端口?

我已阅读文档,但找不到此信息。

谢谢..

【问题讨论】:

  • 找到了!使用 getLocalPort 代替 getPort()!
  • 这是一种非常有用的测试技术。

标签: java jetty


【解决方案1】:

函数getPort()返回配置值。

试试server.getConnectors()[0].getLocalPort(),它应该会返回选定的端口。

对于 9 号码头:

您需要使用((ServerConnector)server.getConnectors()[0]).getLocalPort()

在这两种情况下:您需要先致电server.start()

【讨论】:

  • 启动服务器很重要。如果您在服务器运行之前尝试获取端口,它将返回为-1
  • 在我的例子中,使用 Jetty 嵌入式,我必须手动创建和添加连接器,否则在调用 server.start() 后我没有连接器。这里是 Kotlin 代码:server.addConnector(ServerConnector(server).apply { port = 0 }) 然后我可以使用@paskos 建议的技术来获取端口。
【解决方案2】:

除了@pascos answer,还可以通过以下方式获取选择的端口:

server.getURI().getPort(); // e.g: 44759

如果您有兴趣获取整个服务器 URL(带端口),您可以这样做:

server.getURI().toString(); // e.g: http://127.0.0.1:44759/

【讨论】:

    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 2013-03-02
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多