Awesome !

In the mean time, I try to reproduce on my side.

Thanks !

Regards
JB

On 01/31/2017 10:48 AM, Charlie Mordant wrote:
Hi J.B.,

Sure, it's always reproducible, I'll send it tonight (or tomorrow if I
haven't the time to do it).
I'm not in front of my computer for now, but will do my best as reactive
as possible.

Best Regards,

2017-01-31 10:41 GMT+01:00 Jean-Baptiste Onofré <[email protected]
<mailto:[email protected]>>:

    Hi Charlie,

    do you have the feature:install -v output ? It would help us to see
    the cause of the refresh (optional import, or other).

    Thanks !

    Regards
    JB


    On 01/31/2017 10:39 AM, Charlie Mordant wrote:

        Hi users of the world's best application server ever ;-),

        I'm struggling with feature resolution, and would like to have
        your POV.

        This issue is concerning, the JDBC, the Blueprint and the
        transactional
        feature.

        Here's the issue with feature resolution in my pax-exam test:


        * The jdbc-pool-aries feature starts first (+ the config one and
        the cfg
        \o/).
        * Then the transactional feature
        * The third feature thats start is the aries jndi one, so the two
        datasources (the XA and non-XA ones) are exposed (\o/\o/).
        * But the third that starts is the blueprint one, which starts the
        xbean-blueprint bundle.
        That blueprint bundle restarts the 'optional' resolutions of aries
        transaction manager, which then restarts aries-jdbc modules
        (optional
        res again) & config, which stops the datasource and starts
        another one.
        ​Unfortunately, at this point, my 'daos' bundle is already
        linked with a
        proxy to the 'old' datasource​.

        A way to fix it is to reference the 'transaction' feature in the
        'pool-aries' one, and the 'blueprint' one in the 'transaction'
        one, but
        it would then break some modularity.

        Have you got an idea on how to properly handle it?

        The actual xml of my features, they're slightly similar to the karaf
        ones, with bundle versions aligned:
        [code]

             <feature name="osgiliath-pax-jdbc-pool-aries"
        description="Provides JDBC Pooling DataSourceFactory using Aries
        Transaction JDBC"
        version="${org.ops4j.pax.jdbc_pax-jdbc-features.version}"
        resolver="(obr)">
                <feature>osgiliath-pax-jdbc-spec</feature>

        
<bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/${org.ops4j.pax.jdbc_pax-jdbc-pool-common.version}</bundle>

        
<bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-aries/${org.ops4j.pax.jdbc_pax-jdbc-pool-aries.version}</bundle>
                <conditional>
                    <condition>osgiliath-aries-blueprint</condition>
                    <bundle
        
dependency="true">mvn:org.apache.xbean/xbean-blueprint/${org.apache.xbean_xbean-blueprint.version}</bundle>
                </conditional>
                <conditional>
                    <condition>osgiliath-transaction</condition>
                    <bundle
        
dependency="true">mvn:org.apache.aries.transaction/org.apache.aries.transaction.jdbc/${org.apache.aries.transaction_org.apache.aries.transaction.jdbc.version}</bundle>
                </conditional>
            </feature>


            <feature name="osgiliath-transaction" description="OSGi
        Transaction Manager" version="${org.apache.aries.tr
        
<http://org.apache.aries.tr>ansaction_org.apache.aries.transaction.manager.version}">
                <config name="org.apache.aries.transaction" append="false">
                    aries.transaction.recoverable = true
                    aries.transaction.timeout = 600
                    aries.transaction.howl.logFileDir = ${karaf.data}/txlog
                    aries.transaction.howl.maxLogFiles = 2
                    aries.transaction.howl.maxBlocksPerFile = 512
                    aries.transaction.howl.bufferSize = 4
                </config>
                <feature version="${transaction-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-transaction-api</feature>
                <bundle
        
dependency="true">mvn:org.apache.aries/org.apache.aries.util/${org.apache.aries_org.apache.aries.util.version}</bundle>

        <bundle>mvn:org.apache.aries.transaction/org.apache.aries.tr
        
<http://org.apache.aries.tr>ansaction.manager/${org.apache.aries.transaction_org.apache.aries.transaction.manager.version}</bundle>
                <conditional>
                    <condition>osgiliath-aries-blueprint</condition>
                    <bundle
        
dependency="true">mvn:org.apache.felix/org.apache.felix.coordinator/${org.apache.felix_org.apache.felix.coordinator.version}</bundle>

        <bundle>mvn:org.apache.aries.transaction/org.apache.aries.tr
        
<http://org.apache.aries.tr>ansaction.blueprint/${org.apache.aries.transaction_org.apache.aries.transaction.blueprint.version1}</bundle>

        <bundle>mvn:org.apache.aries.transaction/org.apache.aries.tr
        
<http://org.apache.aries.tr>ansaction.blueprint/${org.apache.aries.transaction_org.apache.aries.transaction.blueprint.version}</bundle>
                    <bundle
        
dependency="true">mvn:org.apache.xbean/xbean-blueprint/${org.apache.xbean_xbean-blueprint.version}</bundle>
                </conditional>
                <conditional>
                    <condition>osgiliath-spring</condition>
                    <feature
        version="${org.apache.servicemix.bundles.spring.version}"
        dependency="true">osgiliath-spring-tx</feature>
                </conditional>
            </feature>

        *********************************************************
        Additional informations ******************************************


        <feature name="osgiliath-transaction-api"
        version="${transaction-api_feature.version}">
                <bundle dependency="true">mvn:javax.in
        
<http://javax.in>terceptor/javax.interceptor-api/${javax.interceptor_javax.in
        <http://javax.interceptor_javax.in>terceptor-api.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.geronimo.specs/geronimo-atinject_1.0_spec/${org.apache.geronimo.specs_geronimo-atinject_1.0_spec.version}</bundle>
                <bundle
        
dependency="true">mvn:javax.el/javax.el-api/${javax.el_javax.el-api.version}</bundle>
                <bundle
        
dependency="true">mvn:javax.enterprise/cdi-api/${javax.enterprise_cdi-api.version}</bundle>

        
<bundle>mvn:javax.transaction/javax.transaction-api/${javax.transaction_javax.transaction-api.version}</bundle>
            </feature>
         <feature name="osgiliath-persistence-api"
        description="Persistence API"
        version="${persistence-api_feature.version}">

        
<bundle>mvn:org.apache.geronimo.specs/geronimo-jpa_2.0_spec/${org.apache.geronimo.specs_geronimo-jpa_2.0_spec.version}</bundle>

        
<bundle>mvn:org.apache.geronimo.specs/geronimo-osgi-registry/${org.apache.geronimo.specs_geronimo-osgi-registry.version}</bundle>
            </feature>
         <feature name="osgiliath-jpa" description="OSGi Persistence
        Container" version="${org.apache.aries.jp
        <http://org.apache.aries.jp>a.version}">
                <feature version="${transaction-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-transaction-api</feature>
                <feature version="${persistence-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-persistence-api</feature>
                <bundle
        
dependency="true">mvn:org.apache.felix/org.apache.felix.coordinator/${org.apache.felix_org.apache.felix.coordinator.version}</bundle>
                <bundle
        
dependency="true">mvn:org.osgi/org.osgi.service.jdbc/${org.osgi_org.osgi.service.jdbc.version}</bundle>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/${org.apache.aries.jpa_org.apache.aries.jpa.api.version}</bundle>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/${org.apache.aries.jpa_org.apache.aries.jpa.container.version}</bundle>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/${org.apache.aries.jpa_org.apache.aries.jpa.support.version}</bundle>
                <conditional>
                    <condition>osgiliath-aries-blueprint</condition>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint/${org.apache.aries.jpa_org.apache.aries.jpa.blueprint.version}</bundle>
                </conditional>
            </feature>

             <feature name="osgiliath-openjpa" description="Apache
        OpenJPA 2.4.x persistence engine support"
        version="${org.apache.openjpa.version}">
                <feature prerequisite="false"
        dependency="false">osgiliath-jndi</feature>
                <feature version="${transaction-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-transaction-api</feature>
                <feature version="${persistence-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-persistence-api</feature>
                <bundle dependency="true">mvn:javax.se
        
<http://javax.se>rvlet/javax.servlet-api/${javax.servlet_javax.servlet-api.version}</bundle>
                <bundle
        
dependency="true">mvn:javax.el/javax.el-api/${javax.el_javax.el-api.version}</bundle>
                <bundle
        
dependency="true">mvn:commons-lang/commons-lang/${commons-lang_commons-lang.version}</bundle>
                <bundle
        
dependency="true">mvn:commons-collections/commons-collections/${commons-collections_commons-collections.version}</bundle>
                <bundle
        
dependency="true">mvn:commons-pool/commons-pool/${commons-pool_commons-pool.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/${org.apache.servicemix.bundles_org.apache.servicemix.bundles.commons-dbcp.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${org.apache.servicemix.bundles_org.apache.servicemix.bundles.ant.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/${org.apache.servicemix.bundles_org.apache.servicemix.bundles.serp.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${org.apache.geronimo.specs_geronimo-jms_1.1_spec.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.xbean/xbean-asm5-shaded/${org.apache.xbean_xbean-asm5-shaded.version}</bundle>

        
<bundle>mvn:org.apache.openjpa/openjpa/${org.apache.openjpa_openjpa.version}</bundle>
            </feature>
        <feature name="osgiliath-connector"
        version="${org.apache.geronimo.components_geronimo-connector.version}"
        description="OSGi Support for JCA Connector 1.6" resolver="(obr)">
                <feature version="${org.apache.aries.tr
        
<http://org.apache.aries.tr>ansaction_org.apache.aries.transaction.manager.version}">osgiliath-transaction</feature>
                <bundle
        
dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.6_spec/${org.apache.geronimo.specs_geronimo-j2ee-connector_1.6_spec.version}</bundle>
                <bundle dependency="true">mvn:javax.va
        
<http://javax.va>lidation/validation-api/${javax.validation_validation-api.version}</bundle>

        
<bundle>mvn:org.apache.geronimo.components/geronimo-connector/${org.apache.geronimo.components_geronimo-connector.version}</bundle>
            </feature>
         <feature name="osgiliath-jpa" description="OSGi Persistence
        Container" version="${org.apache.aries.jp
        <http://org.apache.aries.jp>a.version}">
                <feature version="${transaction-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-transaction-api</feature>
                <feature version="${persistence-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-persistence-api</feature>
                <bundle
        
dependency="true">mvn:org.apache.felix/org.apache.felix.coordinator/${org.apache.felix_org.apache.felix.coordinator.version}</bundle>
                <bundle
        
dependency="true">mvn:org.osgi/org.osgi.service.jdbc/${org.osgi_org.osgi.service.jdbc.version}</bundle>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/${org.apache.aries.jpa_org.apache.aries.jpa.api.version}</bundle>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/${org.apache.aries.jpa_org.apache.aries.jpa.container.version}</bundle>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/${org.apache.aries.jpa_org.apache.aries.jpa.support.version}</bundle>
                <conditional>
                    <condition>osgiliath-aries-blueprint</condition>

        
<bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint/${org.apache.aries.jpa_org.apache.aries.jpa.blueprint.version}</bundle>
                </conditional>
            </feature>
             <feature name="osgiliath-openjpa" description="Apache
        OpenJPA 2.4.x persistence engine support"
        version="${org.apache.openjpa.version}">
                <details>Enable Apache OpenJPA as persistence
        engine.</details>
                <feature prerequisite="false"
        dependency="false">osgiliath-jndi</feature>
                <feature version="${transaction-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-transaction-api</feature>
                <feature version="${persistence-api_feature.version}"
        prerequisite="false"
        dependency="false">osgiliath-persistence-api</feature>
                <bundle dependency="true">mvn:javax.se
        
<http://javax.se>rvlet/javax.servlet-api/${javax.servlet_javax.servlet-api.version}</bundle>
                <bundle
        
dependency="true">mvn:javax.el/javax.el-api/${javax.el_javax.el-api.version}</bundle>
                <bundle
        
dependency="true">mvn:commons-lang/commons-lang/${commons-lang_commons-lang.version}</bundle>
                <bundle
        
dependency="true">mvn:commons-collections/commons-collections/${commons-collections_commons-collections.version}</bundle>
                <bundle
        
dependency="true">mvn:commons-pool/commons-pool/${commons-pool_commons-pool.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/${org.apache.servicemix.bundles_org.apache.servicemix.bundles.commons-dbcp.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ant/${org.apache.servicemix.bundles_org.apache.servicemix.bundles.ant.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/${org.apache.servicemix.bundles_org.apache.servicemix.bundles.serp.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${org.apache.geronimo.specs_geronimo-jms_1.1_spec.version}</bundle>
                <bundle
        
dependency="true">mvn:org.apache.xbean/xbean-asm5-shaded/${org.apache.xbean_xbean-asm5-shaded.version}</bundle>

        
<bundle>mvn:org.apache.openjpa/openjpa/${org.apache.openjpa_openjpa.version}</bundle>
            </feature>



        <feature name='osgiliath-persistence'
        version='${project.version}' resolver="(obr)" start-level="41"
        description="Java persistence API stack" >
                        <bundle dependency='true'>mvn:javax.se
        
<http://javax.se>rvlet/javax.servlet-api/${javax.servlet_javax.servlet-api.version}</bundle>
                        <feature
        version="${project.version}">osgiliath-jdbc</feature>
                        <feature
        
version="${org.apache.geronimo.components_geronimo-connector.version}">osgiliath-connector</feature>
                        <feature version="${org.apache.aries.jp
        <http://org.apache.aries.jp>a.version}">osgiliath-jpa</feature>
                        <bundle
        
dependency='true'>mvn:org.osgi/org.osgi.service.jpa/${org.osgi_org.osgi.service.jpa.version}</bundle>
                        <feature
        version="${org.apache.openjpa.version}">osgiliath-openjpa</feature>
                        <feature
        
version="${org.apache.karaf.features_standard.version}">osgiliath-aries-blueprint</feature>

        
<bundle>mvn:org.apache.xbean/xbean-reflect/${org.apache.xbean_xbean-reflect.version}</bundle>
                        <feature
        version="${project.version}">osgiliath-spring-data-jpa</feature>
                        <conditional>

        <condition>osgiliath-rest-management</condition>
                                <bundle start-level="35"
        
dependency="true">mvn:io.swagger/swagger-annotations/${io.swagger_swagger-annotations.version}</bundle>
                        </conditional>
            </feature>

        [/code]


        ​Best regards,​ and keep up bringing the OSGI dream comes true ;-)


        --
        Charlie Mordant

        Full OSGI/EE stack made with Karaf:
        https://github.com/OsgiliathEnterprise/net.osgiliath.parent
        <https://github.com/OsgiliathEnterprise/net.osgiliath.parent>


    --
    Jean-Baptiste Onofré
    [email protected] <mailto:[email protected]>
    http://blog.nanthrax.net
    Talend - http://www.talend.com




--
Charlie Mordant

Full OSGI/EE stack made with Karaf:
https://github.com/OsgiliathEnterprise/net.osgiliath.parent

--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to