Spring Frameworkを使用してAPI RESTを開発しています
最初に、同じ問題のためにアプリケーションを実行できませんでした。コンピューターのポート8080がビジーです。次に、この問題を解決する1つの代替方法は、application.properties
フォルダーの下にsrc/main/resources
ファイルを作成することであることがわかりました。これが私が作成したものであり、ポート8090でリッスンするようにサーバーをセットアップしました。これは初めて機能しましたが、アプリケーションを2回実行しようとすると同じ例外が発生します。
Description:
The Tomcat connector configured to listen on port 8090 failed to start. The port may already be in use or the connector may be misconfigured.
Action:
Verify the connector's configuration, identify and stop any process that's listening on port 8090, or configure this application to listen on another port.
私の知る限り、このフレームワークはApache Tomcatの埋め込みインスタンスを使用して、すべてのアプリケーションをデプロイします。
私の推測では、アプリを2回実行しようとするとサーバーが再起動されないため、「ポートが既に使用されているか、コネクタが正しく構成されていない可能性があります」と出力されます
したがって、より具体的な質問は、Apache Tomcatの埋め込みインスタンスを手動またはプログラムで管理するにはどうすればよいでしょうか?
application.properties
ファイルのポートも2回変更しました。正常に動作しますが、これも初めてです。ご想像のとおり、アプリを実行するたびに同じことを行うことはできません。
コンソールで、ダイアログの一番上の右側を見ると、ブザーのような赤いボタンが見えるはずです。実行したばかりのスプリングブートアプリケーションを適切に停止するには、この特定の「赤色」ボタンを押して問題を解決します。お役に立てれば!
ポートのプロセスID(PID)を見つけます(例:808)
Windowsの場合:
netstat -ao | find "8080"
Windows以外のプラットフォーム:
lsof -i:8080
見つけたプロセスIDを強制終了します(例:20712)
Windowsの場合:
Taskkill /PID 20712 /F
Windows以外のプラットフォーム:
kill -9 20712 or kill 20712
このエラーを解決するもう1つの簡単な方法は、コンソールを右クリックし、[すべて終了/すべて切断]をクリックすることです。その後、アプリケーションを実行すると正常に動作するはずです。
その理由は、アプリケーションを停止するのではなく、別の時間にアプリケーションを起動する前であるため、ポートがすでに使用されているということです。
再起動する前に、常にアプリケーションを停止する必要があります。そうしないと、ポートの競合の問題が発生します。
プラットフォームに応じて、Windowsで実行する場合はnetstat -anp | find "port number"
を使用できます。Linuxで実行する場合はnetstat -ntpl | grep "port number"
を使用できます。macの場合はlsof -n -iTCP:"port number"
を使用します。
私が初めて実行したときにこの問題にすでに直面していますが、もう一度私が得た別のプロジェクトを実行したい:
The Tomcat connector configured to listen on port 8088 failed to start. The port may already be in use or the connector may be misconfigured.
Action:
Verify the connector's configuration, identify and stop any process that's listening on port 8088, or configure this application to listen on another port.
そして、最終的に私はこれの解決策を得ました、それは下のスクリーンショットで与えられます:
Consoleタブを右クリックして->を選択し、Terminate/Disconnect allおよびコードを実行してみてください。
注:再度実行する前にサーバーを停止することを忘れないでください。
アプリをhttpSで実行する場合は、次のプロパティの下に正しい値を入力してください。
server.ssl.key-store-password=
server.ssl.key-alias=
ここに間違った値を入力すると同じエラーが発生しました
この状況を処理/回避するための2つのオプションがあります。
アプリケーションを再実行する前に、前の接続を終了してください。
Open the console --> right click --> terminate all.
手順1でアクションの言及を実行するのを忘れた場合
Windowsの場合:
開始するには、[スタート]をクリックして[cmd]と入力し、コマンドプロンプトを開きます。コマンドウィンドウで、次のコマンドを入力します。
netstat -a -n -o
上記のコマンドでは、-oパラメーターはPIDをテーブルの最後に追加するものです。 Enterキーを押すと、次のように表示されます。
そのポートを使用しているプロセスの名前を確認するには、CTRL + SHIFT + ESCを押してタスクマネージャーに移動し、[プロセス]タブをクリックします。 Windows 10では、[詳細]タブをクリックする必要があります。
デフォルトでは、タスクマネージャーはプロセスIDを表示しないため、[表示]、[列の選択]の順にクリックする必要があります。
また、バックグラウンドで実行されているサービスを調べる必要があります。これを行うには、以下に示すように右クリックして開いているサービスを選択します。
それが役に立てば幸い :)
この問題は次の2つの方法で解決できます。
netstat -ao | find "8080" Taskkill /PID 1342 /F
server.port = 8081