如何在请求随机可用端口后发现嵌入式Jetty端口?

Leo*_*Leo 30 java jetty

Server server = new Server(0);   
(..)
server.start();
// this returns _zero_ ?!?!
int listeningPort = server.getConnectors()[0].getPort();
Run Code Online (Sandbox Code Playgroud)

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

我已阅读文档,但无法找到此信息.

谢谢..

pas*_*kos 40

该函数getPort()返回配置的值.

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

对于Jetty 9:

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

在这两种情况下:你需要先打电话server.start().

  • 启动服务器很重要。如果您在服务器运行之前尝试获取端口,它将返回为 `-1`。 (3认同)

O.B*_*adr 6

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

server.getURI().getPort(); // e.g: 44759
Run Code Online (Sandbox Code Playgroud)

如果您有兴趣获取整个服务器 URL(带端口),您可以执行以下操作:

server.getURI().toString(); // e.g: http://127.0.0.1:44759/
Run Code Online (Sandbox Code Playgroud)