1
Tomcat 7.0サーバーの上で動作するSpring MVCを持つWebアプリケーションがあります。存在しないURLへの呼び出しが行われたときにStackOverflowErrorを避ける
アプリケーションは正常に動作しますが、設定されていないURLを呼び出そうとすると、エラーが多く表示され、StackOverflowError
例外が発生します。私のログのサンプル:
SEVERE: Servlet.service() for servlet BatchUI threw exception
java.lang.StackOverflowError
at org.apache.catalina.core.ContainerBase.getManager(ContainerBase.java:466)
at org.apache.catalina.connector.Request.doGetSession(Request.java:2905)
at org.apache.catalina.connector.Request.getSession(Request.java:2310)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:897)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:592)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:592)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:592)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229)
私のアプリケーションの初期化子は、次のようになります。周りの10〜15秒後
private static final String DISPATCHER_SERVLET_NAME = "BatchUI";
private static final String DISPATCHER_SERVLET_MAPPING = "/";
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//Load application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(SpringContextConfiguration.class);
rootContext.setDisplayName("User Interface");
//Context loader listener
servletContext.addListener(new ContextLoaderListener(rootContext));
//Dispatcher servlet
ServletRegistration.Dynamic dispatcher =
servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(rootContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping(DISPATCHER_SERVLET_MAPPING);
}
は、内部サーバーエラーがブラウザに返されますが、私のログがいっぱい取得します私が投稿したような痕跡。
これらのエラーを回避する方法はありますか?それとも、それを処理するにはより良い方法でしょうか。
私はフィルタを追加し、URLが存在するかどうかを確認する要求をチェックし、存在しない場合はエラーページなどにリダイレクトすることを検討していました。
アドバイスをいただきありがとうございます。
ありがとうございます、それは別のページにリダイレクトを修正します、私はStackOverflowError例外がたくさんあることを避けることができますか? –
このプロジェクトを見てくださいhttps://bitbucket.org/hebertsouza87/exemplorest/src 私はあなたが最良の方法で春のmvcを使用していないと思います。このプロジェクトは安らかなAPIのためのベースですが、実際にはspring mvcを使用しています –