5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Spring BootとJerseyでできたアプリケーションがエラーハンドリングで問題が起きていたのでまとめます

問題

Spring BootとJerseyでAPIを作成したのですが、なぜか内部エラー(500)がすべて404になってしまっていました

class JerseyConfig : ResourceConfig() {
    init {
(省略)
        register(RuntimeExceptionMapper::class.java)
        register(NotFoundExceptionMapper::class.java)
        register(QueryParamExceptionMapper::class.java)
        register(BadRequestExceptionMapper::class.java)
    }
}

Jerseyではエラーハンドリングを初期設定しています
このエラーハンドリングを消すとちゃんと500エラーが返ってくるようになりましたが、以下のエラーが出ました

request url is /error

なぜか内部でエラーページを返そうとしていました

解決方法

@SpringBootApplication
@EnableAutoConfiguration(
    exclude = [DataSourceAutoConfiguration::class, DataSourceTransactionManagerAutoConfiguration::class, JpaRepositoriesAutoConfiguration::class]
    exclude = [
        (省略)
        ErrorMvcAutoConfiguration::class // 追加
    ]

どうもJerseyではエラーガでるとページをデフォルトで返すようでこれが問題になっていました
そもそもSpirng MVCでなく、Spring Boot restを使っていればJerseyを使わないで済むのでそっちのほうがよさそうです

おわりに

Spring Bootは本当に魔法が多くて難しいなと毎度思います

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?