[ 
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

        

Reply via email to