David is right, 

there is a bug in the packaging of the Aries local transaction control service 
implementation. You should just be able to use the XA implementation (which 
also supports local transactions) instead, or you can wait for a fix in the 
snapshots, which will likely appear in the new year.

Tim

Sent from my iPhone

> On 30 Dec 2016, at 17:24, David Jencks <david.a.jen...@gmail.com> wrote:
> 
> 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 <erwin.hoge...@me.com> 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
>> 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