karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erwin Hogeweg <erwin.hoge...@me.com>
Subject Re: Karaf-4.0.7/8 - ResolutionException for existing Aries TransactionControl Service.
Date Fri, 30 Dec 2016 18:52:11 GMT
Hi Tim,

Thanks for your reply. I’ll give that a try.

Erwin

> On Dec 30, 2016, at 13:50, Tim Ward <tim.ward@paremus.com> wrote:
> 
> 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.jencks@gmail.com <mailto:david.a.jencks@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.hogeweg@me.com <mailto:erwin.hogeweg@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 <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
>>> 
>> 


Mime
View raw message