既存の動作中のSpring MVC(4.1)アプリケーションをJava 6(JRockit)のWebLogic 12.1からJava 8のWebLogic 12.2に移行しています。 Spring Securityの重複フィルタ登録に関する例外が発生しました。WebLogicアップグレード+ Java 8 'springSecurityFilterChain'の重複フィルタ登録の発生
java.lang.IllegalStateException: Duplicate Filter registration for 'springSecurityFilterChain'. Check to ensure the Filter is only configured once.
私たちは、私は、フィルタの登録を行うことになっているものであると考えているアプリケーションでAbstractSecurityWebApplicationInitializerの存在を拡張するクラスを持っています。
WebApplicationInitializerの実装では、フィルタを追加するように見えます。それを削除すると、この問題を解決するようだが、それは私がオンラインthisを見つけた賢明かつ情報に富んだ質問を準備しようとして
container
.addFilter(
AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME,
DelegatingFilterProxy.class)
.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class),
false, "/*");
のJava 6
で12.1上でアプリケーションを破ります。明らかにこれはWebLogicのバグで、WebApplicationInitializer実装でフィルタを追加することで回避しましたが、アップグレードしたときに元のAbstractSecurityWebApplicationInitializer拡張クラスをアプリケーションから削除していないため、重複が発生しました。私たちの最終的な解決策は、AbstractSecurityWebApplicationInitializerを拡張したクラスを削除することでした(addFilter()の呼び出しとして残すためには、もっと明白です)。