[
https://issues.apache.org/jira/browse/RAVE-722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Anthony Carlucci resolved RAVE-722.
-----------------------------------
Resolution: Fixed
Fix Version/s: 0.14
Assignee: Anthony Carlucci
Shindig's GuiceServletContextListener overrides the
ServletContextListener.contextDestroyed method to perform cleanup tasks when
the web application context is destroyed. However in Rave, we have a custom
GuiceBindingSpringContextLoaderListener class that we use instead of the
aforementioned class, and we apparently never implemented the contextDestroyed
function to invoke the Guice cleanup functions. Something in Shindig
2.5.0-beta2 finally brought this issue to light as the contextDestroyed
function has been missing all along.
> Shindig webapp component can't be re-deployed without a container restart
> -------------------------------------------------------------------------
>
> Key: RAVE-722
> URL: https://issues.apache.org/jira/browse/RAVE-722
> Project: Rave
> Issue Type: Bug
> Affects Versions: 0.14
> Reporter: Anthony Carlucci
> Assignee: Anthony Carlucci
> Fix For: 0.14
>
>
> Since the upgrade to Shindig 2.5.0-beta2, Rave's ROOT.war web archive can't
> be re-deployed to Tomcat without restarting the entire Tomcat process. It
> seems like it has to do with Shindig registering an EhCache class as an
> MBean, which apparently stays in the JVM between web context restarts, and
> Shindig doesn't seem to be removing it or handling that case properly.
> This will affect any deployments of Rave in environments, for example, where
> you plan to use Tomcat's auto-deploy feature to only redeploy a web
> application without restarting the entire container (such as a CI
> environment).
> HOW TO REPRODUCE
> ----------------------------------
> 1) Build and deploy Rave using the standard mvn install / mvn cargo:run
> commands
> 2) Force Tomcat to reload the web application by making a change the the
> ROOT.war file located in $RAVE_HOME/rave-portal/target/tomcat6x/webapps. Any
> easy way to do this is simply add a text file into the war.
> 3) Watch the Tomcat logs as the ROOT webapp reloads - you will eventually see
> the following error stack:
> [WARNING] [talledLocalContainer] SEVERE: Exception starting filter authFilter
> [WARNING] [talledLocalContainer] com.google.inject.ProvisionException: Guice
> provision errors:
> [WARNING] [talledLocalContainer]
> [WARNING] [talledLocalContainer] 1) Error injecting constructor,
> net.sf.ehcache.CacheException:
> javax.management.InstanceAlreadyExistsException:
> net.sf.ehcache:type=CacheManager,name=ShindigCM
> [WARNING] [talledLocalContainer] at
> org.apache.shindig.common.cache.ehcache.EhCacheCacheProvider.<init>(EhCacheCacheProvider.java:75)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.common.cache.ehcache.EhCacheCacheProvider
> [WARNING] [talledLocalContainer] at
> org.apache.shindig.common.cache.ehcache.EhCacheModule.configure(EhCacheModule.java:32)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.common.cache.CacheProvider
> [WARNING] [talledLocalContainer] for parameter 1 at
> org.apache.shindig.expressions.Expressions.<init>(Expressions.java:79)
> [WARNING] [talledLocalContainer] at
> org.apache.shindig.expressions.Expressions.class(Expressions.java:51)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.expressions.Expressions
> [WARNING] [talledLocalContainer] for parameter 4 at
> org.apache.shindig.config.JsonContainerConfig.<init>(JsonContainerConfig.java:63)
> [WARNING] [talledLocalContainer] at
> org.apache.shindig.config.JsonContainerConfig.class(JsonContainerConfig.java:50)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.config.JsonContainerConfig
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.config.ContainerConfig
> [WARNING] [talledLocalContainer] for parameter 0 at
> org.apache.shindig.auth.DefaultSecurityTokenCodec.<init>(DefaultSecurityTokenCodec.java:53)
> [WARNING] [talledLocalContainer] at
> org.apache.shindig.auth.DefaultSecurityTokenCodec.class(DefaultSecurityTokenCodec.java:53)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.auth.DefaultSecurityTokenCodec
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.auth.SecurityTokenCodec
> [WARNING] [talledLocalContainer] for parameter 0 at
> org.apache.shindig.auth.UrlParameterAuthenticationHandler.<init>(UrlParameterAuthenticationHandler.java:47)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.auth.UrlParameterAuthenticationHandler
> [WARNING] [talledLocalContainer] for parameter 1 at
> org.apache.shindig.social.core.oauth.AuthenticationHandlerProvider.<init>(AuthenticationHandlerProvider.java:40)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.social.core.oauth.AuthenticationHandlerProvider
> [WARNING] [talledLocalContainer] while locating
> java.util.List<org.apache.shindig.auth.AuthenticationHandler>
> [WARNING] [talledLocalContainer] for parameter 0 at
> org.apache.shindig.auth.AuthenticationServletFilter.setAuthenticationHandlers(AuthenticationServletFilter.java:74)
> [WARNING] [talledLocalContainer] while locating
> org.apache.shindig.auth.AuthenticationServletFilter
> [WARNING] [talledLocalContainer]
> [WARNING] [talledLocalContainer] 1 error
> [WARNING] [talledLocalContainer] at
> com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:451)
> [WARNING] [talledLocalContainer] at
> com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:65)
> [WARNING] [talledLocalContainer] at
> com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:944)
> [WARNING] [talledLocalContainer] at
> org.apache.shindig.common.servlet.InjectedFilter.init(InjectedFilter.java:47)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.startup.HostConfig.check(HostConfig.java:1385)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
> [WARNING] [talledLocalContainer] at
> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
> [WARNING] [talledLocalContainer] at
> java.lang.Thread.run(Thread.java:662)
> [WARNING] [talledLocalContainer] Caused by: net.sf.ehcache.CacheException:
> javax.management.InstanceAlreadyExistsException:
> net.sf.ehcache:type=CacheManager,name=ShindigCM
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira