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

Collision by Swagger2Feature in two OSGI bundles

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1.4
    • 3.1.8, 3.2.0
    • OSGi
    • None
    • Apache Karaf 4.0.2

    • Unknown

    Description

      I have two separate bundles in my karaf, which are using cxf with the swagger2feature. The endpoints (/cxf/bpc-core and /cxf/bpc-monitor/ ) in both bundles working fine. But I got on both swagger-URL the same swagger-File (both for the monitor endpoints).

      I'm using the blueprint for swagger2feature configuration and annotation for the endpoints.

      core bundle

      <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:cxf="http://cxf.apache.org/blueprint/core"
             xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
      
             xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                                 http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
                                 http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd">
      
      
      
          <!-- JAXRS providers -->
          <bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
      
          <!-- Application resources -->
          <bean id="authenticationResource" class="de.virtimo.bpc.core.resource.AuthenticationResource" />
          <bean id="configurationResource" class="de.virtimo.bpc.core.resource.Configuration" />
          <bean id="statusResource" class="de.virtimo.bpc.core.resource.Status" />
      
          <!-- CXF Swagger2Feature -->  
          <bean id="swagger2Feature_core" class="org.apache.cxf.jaxrs.swagger.Swagger2Feature">
              <property name="basePath" value="/bpc-core"/>
              <property name="title" value="BPC Core"/>
          </bean>
      
          <cxf:bus>
              <cxf:features>
                  <cxf:logging />
              </cxf:features>
          </cxf:bus>
      
          <jaxrs:server id="bpcServer" address="/bpc-core">
              <jaxrs:serviceBeans>
                  <ref component-id="authenticationResource" />
                  <ref component-id="configurationResource" />
                  <ref component-id="statusResource" />
              </jaxrs:serviceBeans>
              <jaxrs:providers>
                  <ref component-id="jsonProvider" />
              </jaxrs:providers>
              <jaxrs:features>
                  <ref component-id="swagger2Feature_core" />
              </jaxrs:features>
          </jaxrs:server>
      
      </blueprint>
      

      Monitor Bundle

      <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:cxf="http://cxf.apache.org/blueprint/core"
             xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
      
             xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                                 http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
                                 http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd">
      
      
      
          <!-- JAXRS providers -->
          <bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
      
          <!-- Application resources -->
          <bean id="monitorResource" class="de.virtimo.bpc.module.monitor.resource.Monitor" />
      
          <!-- CXF Swagger2Feature -->  
          <bean id="swagger2Feature_monitor" class="org.apache.cxf.jaxrs.swagger.Swagger2Feature">
              <property name="basePath" value="/bpc-monitor"/>Center"/>
              <property name="title" value="BPC Monitor"/>
          </bean>
      
          <cxf:bus>
              <cxf:features>
                  <cxf:logging />
              </cxf:features>
          </cxf:bus>
      
          <jaxrs:server id="bpcMonitor" address="/bpc-monitor">
              <jaxrs:serviceBeans>
                  <ref component-id="monitorResource" />
              </jaxrs:serviceBeans>
              <jaxrs:providers>
                  <ref component-id="jsonProvider" />
              </jaxrs:providers>
              <jaxrs:features>
                  <ref component-id="swagger2Feature_monitor" />
              </jaxrs:features>
          </jaxrs:server>
      
      </blueprint>
      

      I got the swagger-file for the monitor bundle on /cxf/bpc-core/swagger.json and /cxf/bpc-monitor/swagger.json

      Anyone suggestion how to handle this scenario?

      Attachments

        1. CXF-6740-Collision-by-Swagger.patch
          40 kB
          Andriy Redko
        2. 0001-temporary-work-for-cxf-6740-take-2.patch
          26 kB
          Akitoshi Yoshida
        3. 0001-temporary-work-for-cxf-6740.patch
          25 kB
          Akitoshi Yoshida

        Issue Links

          Activity

            People

              reta Andriy Redko
              andreschlegel Andre Schlegel-Tylla
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: