Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-8824

CDI beans produced by @Produces methods are generated twice

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.2.0, 3.5.5
    • 3.6.0, 4.0.1, 3.5.6, 3.4.11
    • Integration, JAX-RS
    • None
    • CXF 3.5.5 running in Tomcat 9.0.70 using JBoss Weld 3.1.9 as the CDI implementation. Using cxf-integration-cdi and CXFCdiServlet

    • Unknown

    Description

      We recently upgraded from CXF 3.1.9 to 3.5.5 and after upgrade encountered this bug.

      Specifically we have some javax.ws.rs.container.ContainerRequestFilter implementations that are built using @Produces methods on our base javax.ws.rs.core.Application class. Since the upgrade we have discovered that these filters are being added to the request interceptor chain twice.

      After debugging I found that all CDI managed beans built by @Produces methods that use the @Provider annotation for discovery are now processed twice.

      It appears to me that the problem is in the current implementation of JAXRSCdiResourceExtension. This implementation has @Observes methods for both ProcessProducerMethod events and ProcessBean events - but ProcessProducerMethod extends ProcessBean so both of these handlers get called for each ProcessProducerMethod event fired by the CDI implementation. This means both handlers add the producer method to the list of providerBeans and the producer method is subsequently called twice when loadProviders() is called and two instances of the provider are passed to the JAXRSServerFactoryBean.

      I believe this behaviour was introduced by this commit:
      https://github.com/apache/cxf/commit/4b96a222aea61f9fe80083c4c4bb1519955890ab

      Attachments

        Issue Links

          Activity

            People

              reta Andriy Redko
              dmaplesden David Maplesden
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: