Hello Tanuja, Yes, you could use WADL [1], if you would like to auto-generate WADL, please check [2]. Thank you. [1] https://cxf.apache.org/docs/jaxrs-services-description.html#JAXRSServicesDescription-WADL [2] https://cxf.apache.org/docs/jaxrs-services-description.html#JAXRSServicesDescription-WADLAutoGenerationatRuntime Best Regards, Andriy Redko
> Thank you for your response, Andriy. > This is an existing application and I am bound by certain limitations which > include not being able to upgrade to any newer version. > This is a POC that I am trying to develop on my own and not a requirement > from the higher ups. Yet, giving my best shot. > How about generating WADL? Postman tool can still import WADL files and this > solves at least half the purpose. > And there are WADL to Swagger conversion tools as well. This would be my next > step in the process provided a WADL file can be generated with Apache CXF > 2.4.6 > There are @Descriptions and @Description annotations available and I have > annotated one of the existing REST classes and methods appropriately. But, > how is the WADL file generated? Do I have to follow any steps to create one? > If yes, pls mention those. > I am referring to the following links. > https://cxf.apache.org/docs/jaxrs-services-description.html#JAXRSServicesDescription-WADL > https://cxf.apache.org/docs/jaxrs-services-description.html#JAXRSServicesDescription-DocumentingresourceclassesandmethodsingeneratedWADL > On Mon, Oct 24, 2022 at 6:25 AM Andriy Redko <drr...@gmail.com> wrote: >> Hello Tanuja, >> The SwaggerFeature was introduced in Apache CXF 3.0 [1], but as far as I >> understand, you are trying to use Apache CXF 2.4.6 and pulling the >> cxf-rt-rs-service-description-3.0.0.jar with it. If that is the case, >> it is not going to work out. The recommendation would be to update to >> one of the supported Apache CXF releases [2]. >> Thank you. >> [1] https://issues.apache.org/jira/browse/CXF-5379 >> [2] https://cxf.apache.org/download.html >> Best Regards, >> Andriy Redko TS>>> Hello everyone, TS>>> My project uses cxf-2.4.6 version. There is no REST API documentation as of TS>>> date. TS>>> I plan to create one and have been exploring various options for this TS>>> version. TS>>> Official documentation mentions that SwaggerFeature needs to be used for TS>>> this version. TS>>> https://cwiki.apache.org/confluence/display/CXF20DOC/Swagger2Feature TS>>> As per the above link, TS>>> *For generating Swagger 1.2 TS>>> <https://github.com/swagger-api/swagger-spec/blob/master/versions/1.2.md> TS>>> documents, TS>>> you can use SwaggerFeature instead of Swagger2Feature (for CXF versions <= TS>>> 3.1.x).* TS>>> But, I am lost here. TS>>> Added all the needed jars. Ant is used as a build tool; hence, individual TS>>> jars are added manually. TS>>> scala-library-2.7.7.jar TS>>> swagger-jaxrs_2.10-1.3.13.jar TS>>> swagger-ui-2.1.2.jar TS>>> swagger-annotations-1.5.2.jar TS>>> swagger-jaxrs-1.5.2.jar TS>>> cxf-rt-rs-service-description-3.0.0.jar TS>>> I've added this bean in the cxfbeans.xml. TS>>> <!-- CXF SwaggerFeature --> TS>>> <bean id="swaggerFeature" TS>>> class="org.apache.cxf.jaxrs.swagger.SwaggerFeature"> TS>>> <!-- customize some of the properties --> TS>>> <property name="basePath" value=""/> TS>>> </bean> TS>>> <bean class="com.test" id="testClass"/> TS>>> <jaxrs:server address="/testService" id="testServiceId"> TS>>> <jaxrs:serviceBeans> TS>>> <ref bean="testClass"/> TS>>> </jaxrs:serviceBeans> TS>>> <jaxrs:extensionMappings> TS>>> <entry key="xml" value="application/xml"/> TS>>> <entry key="json" value="application/json"/> TS>>> </jaxrs:extensionMappings> TS>>> <jaxrs:features> TS>>> <ref bean="swaggerFeature" /> TS>>> </jaxrs:features> TS>>> </jaxrs:server> TS>>> Now, server doesn't start and I get this exception. TS>>> org.springframework.beans.factory.BeanCreationException: Error creating TS>>> bean with name ' testServiceId': Invocation of init method failed; nested TS>>> exception is org.apache.cxf.service.factory.ServiceConstructionException TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) TS>>> at java.security.AccessController.doPrivileged(Native Method) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) TS>>> at TS>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) TS>>> at TS>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) TS>>> at TS>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) TS>>> at TS>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) TS>>> at TS>>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) TS>>> at TS>>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) TS>>> at TS>>> org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) TS>>> at TS>>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727) TS>>> at TS>>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) TS>>> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) TS>>> at TS>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403) TS>>> at TS>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) TS>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) TS>>> at TS>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) TS>>> at TS>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) TS>>> at java.lang.Thread.run(Thread.java:745) TS>>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException TS>>> at TS>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:192) TS>>> at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) TS>>> at TS>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) TS>>> at java.lang.reflect.Method.invoke(Method.java:498) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375) TS>>> at TS>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) TS>>> ... 24 more TS>>> Caused by: java.lang.NullPointerException TS>>> at TS>>> org.apache.cxf.jaxrs.swagger.SwaggerFeature.calulateDefaultResourcePackage(SwaggerFeature.java:69) TS>>> at TS>>> org.apache.cxf.jaxrs.swagger.SwaggerFeature.initialize(SwaggerFeature.java:46) TS>>> at TS>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.applyFeatures(JAXRSServerFactoryBean.java:203) TS>>> at TS>>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:180) TS>>> ... 30 more TS>>> Regards, TS>>> Sandy