Hello everyone, My project uses cxf-2.4.6 version. There is no REST API documentation as of date. I plan to create one and have been exploring various options for this version.
Official documentation mentions that SwaggerFeature needs to be used for this version. https://cwiki.apache.org/confluence/display/CXF20DOC/Swagger2Feature As per the above link, *For generating Swagger 1.2 <https://github.com/swagger-api/swagger-spec/blob/master/versions/1.2.md> documents, you can use SwaggerFeature instead of Swagger2Feature (for CXF versions <= 3.1.x).* But, I am lost here. Added all the needed jars. Ant is used as a build tool; hence, individual jars are added manually. scala-library-2.7.7.jar swagger-jaxrs_2.10-1.3.13.jar swagger-ui-2.1.2.jar swagger-annotations-1.5.2.jar swagger-jaxrs-1.5.2.jar cxf-rt-rs-service-description-3.0.0.jar I've added this bean in the cxfbeans.xml. <!-- CXF SwaggerFeature --> <bean id="swaggerFeature" class="org.apache.cxf.jaxrs.swagger.SwaggerFeature"> <!-- customize some of the properties --> <property name="basePath" value=""/> </bean> <bean class="com.test" id="testClass"/> <jaxrs:server address="/testService" id="testServiceId"> <jaxrs:serviceBeans> <ref bean="testClass"/> </jaxrs:serviceBeans> <jaxrs:extensionMappings> <entry key="xml" value="application/xml"/> <entry key="json" value="application/json"/> </jaxrs:extensionMappings> <jaxrs:features> <ref bean="swaggerFeature" /> </jaxrs:features> </jaxrs:server> Now, server doesn't start and I get this exception. org.springframework.beans.factory.BeanCreationException: Error creating bean with name ' testServiceId': Invocation of init method failed; nested exception is org.apache.cxf.service.factory.ServiceConstructionException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:192) at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) ... 24 more Caused by: java.lang.NullPointerException at org.apache.cxf.jaxrs.swagger.SwaggerFeature.calulateDefaultResourcePackage(SwaggerFeature.java:69) at org.apache.cxf.jaxrs.swagger.SwaggerFeature.initialize(SwaggerFeature.java:46) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.applyFeatures(JAXRSServerFactoryBean.java:203) at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:180) ... 30 more Regards, Sandy