>>>>> Steinar Bang <[email protected]>: >> One other workaround could have been running everything at run-level 80 >> and have a component depending on the SPI services of liquibase. The >> problem with that, however, is that the services have cardinality >> multiple, so there is no way for a component to know when they are >> finished starting.
>> I'm still thinking, but I take all ideas, and suggestions. > Another workaround turned out to be to downgrade liquibase's SPI Fly to 1.3.6. > Then shiro-core pulls in SPI Fly 1.3.7 on run-level 80 and liquibase > start the SPI Fly 1.3.6 bundle on run-level 40. > Then I get this: > karaf@root()> bundle:list -t 35 | grep -i spi > 88 │ Active │ 40 │ 1.3.6 │ Apache Aries SPI Fly Dynamic > Weaving Bundle > 196 │ Active │ 80 │ 1.3.7 │ Apache Aries SPI Fly Dynamic > Weaving Bundle > karaf@root()> > But other than that things seems to be working perfectly. > I have removed <Require-Capability> from my liquibase-using bundles, > because the liquibase-core bundle itself has <Require-Capability> > > https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L252 > matching its <Provide-Capability> > > https://github.com/liquibase/liquibase/blob/master/liquibase-standard/pom.xml#L217 > It just needs an SPI Fly at the run level it is started on to make them > all available... > But I would be happier if I could make it just be SPI Fly 1.3.7... > So, @JB...? Is there a way to "force" the run level for a particular bundle? Alternatively: is there a way to set the run level of a feature you depend on? If so, then my liquibase feature could just depend on the karaf spifly feature and set its run-level to be 40. And I could simplify the liquibase-karaf-feature even more.
