Uploaded image for project: 'OpenWebBeans'
  1. OpenWebBeans
  2. OWB-1175

Duplicate registration of ServletContextBean

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.7.2
    • 1.7.3
    • Web
    • None

    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).

      Attachments

        1. test.zip
          2 kB
          Benjamin Mueller

        Activity

          People

            struberg Mark Struberg
            bmueller Benjamin Mueller
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: