2012-01-16 1 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

はそれを見つけました! getPort()の代わりにgetLocalPortを使用してください! – 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 
関連する問題