2016-11-08 1 views
0

이전 프로젝트의 프레임 워크를 업그레이드 중입니다. 업데이트는 몇 가지 주요 버전에 포함 : -> 5.2.4 Hibernate 5.2.4, Spring 4.3.3, Struts 2.5.5 로의 업데이트 후 ConcurrentModificationException

  • 봄 2.1 -> 2.5.5
  • 봄 - 보안 2.x에서 -> 4.3.3
  • 스트럿츠 2.1

    1. 최대 절전 모드 3.1 - > 4.1.3
    2. 아파치 코 몬즈 컬렉션 3.2.1 -> 3.2.2

    JDK의 최신 소식을 용납하지 않았다, 우리가 사용하는 자바 8. 비록 I (필요한 경우 4.x의에 갱신이 가능합니다) 술이 없다고 생각하다. e 코드를 업데이트하기 전에 Java 8 기능을 사용하십시오.

    나는 컴파일러에 기대어 있었고, 난

    마지막 프로젝트가 몇 사용 중단 wornings 및 오류없이 컴파일 등의 프레임 워크에 대한 DTD를 업데이트 모든 클래스 참조를 고정. 그러나 로그인 페이지와 함께 색인 페이지를로드하자마자 아래 오류가 표시됩니다.

    아래 코드에는 Spring/Strut/Hibernate에 속하지 않는 클래스가 4 개 밖에 없지만 Spring 보안에서 doFilter를 호출하면됩니다. 간단한 위임. 목록이나 해시 맵을 작성, 반환 또는 반복하지 않습니다.

    모든 아이디어는 높이 평가됩니다. 아래의 전체 스택 추적. 고맙습니다.

    SEVERE: Servlet.service() for servlet [default] in context with path [/FeedXLWebapp] threw exception 
    java.util.ConcurrentModificationException 
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437) 
        at java.util.HashMap$KeyIterator.next(HashMap.java:1461) 
        at org.apache.commons.collections.iterators.IteratorEnumeration.nextElement(IteratorEnumeration.java:76) 
        at java.util.ResourceBundle.handleKeySet(ResourceBundle.java:1854) 
        at java.util.ResourceBundle.containsKey(ResourceBundle.java:1807) 
        at org.springframework.context.support.ResourceBundleMessageSource.getStringOrNull(ResourceBundleMessageSource.java:291) 
        at org.springframework.context.support.ResourceBundleMessageSource.resolveCodeWithoutArguments(ResourceBundleMessageSource.java:131) 
        at org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:218) 
        at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:136) 
        at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1249) 
        at org.springframework.context.support.MessageSourceAccessor.getMessage(MessageSourceAccessor.java:83) 
        at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:84) 
        at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:233) 
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:124) 
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at au.com.xprime.feedxl.accounts.security.spring.AuthenticationPostProcessingFilter.doFilterHttp(AuthenticationPostProcessingFilter.java:33) 
        at au.com.xprime.feedxl.accounts.security.spring.AuthenticationPostProcessingFilter.doFilter(AuthenticationPostProcessingFilter.java:22) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:150) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) 
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) 
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) 
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) 
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) 
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at au.com.xprime.feedxl.accounts.auth.filters.BrowserCheckFilter.doFilter(BrowserCheckFilter.java:32) 
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at au.com.xprime.webapp.filters.ResponseCacheControlFilter.doFilter(ResponseCacheControlFilter.java:102) 
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) 
        at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
        at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389) 
        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:100) 
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
        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:1041) 
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
        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:745) 
    
  • +0

    JDK 및/또는 Apache Commons Collections도 업그레이드했는지 확인하십시오. 그렇다면 어떤 버전입니까? –

    +0

    @ Bond-JavaBond 요청한 jdk 및 라이브러리 버전으로 내 게시물을 업데이트했습니다. 나는 또한 commons-collections 4.1로 빠른 실행을 시도했지만 3.2.2와 4.1 사이에서 꽤 많이 바뀐 것처럼 보인다. 나는 더 나은 아이디어가없는 상태에서 commons-collections 4.1을 가지고 놀 것이다. 아마도 도움이 될 것이다. –

    +0

    Okies .. 이미 JDK 8을 사용하고 있었기 때문에 JDK 8이 'ConcurrentModificationException'을 이끌어내는 특정 개선점을 가지고 있기 때문에 다른 이슈로 보입니다 –

    답변

    0

    so. 나는 이것을 우리의 것으로 생각했다. 문제는 체인 된 메시지 가져 오기 클래스입니다.

    개체의 컬렉션 (예 : HashMap)이 있고이 컬렉션의 개체 중 하나가 동일한 컬렉션에 새 요소를 추가하려고하면 동시 수정 예외가 발생하는 것처럼 보입니다.

    관련 문제