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

时间:2012-01-16 18:52:31

标签: java jetty

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

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

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

感谢..

2 个答案:

答案 0 :(得分:38)

函数getPort()返回配置的值。

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

对于Jetty 9:

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

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

答案 1 :(得分:3)

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

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

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

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