With Karaf 4, we can construct feature much better.
Currently, camel-cxf feature explicitly depends on cxf-http-jetty feature and this makes using the component with Undertow problematic.
Here's how it's done in CXF 3.2:
<feature name="cxf-http-provider" version="${project.version}"> |
<feature dependency="true" version="${project.version}">cxf-http-jetty</feature> |
<requirement> |
cxf.http.provider
|
</requirement> |
</feature> |
<feature name="cxf-http-jetty" version="${project.version}"> |
<feature version="${project.version}">cxf-http</feature> |
<feature version="[7,10)">jetty</feature> |
<bundle start-level="40">mvn:org.apache.cxf/cxf-rt-transports-http-jetty/${project.version}</bundle> |
<capability> |
cxf.http.provider;name=jetty
|
</capability> |
</feature> |
and you have additional:
<feature name="cxf-http-undertow" version="${project.version}"> |
<feature version="${project.version}">cxf-http</feature> |
<feature>pax-http-undertow</feature> |
<bundle start-level="40">mvn:org.apache.cxf/cxf-rt-transports-http-undertow/${project.version}</bundle> |
<capability> |
cxf.http.provider;name=undertow
|
</capability> |
</feature> |
So camel-cxf feature should look like this:
<feature name='camel-cxf' version='${project.version}' resolver='(obr)' start-level='50'> |
<feature version='${project.version}'>camel-blueprint</feature> |
<feature version='${project.version}'>camel-spring</feature> |
<feature version='${cxf-version-range}'>cxf-core</feature> |
<feature version='${cxf-version-range}'>cxf-jaxrs</feature> |
<feature version='${cxf-version-range}'>cxf-jaxws</feature> |
<feature version='${cxf-version-range}'>cxf-http-provider</feature> |
<feature version='${cxf-version-range}'>cxf-databinding-jaxb</feature> |
<feature version='${cxf-version-range}'>cxf-bindings-soap</feature> |
<bundle>mvn:org.apache.camel/camel-http-common/${project.version}</bundle> |
<bundle>mvn:org.apache.camel/camel-cxf-transport/${project.version}</bundle> |
<bundle>mvn:org.apache.camel/camel-cxf/${project.version}</bundle> |
</feature> |
so cxf-http-jetty dependency → cxf-http-provider dependency.
The problem is that CXF 3.1.x doesn't have that... So we have to ensure CXF features provide this in our branches.