Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-5442

Swagger2Feature throws an exception

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • jboss-fuse-6.3
    • jboss-fuse-6.3
    • CXF
    • None
    • % %
    • 7.0 Sprint 1, Sprint 5 - towards ER2

    Description

      When I am using Swagger2Feature with CXF I get an exception

      2016-05-05 10:44:52,345 | ERROR | ion(4)-127.0.0.1 | BlueprintContainerImpl           | 23 - org.apache.aries.blueprint.core - 1.4.4 | Unable to start blueprint container for bundle org.jboss.qe.cxf.rs.swagger2feature-test/1.0.0.SNAPSHOT
      org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to initialize bean contactService
      	at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:714)
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:824)
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
      	at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_74]
      	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
      	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:247)
      	at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:682)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:377)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
      	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)
      	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)
      	at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
      	at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)
      	at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)
      	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)
      	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)
      	at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)
      	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:976)
      	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:963)
      	at org.apache.aries.jmx.framework.Framework.startBundle(Framework.java:459)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
      	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_74]
      	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
      	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_74]
      	at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)[:1.8.0_74]
      	at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)[:1.8.0_74]
      	at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)[:1.8.0_74]
      	at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)[:1.8.0_74]
      	at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)[:1.8.0_74]
      	at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)[:1.8.0_74]
      	at javax.management.StandardMBean.invoke(StandardMBean.java:405)[:1.8.0_74]
      	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)[:1.8.0_74]
      	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
      	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_74]
      	at org.apache.karaf.management.internal.MBeanInvocationHandler.invoke(MBeanInvocationHandler.java:60)[46:org.apache.karaf.management.server:2.4.0.redhat-630045]
      	at com.sun.proxy.$Proxy2.invoke(Unknown Source)[:]
      	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
      	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
      	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
      	at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_74]
      	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)
      	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
      	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_74]
      	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)[:1.8.0_74]
      	at sun.rmi.transport.Transport$1.run(Transport.java:200)[:1.8.0_74]
      	at sun.rmi.transport.Transport$1.run(Transport.java:197)[:1.8.0_74]
      	at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_74]
      	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)[:1.8.0_74]
      	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)[:1.8.0_74]
      	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)[:1.8.0_74]
      	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)[:1.8.0_74]
      	at java.security.AccessController.doPrivileged(Native Method)[:1.8.0_74]
      	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)[:1.8.0_74]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_74]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_74]
      	at java.lang.Thread.run(Thread.java:745)[:1.8.0_74]
      Caused by: java.lang.NoClassDefFoundError: io/swagger/jaxrs/listing/ApiListingResource
      	at org.apache.cxf.jaxrs.swagger.Swagger2Feature.addSwaggerResource(Swagger2Feature.java:79)
      	at org.apache.cxf.jaxrs.swagger.AbstractSwaggerFeature.initialize(AbstractSwaggerFeature.java:64)
      	at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.applyFeatures(JAXRSServerFactoryBean.java:252)
      	at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:196)
      	at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.init(JAXRSServerFactoryBean.java:142)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_74]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_74]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_74]
      	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_74]
      	at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)
      	at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:956)
      	at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:712)
      	... 73 more
      Caused by: java.lang.ClassNotFoundException: io.swagger.jaxrs.listing.ApiListingResource not found by org.apache.cxf.cxf-rt-rs-service-description [124]
      	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
      	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
      	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_74]
      	... 85 more
      

      My jaxrs server configuration:

      	<!-- CXF Swagger2Feature -->
      	<bean id="swagger2Feature" class="org.apache.cxf.jaxrs.swagger.Swagger2Feature">
      		<property name="basePath" value="/app/swaggerSample"/>
      	</bean>
      
      	<jaxrs:server id="contactService" address="/rest">
      		<jaxrs:serviceBeans>
      			<bean class="org.jboss.qe.cxf.rs.swagger.basic.ContactServiceImpl"/>
      		</jaxrs:serviceBeans>
      		<jaxrs:features>
      			<ref bean="swagger2Feature" />
      		</jaxrs:features>
      	</jaxrs:server>
      

      It seems that Apache CXF JAX-RS Service Description bundle is already installed (system bundle) and newly installed bundles (from feature cxf-rs-description-swagger2) which contains swagger are not available for Apache CXF JAX-RS Service Description which is already resolved. So I update bundle Apache CXF JAX-RS Service Description after instalation feature cxf-rs-description-swagger2. This problem is solved but there is another problem now. I get

      java.net.MalformedURLException: no protocol: BasicTest.jar
      	at java.net.URL.<init>(URL.java:593)
      	at java.net.URL.<init>(URL.java:490)
      	at java.net.URL.<init>(URL.java:439)
      	at org.reflections.vfs.Vfs$DefaultUrlTypes$4.createDir(Vfs.java:324)
      	at org.reflections.vfs.Vfs.fromURL(Vfs.java:108)
      	at org.reflections.vfs.Vfs.fromURL(Vfs.java:100)
      	at org.reflections.Reflections.scan(Reflections.java:237)
      	at org.reflections.Reflections.scan(Reflections.java:204)
      	at org.reflections.Reflections.<init>(Reflections.java:129)
      	at io.swagger.jaxrs.config.BeanConfig.classes(BeanConfig.java:206)
      	at io.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:170)
      	at org.apache.cxf.jaxrs.swagger.Swagger2Feature.addSwaggerResource(Swagger2Feature.java:112)
      	at org.apache.cxf.jaxrs.swagger.AbstractSwaggerFeature.initialize(AbstractSwaggerFeature.java:64)
      	at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.applyFeatures(JAXRSServerFactoryBean.java:252)
      	at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:196)
      	at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.init(JAXRSServerFactoryBean.java:142)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)
      	at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:956)
      	at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:712)
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:824)
      	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
      	at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
      	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:247)
      	at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:682)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:377)
      	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
      	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)
      	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)
      	at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)
      	at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)
      	at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)
      	at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)
      	at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)
      	at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)
      	at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)
      	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:976)
      	at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:963)
      	at org.apache.aries.jmx.framework.Framework.startBundle(Framework.java:459)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
      	at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)
      	at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
      	at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
      	at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
      	at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
      	at javax.management.StandardMBean.invoke(StandardMBean.java:405)
      	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
      	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.apache.karaf.management.internal.MBeanInvocationHandler.invoke(MBeanInvocationHandler.java:60)
      	at com.sun.proxy.$Proxy2.invoke(Unknown Source)
      	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
      	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
      	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)
      	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
      	at sun.rmi.transport.Transport$1.run(Transport.java:200)
      	at sun.rmi.transport.Transport$1.run(Transport.java:197)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
      	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
      	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
      	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
      	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)
      

      I am not able to find where is the problem. The swagger endpoint works incorrectly.

      Attachments

        Activity

          People

            yfang@redhat.com Freeman(Yue) Fang
            jbouska@redhat.com Jan Bouska
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: