たなかのJava日記

どんなことをやったか(学んだか)、どこで詰まったか(わからなかったか)、どこで工夫したかの記録です。

Day29,【Spring Boot】localhost:8080へアクセス⇒謎のログイン画面が表示される件

表題の件ですが、初歩的な凡ミスでまとめる必要性がないのか、同様の記事がネット上に無かったので忘備録として記載します。
対象のソースコードは以下です。

package jp.gihyo.projava.talklist;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;

@RestController
public class HomeRestController {
    @RequestMapping(value="/resthello")
    String hello() {
        return """
                Hello.
                It works!
                現在時刻は%sです。
                """.formatted(LocalDateTime.now());
    }
}


■困っていたこと
プロジェクト実行後、以下をWebブラウザのアドレスバーからアクセスしました。

http://localhost:8080/resthello

その際に、ログインを求められる画面に遷移します。
IDとパスワードがわかりません。
思い当たるセットを入力するが、全てNGでした。
(Windowsへのログイン時に使用するID、パスワードや、クロームで使用しているグーグルアカウントなど)


■仮説
ページへのアクセスはできているのでコードに問題は無さそうです。
となると考えられるのはポート番号周りです。


■検証結果1
https://qiita.com/Yasutaka7/items/00aee38bcabb2e6a2e3d

仮説とは違う、上記のような記事ばかりがヒットしました。
Spring Securityを入れている場合はログインを求められることがわかりました。
しかし、私の場合はSpring Securityを入れていません。どうやら違うようです。
Spring Securityを導入しているかどうかは、pom.xmlを確認すれば依存関係がわかります。
早速、私のプロジェクトでpom.xml確認すると、依存関係の記述は「spring-boot-starter-web」の追加のみでした。
違うと判断し、次の検証を行いました。


■検証結果2
次は仮説で考えていた、ポート番号周りを調べてみました。
まず、8080番にアクセスできないということは、何か他のアプリで使用していることが考えられます。
Windowsの場合はコマンドプロンプトから探せるとの記事を発見しました。

あるポート番号が何のアプリケーションで使用されているか調べる方法 - Windows - Project Group

この手順通り調べた結果、【oracle】が使用していました。
どうやらデータベースを学習する際に、oracleのsqldeveloperを導入したので、その時にインストールされた他の実行ファイルが使用していたようです。


■検証結果2に矛盾が生じています
ポート番号8080がoracleが使用していると、そもそもSpring Bootのプロジェクトが実行できないはずです。
なぜなら、Spring Webのデフォルトの設定ではポート番号は8080なので、実行で失敗するのです。
しかし、私の場合は成功しているので矛盾が生じます。早速、実行結果のログを確認してみることにしました。

Tomcat initialized with port(s): 8888 (http)」

このメッセージは8888番ポートを使用していますとの意味です。
そうでした!ポート番号を8888に変更していたことを思い出しました。
このプロジェクト作成した直後に、ビルドなど問題ないかを確認するため一度実行して、
「Port 8080 was already in use.」とのメッセージが表示されていたのでした。
このメッセージは、すでに8080番ポートは使用しているという意味です。
何かわからないけど、他で使ってるんだったらとりあえずで変更したのでした。
ちなみに、使用するポート番号の変更は、src/main/resourcesフォルダの中にある「application.properties」ファイルを開いて、

server.port = 8888

と記載するのみです。※8888は今回、私が使用したポート番号です。
ポート番号は使用できない番号がたくさんあるので別途調べる必要があります。


■最終結
原因はポート番号の指定ミス。
デフォルトのポート番号8080はすでに使用されていたので、ポート番号を8888番に変更していたのですが、URLの指定は8080番のままだったためでした。