[ https://issues.apache.org/jira/browse/CXF-6740?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Akitoshi Yoshida reopened CXF-6740: ----------------------------------- Hi Andriy, Sergey, I think we need another solution. The one done in swagger-jaxrs doesn't cover our use case, where we need to manage multiple configurations over a single servlet component. I think we need another approach and I think we could get a much simpler patch by inserting both swagger and beanconfig/scanner instances to the thread-localized server context using a jaxrs's RequewtFilter and tell Swagger's ApiListingResource to get them from the context. In this way, we can insert a configuration specific swagger/scanner during the call and pass them to the swagger's resource. If we don't/can't use the thread-localized context to pass the configuration specific objects to Swagger's ApiRequestResource, we need to assign a unique path and pass an extra switch property so that Swagger's ApiRequestResource can use the specific path key (e.g. swagger-<path> or scanner-<path>) to do the lookup instead of using just swagger or scanner). How do you think? regards, aki > Collision by Swagger2Feature in two OSGI bundles > ------------------------------------------------- > > Key: CXF-6740 > URL: https://issues.apache.org/jira/browse/CXF-6740 > Project: CXF > Issue Type: Bug > Components: OSGi > Affects Versions: 3.1.4 > Environment: Apache Karaf 4.0.2 > Reporter: Andre Schlegel > Assignee: Andriy Redko > > 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 > {code} > <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> > {code} > Monitor Bundle > {code} > <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> > {code} > 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? -- This message was sent by Atlassian JIRA (v6.3.4#6332)