2012-01-16 27 views
23
Server server = new Server(0); 
(..) 
server.start(); 
// this returns _zero_ ?!?! 
int listeningPort = server.getConnectors()[0].getPort(); 

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

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

谢谢..

+3

找到了!使用getLocalPort而不是getPort()! – Leo

+1

这是一个非常有用的测试技术。 –

回答

35

功能getPort()返回配置的值。

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

对于码头9:

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

在这两种情况下:您首先需要拨打server.start()

+1

plz把你的代码用ctrl + k – Shail

+1

启动服务器很重要。如果在服务器运行之前尝试获取端口,它将以'-1'返回。 – knittl

-1

对于我getPort()在两种情况下工作。

服务器开始之前:

((AbstractNetworkConnector) server.getConnectors()[0]).getPort(); -> 8080 
((AbstractNetworkConnector) server.getConnectors()[0]).getLocalPort(); -> -1 
((AbstractNetworkConnector) server.getConnectors()[0]).getHost(); -> null 

服务器启动后:

((AbstractNetworkConnector) server.getConnectors()[0]).getPort(); -> 8080 
((AbstractNetworkConnector) server.getConnectors()[0]).getLocalPort(); -> 8080 
((AbstractNetworkConnector) server.getConnectors()[0]).getHost(); -> null