Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Cannot Reproduce
-
None
-
None
-
None
-
Unknown
Description
There are two CXF server endpoints defined as shown below:
@Bean public Server contentServiceV1() { JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean(); factory.setBus(cxf()); factory.setServiceBeans(Arrays.<Object> asList(sampleABeanV1(), sampleBBeanV1())); factory.setAddress(Constants.CONTENT_REST_DOMAIN_VERSION); factory.setDocLocation("classpath:restapi/content/v1/content.wadl"); factory.setProviders(createProvidersList()); Swagger2Feature feature = new Swagger2Feature() ; feature.setTitle("Content API(s)"); feature.setDescription("Sample API(s)"); feature.setBasePath(Constants.CONTENT_REST_DOMAIN_VERSION); feature.setPrettyPrint(true); feature.setSupportSwaggerUi(true); feature.setContact("@Contact(\n" + " name = \"RST team\",\n" + " email = \"sample@example.com\"\n" + " )"); feature.setVersion("1.0.0"); feature.setLicense("www.sample.com/license"); feature.setUsePathBasedConfig(false); factory.getFeatures().add(feature) ; Server server = factory.create(); server.getEndpoint().getInInterceptors().add(requestInterceptor()) ; return server; } @Bean public Server commercialServiceV1() { JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean(); factory.setBus(cxf()); factory.setServiceBeans(Arrays.<Object> asList(sampleCBeanV1(), sampleDBeanv1())); factory.setAddress(Constants.COMMERCIAL_REST_DOMAIN_VERSION); factory.setDocLocation("classpath:restapi/commercial/v1/commercial.wadl"); factory.setProviders(createProvidersList()); Swagger2Feature feature = new Swagger2Feature() ; feature.setTitle("Commercial API(s)"); feature.setDescription("Commercial API(s)"); feature.setBasePath(Constants.COMMERCIAL_REST_DOMAIN_VERSION); feature.setPrettyPrint(true); feature.setSupportSwaggerUi(true); feature.setUsePathBasedConfig(false); factory.getFeatures().add(feature) ; Server server = factory.create(); server.getEndpoint().getInInterceptors().add(requestInterceptor()) ; return server; }
The Swagger2Feature is enabled on both server endpoints. But In the Swagger UI, only the "Content" APIs show up. Commercial APIs do not show up in the UI.
We have also tried Package Scan Approach as below:
@Bean public Server contentAServiceV1() { JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean(); factory.setBus(cxf()); factory.setServiceBeans(Arrays.<Object> asList(sampleABeanV1(), sampleBBeanV1())); factory.setAddress(Constants.CONTENT_REST_DOMAIN_VERSION); factory.setDocLocation("classpath:restapi/content/v1/content.wadl"); factory.setProviders(createProvidersList()); Swagger2Feature feature = new Swagger2Feature() ; feature.setTitle("Content API(s)"); feature.setDescription("Sample API(s)"); feature.setBasePath(Constants.CONTENT_REST_DOMAIN_VERSION); feature.setPrettyPrint(true); feature.setSupportSwaggerUi(true); feature.setContact("@Contact(\n" + " name = \"RST team\",\n" + " email = \"sample@example.com\"\n" + " )"); feature.setVersion("1.0.0"); feature.setLicense("www.sample.com/license"); feature.setUsePathBasedConfig(false); feature.setActivateOnlyIfJaxrsSupported(true); feature.setScanAllResources(true); feature.setResourcePackage("com.sample.rest.content.v1"); factory.getFeatures().add(feature) ; Server server = factory.create(); server.getEndpoint().getInInterceptors().add(requestInterceptor()) ; return server; } @Bean public Server contentBServiceV1() { JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean(); factory.setBus(cxf()); factory.setServiceBeans(Arrays.<Object> asList(sampleCBeanV1(), sampleDBeanv1())); factory.setAddress(Constants.COMMERCIAL_REST_DOMAIN_VERSION); factory.setDocLocation("classpath:restapi/commercial/v1/commercial.wadl"); factory.setProviders(createProvidersList()); Swagger2Feature feature = new Swagger2Feature() ; feature.setTitle("Commercial API(s)"); feature.setDescription("Commercial API(s)"); feature.setBasePath(Constants.COMMERCIAL_REST_DOMAIN_VERSION); feature.setPrettyPrint(true); feature.setSupportSwaggerUi(true); feature.setUsePathBasedConfig(false); feature.setActivateOnlyIfJaxrsSupported(true); feature.setScanAllResources(true); feature.setResourcePackage("com.sample.rest.commercial.v1"); factory.getFeatures().add(feature) ; Server server = factory.create(); server.getEndpoint().getInInterceptors().add(requestInterceptor()) ; return server; }
But SwaggerUI shows up only Content APIs and not the Commercial ones.