I just tried this:
feature:repo-add activemq 5.13.0
feature:repo-add camel 2.16.1
feature:install transaction activemq-camel

After this I have two bundles offering jta:
74 | Active | 10 | 1.1.1 | org.apache.geronimo.specs.geronimo-jta_1.1_spec
 55 | Active   |  80 | 1.2                   | javax.transaction-api

exports | grep javax.transaction
javax.transaction.xa | 0.0.0 | 0 | org.eclipse.osgi javax.transaction.xa | 1.1.0 | 74 | org.apache.geronimo.specs.geronimo-jta_1.1_spec javax.transaction.xa | 1.2.0 | 55 | javax.transaction-api javax.transaction | 0.0.0 | 0 | org.eclipse.osgi javax.transaction | 1.1.0 | 74 | org.apache.geronimo.specs.geronimo-jta_1.1_spec javax.transaction | 1.2.0 | 55 | javax.transaction-api

I do not get an error using diag but the presence of several jta APIs alone will create problems for as it is not sure which bundle binds to which API.


This is strange as in the camel feature the dependency=true flag is set for the jta bundle. So I would expect it to be not installed.
So not sure but it may indeed be a bug.

Christian


On 16.12.2015 17:02, Ed Welch wrote:
I *think* I may have found a bug, and I think it's with karaf based on this 
behavior I'm seeing:

If I install the transaction and activemq-camel features one at a time manually 
from console: No Problem

vs

If I install them as dependent features of another feature: Problem


Background:

Running Karaf 4.0.3, activemq 5.13.0 and camel 2.16.1 on Linux (Ubuntu)

I can install the karaf transaction and activemq-camel features manually at 
command line and everything seems fine, output of bundle:diag is empty

However.... if I have a simple feature like:

<?xml version="1.0" encoding="UTF-8"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"; 
name="test-feature-1.0">
     <feature description="test" version="1.0" name="test-feature">
         <feature>transaction</feature>
         <feature>activemq-camel</feature>
     </feature>
</features>


When i install that feature, bundle-diag will output:
karaf@root()> bundle:diag
Apache Aries Transaction Blueprint (98)
---------------------------------------
Status: GracePeriod
Blueprint
12/16/15 10:46 AM
Missing dependencies:
(objectClass=javax.transaction.TransactionManager)


Apache Aries Transaction Blueprint (99)
---------------------------------------
Status: GracePeriod
Blueprint
12/16/15 10:46 AM
Missing dependencies:
(objectClass=javax.transaction.TransactionManager)



It looks like what's happening is activemq-camel installs dependent feature 
camel-jms, which looks like:

<feature name='camel-jms' version='${project.version}' resolver='(obr)' 
start-level='50'>
     <feature version='${spring-version-range-karaf}'>spring</feature>
     <bundle 
dependency='true'>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta-spec-version}</bundle>
     <bundle 
dependency='true'>mvn:commons-pool/commons-pool/${commons-pool-version}</bundle>
     <bundle 
dependency='true'>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo-jms-spec-version}</bundle>
     <feature version='${spring-version-range-karaf}'>spring-jms</feature>
     <feature version='${project.version}'>camel-core</feature>
     <bundle>mvn:org.apache.camel/camel-jms/${project.version}</bundle>
   </feature>

i think it's the inclusion of this bundle which is causing some issue
<bundle 
dependency='true'>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo-jta-spec-version}</bundle>

when the feature finishes loading, I see a whole bunch of wiring to this 
geronimo jta package,

which is something I did not see when the features are installed separately.

Not sure, but this maybe related to javax.transaction being in the boot 
delegation section?  (I don't totally understand what boot delegation does)

Did I find a bug in the karaf feature resolver?

Thanks,
Ed


--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

Reply via email to