Description
After updating to 1.7.2 (from 1.6.3) my application on Tomcat 8 stopped working.
It configures both the WebBeansConfigurationListener and WebBeansConfigurationFilter in web.xml
<listener> <listener-class>org.apache.webbeans.servlet.WebBeansConfigurationListener</listener-class> </listener> <filter> <filter-name>WebBeansConfigurationFilter</filter-name> <filter-class>org.apache.webbeans.servlet.WebBeansConfigurationFilter</filter-class> </filter> <filter-mapping> <filter-name>WebBeansConfigurationFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping>
I need this setup to handle requests being forwarded by a different webapp (with cross-context).
When starting, Open-Webbeans fails now with:
SCHWERWIEGEND: Exception starting filter WebBeansConfigurationFilter org.apache.webbeans.exception.DuplicateDefinitionException: PassivationCapable bean id is not unique: SERVLET_CONTEXT#interface javax.servlet.ServletContext#@javax.enterprise.inject.Default(),@javax.enterprise.inject.Any(), bean:ServletContext, WebBeansType:SERVLET_CONTEXT, Name:null, API Types:[java.lang.Object,javax.servlet.ServletContext], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any] at org.apache.webbeans.container.BeanManagerImpl.addPassivationInfo(BeanManagerImpl.java:411) at org.apache.webbeans.container.BeanManagerImpl.addInternalBean(BeanManagerImpl.java:365) at org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:90) at org.apache.webbeans.servlet.WebBeansConfigurationFilter.init(WebBeansConfigurationFilter.java:90)
This is probably due to WebContainerLifecycle#startApplication, which does not first check if it is already started before it adds the ServletContextBean (again) in contrast to AbstractLifecycle#startApplication (bootstrapApplication).