Page 1 of 1

AbstractMethodError on changing runtime.environment variable to staging or production

Posted: Mon Jan 11, 2016 6:12 am
by tgugnani
I have hosted the broadleaf commerce Site on Amazon AWS Beanstalk. It works fine in the development environment, as I change the runtime.environment variable to either staging or production. I receive this stacktrace.

Code: Select all

java.lang.AbstractMethodError: org.broadleafcommerce.vendor.amazon.s3.S3FileServiceProvider.addOrUpdateResourcesForPaths(Lorg/broadleafcommerce/common/file/domain/FileWorkArea;Ljava/util/List;Z)Ljava/util/List;
   org.broadleafcommerce.common.file.service.BroadleafFileServiceImpl.addOrUpdateResourcesForPaths(BroadleafFileServiceImpl.java:297)
   org.broadleafcommerce.common.file.service.BroadleafFileServiceImpl.addOrUpdateResourceForPath(BroadleafFileServiceImpl.java:270)
   org.broadleafcommerce.common.resource.service.ResourceBundlingServiceImpl.saveBundle(ResourceBundlingServiceImpl.java:262)
   org.broadleafcommerce.common.resource.service.ResourceBundlingServiceImpl$1.doInLock(ResourceBundlingServiceImpl.java:180)
   de.jkeylockmanager.manager.implementation.lockstripe.StripedKeyLockManager$1.doInLock(StripedKeyLockManager.java:77)
   de.jkeylockmanager.manager.implementation.lockstripe.StripedKeyLockManager.executeLockedInternal(StripedKeyLockManager.java:99)
   de.jkeylockmanager.manager.implementation.lockstripe.StripedKeyLockManager.executeLocked(StripedKeyLockManager.java:75)
   org.broadleafcommerce.common.resource.service.ResourceBundlingServiceImpl.createBundleIfNeeded(ResourceBundlingServiceImpl.java:172)
   org.broadleafcommerce.common.resource.service.ResourceBundlingServiceImpl.resolveBundleResourceName(ResourceBundlingServiceImpl.java:129)
   org.broadleafcommerce.common.web.processor.ResourceBundleProcessor.processElement(ResourceBundleProcessor.java:160)
   org.thymeleaf.processor.element.AbstractElementProcessor.doProcess(AbstractElementProcessor.java:74)
   org.thymeleaf.processor.AbstractProcessor.process(AbstractProcessor.java:212)
   org.thymeleaf.dom.Node.applyNextProcessor(Node.java:1017)
   org.thymeleaf.dom.Node.processNode(Node.java:972)
   org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)
   org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)
   org.thymeleaf.dom.Node.processNode(Node.java:990)
   org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)
   org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)
   org.thymeleaf.dom.Node.processNode(Node.java:990)
   org.thymeleaf.dom.NestableNode.computeNextChild(NestableNode.java:695)
   org.thymeleaf.dom.NestableNode.doAdditionalProcess(NestableNode.java:668)
   org.thymeleaf.dom.Node.processNode(Node.java:990)
   org.thymeleaf.dom.Document.process(Document.java:93)
   org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1155)
   org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
   org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
   org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
   org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:190)
   org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
   org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
   org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
   org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
   org.broadleafcommerce.cms.web.URLHandlerFilter.doFilterInternal(URLHandlerFilter.java:95)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.broadleafcommerce.core.web.order.security.CartStateFilter.doFilterInternal(CartStateFilter.java:85)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.broadleafcommerce.common.web.filter.TranslationFilter.doFilter(TranslationFilter.java:51)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.broadleafcommerce.profile.web.core.security.CustomerStateFilter.doFilterInternal(CustomerStateFilter.java:57)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.broadleafcommerce.common.web.BroadleafRequestFilter.doFilterInternal(BroadleafRequestFilter.java:104)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilterInternal(ResourceUrlEncodingFilter.java:51)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
   org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.broadleafcommerce.profile.web.core.security.SessionFixationProtectionFilter.doFilter(SessionFixationProtectionFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.broadleafcommerce.common.security.handler.CsrfFilter.doFilter(CsrfFilter.java:85)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
   org.broadleafcommerce.common.web.filter.EstablishSessionFilter.doFilter(EstablishSessionFilter.java:43)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
   org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166)
   org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
   org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
   org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
   org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
   org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
   org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)



I am not sure what is going wrong, since changing the environment variable on my local environment works fine. It would be great if I can get some clues on what might be going wrong.

Re: AbstractMethodError on changing runtime.environment variable to staging or production

Posted: Mon Jan 11, 2016 7:35 am
by jiteshyadav
Extract broadleaf-amazon-1.1.0-GA and go to directory "org/broadleafcommerce/vendor/amazon/s3". Locate class file "S3FileServiceProvider.class". Decompile this file using any online decompiler and try to find method "addOrUpdateResourcesForPaths". Most likely you won't find it. If that's the case, you are saved. Your jar file downloaded is corrupt. Try downloading directly from mvnrepository.com/artifact/org.broadleafcommerce/… or delete the jar from .m2 repo and let maven download it again. Check again, the method will be there now. That's it, done :)