spring.ioのガイド ( https://spring.io/guides/tutorials/web/6/ ) に従って、アプリケーションを Spring 4 に移行しています。以下はトレース スタックです。
java.lang.NullPointerException
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
完全なスタックは次のとおりです。
Servlet.service() for servlet [dispatcher] in context with path [] threw exception
java.lang.NullPointerException
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)
エラー スタックには多くの情報が表示されません。その原因を突き止め、このエラーを解決するにはどうすればよいですか?
ガイドに示されているのと同じ方法で Java 構成を使用します。WebAppInitializer と SecurityWebAppInitializer はガイドと同じです。
@Order(2)
public class WebAppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { WebSecurityConfig.class, JPAConfig.class, CoreConfig.class, FacebookConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
return new Filter[] { characterEncodingFilter};
}
}
@Order(1)
public class SecurityWebAppInitializer
extends AbstractSecurityWebApplicationInitializer { }
WebConfig.java のセクション:
@Configuration
@EnableWebMvc
@PropertySource({ "classpath:mail.properties",
"classpath:express.properties" })
@ComponentScan(basePackages = { "com.myapp.account.web" })
@Import({CoreConfig.class})
public class WebConfig extends WebMvcConfigurerAdapter {
....
}
そして WebSecurityConfig.java:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
}
SecurityWebAppInitializer を削除するか、親クラスの AbstractSecurityWebApplicationInitializer をコメントアウトすると、例外は発生しません。事前にご入力いただきありがとうございます。