My guess is that the bundle providing the TransactionControl service doesn’t 
say so by having a Provide-Capability header for it.  For runtime resolution 
the effectice=active requirements don’t matter but for at last subsystem 
resolution they do.

david jencks

> On Dec 30, 2016, at 6:08 AM, Erwin Hogeweg <[email protected]> wrote:
> 
> Hi,
> 
> I am having problems getting a feature working with the TransactionControl 
> Service under Karaf. The error msg suggests that the service is missing or 
> not active, but I am at a loss of why.
> 
> This is the error:
> [caused by: Unable to resolve 
> com.my.persistence.repositories/1.0.0.SNAPSHOT_20161227-1454: missing 
> requirement [com.my.persistence.repositories/1.0.0.SNAPSHOT_20161227-1454] 
> osgi.service; 
> filter:="(objectClass=org.osgi.service.transaction.control.TransactionControl)";
>  effective:=active]]
> 
> I have a DSF:
> [org.osgi.service.jdbc.DataSourceFactory]
> -----------------------------------------
>  osgi.jdbc.driver.class = com.mysql.jdbc.Driver
>  osgi.jdbc.driver.name = mysql
>  service.id = 255
>  service.bundleid = 162
>  service.scope = singleton
> Provided by : 
>  OPS4J Pax JDBC MySQL Driver Adapter (162)
> Used by: 
>  OSGi Transaction Control JPA Resource Provider - Local Transactions (114)
> 
> I have a TransactionControl service:
> [org.osgi.service.transaction.control.TransactionControl]
> ---------------------------------------------------------
>  service.vendor = Apache Aries
>  service.description = The Apache Aries Transaction Control Service for Local 
> Transactions
>  osgi.local.enabled = true
>  service.id = 206
>  service.bundleid = 113
>  service.scope = singleton
> Provided by : 
>  OSGi Transaction Control Service - Local Transactions (113)
> 
> TransactionControl bundles appear to be running correctly:
> OSGi Transaction Control Service - Local Transactions (113) provides:
> ---------------------------------------------------------------------
> [org.osgi.service.transaction.control.TransactionControl]
> 
> OSGi Transaction Control JPA Resource Provider - Local Transactions (114) 
> uses:
> -------------------------------------------------------------------------------
> [javax.persistence.spi.PersistenceProvider]
> [org.osgi.service.jpa.EntityManagerFactoryBuilder]
> [org.osgi.service.jdbc.DataSourceFactory]
> 
> OSGi Transaction Control JPA Resource Provider - Local Transactions (114) 
> provides:
> -----------------------------------------------------------------------------------
> osgi.local.enabled = true
> objectClass = 
> [org.osgi.service.transaction.control.jpa.JPAEntityManagerProviderFactory]
> service.id = 207
> service.bundleid = 114
> service.scope = bundle
> ----
> service.pid = org.apache.aries.tx.control.jpa.local
> objectClass = [org.osgi.service.cm.ManagedServiceFactory]
> service.id = 209
> service.bundleid = 114
> service.scope = singleton
> ----
> service.pid = 
> org.apache.aries.tx.control.jpa.local.adaeed20-19cf-4dff-9276-0afc20052ecc
> user = db_user
> url = jdbc:mysql://localhost:3306/my_db <mysql://localhost:3306/my_db>
> service.factoryPid = org.apache.aries.tx.control.jpa.local
> osgi.unit.name = my.pu
> osgi.jdbc.driver.class = com.mysql.jdbc.Driver
> felix.fileinstall.filename = 
> file:<…>/apache-karaf-4.0.7/etc/org.apache.aries.tx.control.jpa.local-.cfg
> databaseName = my_db
> objectClass = 
> [org.osgi.service.transaction.control.jpa.JPAEntityManagerProvider]
> service.id = 256
> service.bundleid = 114
> service.scope = singleton
> 
> 
> FWIW, transactionControl resolves just fine in a ‘stand-alone’ equinox 
> framework:
> 
> g! bundle 89
> com.my.persistence.repositories_1.0.0.SNAPSHOT_20161227-1454 [89]
> ...
>   Services in use:
> ...
>     
> {org.osgi.service.transaction.control.TransactionControl}={service.vendor=Apache
>  Aries, service.description=The Apache Aries Transaction Control Service for 
> Local Transactions, osgi.local.enabled=true, service.id=70, 
> service.bundleid=51, service.scope=singleton}
> 
> Does anyone have a suggestion as of what I am missing?
> 
> 
> Thanks and a Happy new Year,
> 
> Erwin
> 

Reply via email to