springboot + tomcatのページ遷移ができない
現在、SpringBoot(バージョン2.1.4.RELEASE)でSpringSecurityを使用したwebアプリを作成しています。最初にログインページを表示し、認証成功時に2ページ目(top)に遷移する予定でした。
ローカルPCでtomcatとアプリを起動し、ブラウザからurlを入力するとログインページを表示し、ページ遷移します。その時のログが以下となります。
2019-09-04 13:36:45.344 INFO 216 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 15 ms
2019-09-04 13:36:50.503 INFO 216 --- [nio-8080-exec-5] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory
2019-09-04 13:36:50.950 DEBUG 216 --- [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet : GET "/xxx/", parameters={}
2019-09-04 13:36:50.956 DEBUG 216 --- [nio-8080-exec-8] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public java.lang.String yyy.TopController.index(org.springframework.ui.Model)
2019-09-04 13:36:50.992 DEBUG 216 --- [nio-8080-exec-8] o.s.w.s.v.ContentNegotiatingViewResolver : Selected 'text/html' given [text/html, application/xhtml+xml, image/webp, image/apng, application/signed-exchange;v=b3, application/xml;q=0.9, */*;q=0.8]
2019-09-04 13:36:51.299 DEBUG 216 --- [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet : Completed 200 OK
このアプリのwarを生成し、linuxサーバ(tomcat8を稼働)にデプロイし、実行するとログインページが表示されるので認証情報を入力しokをクリックすると、次ページに遷移せずにエラーを表示します。
サーバのアプリのログは以下のとおりです。
2019/09/04 04:24:00 INFO [ajp-nio-8009-exec-1] [] - Completed initialization in 28 ms
エラーメッセージは以下のとおりです。
404 Not Found
The requested URL /xxx/login was not found on this server.
ローカルPCのようなGETのログが出力されず、次ページに遷移できません。
サーバにSpringBootのwebアプリをデプロイする際に必要な設定などがあれば教えていただきたいです。
ソースは以下のとおりとなります。
<セキュリティアダプタ>
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
// loginはアクセスを許可
.antMatchers("/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin() //
.loginProcessingUrl("/login")
.loginPage("/login").usernameParameter("user").passwordParameter("password") // ログインページ
.defaultSuccessUrl("/top", true) //認証成功時の遷移先ページ
.failureUrl("?error")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout**")) // ログアウト処理のパス
.logoutSuccessUrl("/login")
// ログアウト時に削除するクッキー名
.deleteCookies("JSESSIONID")
// ログアウト時のセッション破棄を有効化
.invalidateHttpSession(true)
.permitAll()
.and()
.sessionManagement()
// セッションが無効な時の遷移先
.invalidSessionUrl("/login");
;
}
<2ページ目>
@Controller
public class TopController {
@RequestMapping(value = {"/"}, method = RequestMethod.GET)
public String index(Model model) {
return "top";
}
}
よろしくお願いします。