Hello,
I recently upgraded from CXF 3.3.2 to 3.4.0 and my rest endpoints stopped to
work. I get this error (I’m using Karaf 4.2.11 + Java 8) during pax exam test
boot up:
org.osgi.service.http.HttpService not found by
org.apache.cxf.cxf-rt-transports-http
Caused by: java.lang.ClassNotFoundException: org.osgi.service.http.HttpService
not found by org.apache.cxf.cxf-rt-transports-http [167]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
~[?:?]
at
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
~[?:?]
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
~[?:1.8.0_161]
at
org.apache.cxf.transport.http.osgi.HTTPTransportActivator.start(HTTPTransportActivator.java:62)
~[?:?]
I checked the exports and the imports and everything seem fine:
karaf@root()> exports -p org.osgi.service.http
Package Name │ Version │ ID │ Bundle Name
──────────────────────────────────┼─────────┼─────┼──────────────────────────────
org.osgi.service.http.context │ 1.0.0 │ 293 │
org.ops4j.pax.web.pax-web-api
org.osgi.service.http.runtime.dto │ 1.0.0 │ 293 │
org.ops4j.pax.web.pax-web-api
org.osgi.service.http.runtime │ 1.0.0 │ 293 │
org.ops4j.pax.web.pax-web-api
org.osgi.service.http │ 1.2.1 │ 293 │
org.ops4j.pax.web.pax-web-api
karaf@root()> imports -p org.osgi.service.http
Package │ Version │ Optional │ ID │ Bundle Name
──────────────────────────────────┼───────────────┼──────────┼─────┼──────────────────────────────────────
org.osgi.service.http.context │ [1.0.0,2.0.0) │ │ 92 │
flairkit.sc.servlet
org.osgi.service.http.runtime.dto │ [1.0.0,2.0.0) │ │ 295 │
org.ops4j.pax.web.pax-web-runtime
org.osgi.service.http │ [1.0.0,2.0.0) │ │ 294 │
org.ops4j.pax.web.pax-web-jetty
org.osgi.service.http │ [1.0.0,2.0.0) │ │ 295 │
org.ops4j.pax.web.pax-web-runtime
org.osgi.service.http │ [1.0.0,2.0.0) │ │ 296 │
org.ops4j.pax.web.pax-web-spi
org.osgi.service.http │ [1.2.0,2.0.0) │ resolved │ 168 │
org.apache.cxf.cxf-rt-transports-http
org.osgi.service.http │ [1.2.0,2.0.0) │ │ 185 │
org.apache.karaf.http.core
And the HttpService seems up and running:
karaf@root()> service:list org.osgi.service.http.HttpService
[org.osgi.service.http.HttpService, org.ops4j.pax.web.service.WebContainer]
---------------------------------------------------------------------------
felix.fileinstall.filename =
file.../5e9d5084-f193-4b33-b40f-71b482697646/etc/org.ops4j.pax.web.cfg
javax.servlet.context.tempdir =
/private/var/folders/dy/xdtn67n929lcfg5kbcwxly6r0000gn/T/.paxweb5610941496959273162
...
service.bundleid = 295
service.id = 191
service.pid = org.ops4j.pax.web
service.scope = bundle
Provided by :
OPS4J Pax Web - Runtime (295)
Used by:
Apache Karaf :: HTTP :: Core (185)
I have the impression that the problem could be related to the optional import
of the org.osgi.service.http package within the cxf-rt-transports-http manifest
but I’m not sure if this is the way to go trying to solve this.
Could you please provide help?
Thank you,
Matteo