cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andriy Redko (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-6740) Collision by Swagger2Feature in two OSGI bundles
Date Mon, 22 Aug 2016 12:15:20 GMT

    [ https://issues.apache.org/jira/browse/CXF-6740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15430636#comment-15430636
] 

Andriy Redko commented on CXF-6740:
-----------------------------------

Hey [~sergey_beryozkin], [~splatch]

Right, those two approaches are very similar. The 'basePath'-based one does implicit Swagger
IDs manipulation (scanner / config / ...) by making base path a part of identifier (it triggers
when {code:java}usePathBasedConfig{code} is set). So I think in this regards, we could make
this property *true* by default and cover quite a large number of collisions (there is no
need to set Swagger IDs). However, if I understand [~splatch] correctly, Swagger caching mechanism
causing the issues when endpoints are loaded / unloaded dynamically (like in OSGi), in this
case Swagger still exposes the API specs even if there are no running endpoints, the fix for
this ticket does not address the issue yet but [~splatch] has a PR. 

Regarding your question, [~sergey_beryozkin], for Spring-based configuration with one CXF
servlet we would need to have two JAXRSFactoryBean instances. In this case the *basePath*
will be taken from there.
Thanks.

Best Regards,
    Andriy Redko



> 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
>             Fix For: 3.2.0, 3.1.8
>
>         Attachments: 0001-temporary-work-for-cxf-6740-take-2.patch, 0001-temporary-work-for-cxf-6740.patch,
CXF-6740-Collision-by-Swagger.patch
>
>
> 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)

Mime
View raw message