I changed to JTA and it seems better.  Any idea when Karaf 4.2.1 will be out?


Best regards,
Alex soto




> On May 21, 2018, at 2:34 PM, Jean-Baptiste Onofré <[email protected]> wrote:
> 
> Hi Tim,
> 
> as said in my previous mail, SCR 2.1.0 is already ready on a branch and it 
> will be included in Karaf 4.2.1.
> 
> Regards
> JB
> 
> On 21/05/2018 20:32, Tim Ward wrote:
>> The JpaTemplate is not very sophisticated, and I was considering deprecating 
>> it now Transaction Control is available.
>> The reason that you only have support for Required transactions is because 
>> the backing implementation is using Resource Local. This is a simple beast, 
>> incapable of managing multiple EntityManagers (and therefore suspending 
>> transactions). It also doesn’t do any decoration of the EntityManager, so 
>> supports can’t be handled because you have no way to know if you should 
>> close/flush or not.
>> The XA version is more sophisticated, in that it can start or suspend 
>> transactions, but it would then require you to use a valid XA enlisting 
>> DataSource (which I’m assuming is still an unsolved problem for you). It 
>> therefore is unlikely to help you.
>> I’m somewhat surprised that nobody from the Karaf side has come up with a 
>> way to use Felix SCR 2.1.0 in Karaf. It really shouldn’t be a big job to 
>> upgrade a single bundle in the runtime.
>> Tim
>> Sent from my iPhone
>> On 21 May 2018, at 19:08, Alex Soto <[email protected] 
>> <mailto:[email protected]><mailto:[email protected] 
>> <mailto:[email protected]>>> wrote:
>>> I ended up using Aries JPA 2.7.0 with the JpaTemplate approach.
>>> I can’t spend more time on this.
>>> 
>>> I suppose the next Karaf release will support OSGi 7.0, then I can try 
>>> again.
>>> 
>>> 
>>> Now with Aries JpaTemplate, transactions are correctly rolled back on 
>>> exception, but I can’t use the /TransactionType.Supports/ option as it 
>>> throws exception:
>>> 
>>> java.lang.IllegalStateException: Only transation propagation type REQUIRED 
>>> is supported.
>>> 
>>> Any idea why?
>>> 
>>> Best regards,
>>> Alex soto
>>> 
>>> 
>>> 
>>> 
>>>> On May 19, 2018, at 2:42 AM, Tim Ward <[email protected] 
>>>> <mailto:[email protected]><mailto:[email protected] 
>>>> <mailto:[email protected]>>> wrote:
>>>> 
>>>> Hi Alex,
>>>> 
>>>> Another simple option would be for you to not depend on the enRoute 
>>>> osgi.api pom, but just the things you want/need from the compendium 
>>>> individually so you can force the use of DS 1.3.
>>>> 
>>>> At the very least you would need these jars. I’m not sure what (if 
>>>> anything) else you are using in this bundle.
>>>> 
>>>> https://mvnrepository.com/artifact/org.osgi/org.osgi.service.component.annotations
>>>>  
>>>> <https://mvnrepository.com/artifact/org.osgi/org.osgi.service.component.annotations>
>>>> 
>>>> https://mvnrepository.com/artifact/org.osgi/org.osgi.service.transaction.control
>>>>  
>>>> <https://mvnrepository.com/artifact/org.osgi/org.osgi.service.transaction.control>
>>>> 
>>>> Tim
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>> On 19 May 2018, at 07:58, Jean-Baptiste Onofré <[email protected] 
>>>> <mailto:[email protected]><mailto:[email protected] 
>>>> <mailto:[email protected]>>> wrote:
>>>> 
>>>>> Hi Alex,
>>>>> 
>>>>> I don't think it's a good idea to update only SCR without updating other 
>>>>> part of Karaf (ClassNotFoundException seems to  come from  a compendium 
>>>>> package).
>>>>> 
>>>>> I strongly recommend to focus on the current 4.2.0 distribution and 
>>>>> clearly list the issue to me: I will add a sample (eventually identifying 
>>>>> the issue).
>>>>> 
>>>>> Please, can you give me an access to your project in order to clearly 
>>>>> understand the issue (I'm a bit lost in the thread).
>>>>> 
>>>>> NB: for pure BND/EnRoute question, it's better to ask on the bnd mailing 
>>>>> list IMHO. Thanks !
>>>>> 
>>>>> Regards
>>>>> JB
>>>>> 
>>>>> 
>>>>> On 18/05/2018 20:07, Alex Soto wrote:
>>>>>> Tried adding Felix SCR 2.1.0, but it looks like it is not as simple:
>>>>>> org.osgi.framework.ServiceException: Service factory exception: 
>>>>>> org/osgi/service/cm/ManagedService
>>>>>> at 
>>>>>> org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:352)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:247)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:350)
>>>>>>  ~[?:?]
>>>>>> at org.apache.felix.framework.Felix.getService(Felix.java:3737) ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:470)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.metatype.internal.ManagedServiceTracker.addingService(ManagedServiceTracker.java:52)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
>>>>>>  ~[?:?]
>>>>>> at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) 
>>>>>> ~[?:?]
>>>>>> at 
>>>>>> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:990)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545)
>>>>>>  ~[?:?]
>>>>>> at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4595) 
>>>>>> ~[?:?]
>>>>>> at org.apache.felix.framework.Felix.registerService(Felix.java:3587) 
>>>>>> ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:348)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:322)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.scr.impl.config.ScrConfigurationImpl.start(ScrConfigurationImpl.java:120)
>>>>>>  ~[?:?]
>>>>>> at org.apache.felix.scr.impl.Activator.start(Activator.java:100) ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
>>>>>>  ~[?:?]
>>>>>> at org.apache.felix.framework.Felix.activateBundle(Felix.java:2240) 
>>>>>> ~[?:?]
>>>>>> at org.apache.felix.framework.Felix.startBundle(Felix.java:2146) ~[?:?]
>>>>>> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) 
>>>>>> ~[?:?]
>>>>>> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984) 
>>>>>> ~[?:?]
>>>>>> at 
>>>>>> org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:161)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1116)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:996)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1025)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:964)
>>>>>>  ~[?:?]
>>>>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:?]
>>>>>> at 
>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>>>>>  ~[?:?]
>>>>>> at java.lang.Thread.run(Thread.java:748) [?:?]
>>>>>> Caused by: java.lang.NoClassDefFoundError: 
>>>>>> org/osgi/service/cm/ManagedService
>>>>>> at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>>  ~[?:?]
>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.scr.impl.config.ScrManagedServiceServiceFactory.getService(ScrManagedServiceServiceFactory.java:47)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:347)
>>>>>>  ~[?:?]
>>>>>> ... 33 more
>>>>>> Caused by: java.lang.ClassNotFoundException: 
>>>>>> org.osgi.service.cm.ManagedService not found by org.apache.felix.scr [67]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>>  ~[?:?]
>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?]
>>>>>> at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
>>>>>>  ~[?:?]
>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.scr.impl.config.ScrManagedServiceServiceFactory.getService(ScrManagedServiceServiceFactory.java:47)
>>>>>>  ~[?:?]
>>>>>> at 
>>>>>> org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:347)
>>>>>>  ~[?:?]
>>>>>> ... 33 more
>>>>>> Best regards,
>>>>>> Alex soto
>>>>>>> On May 18, 2018, at 12:46 PM, Jean-Baptiste Onofré <[email protected] 
>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>> 
>>>>>>> 4.2.1-SNAPSHOT already updated to DS 1.4 (SCR 2.1.0) (ready on one of 
>>>>>>> my branch).
>>>>>>> 
>>>>>>> Regards
>>>>>>> JB
>>>>>>> 
>>>>>>> On 18/05/2018 17:50, Alex Soto wrote:
>>>>>>>> Great, I solved the Eclipse problem.  Thanks.
>>>>>>>> Yes, Karaf provides DS 1.3,  but no DS 1.4 out off the box.
>>>>>>>> Maybe this is available from Aries?
>>>>>>>> Best regards,
>>>>>>>> Alex soto
>>>>>>>>> On May 18, 2018, at 11:18 AM, Tim Ward <[email protected] 
>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> Answers inline:
>>>>>>>>> 
>>>>>>>>> Sent from my iPhone
>>>>>>>>> 
>>>>>>>>> On 18 May 2018, at 16:55, Alex Soto <[email protected] 
>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Thank you Tim for the very detailed explanation.
>>>>>>>>>> There are  two problems I don’t know how to resolve:
>>>>>>>>>> 
>>>>>>>>>> 1- BND generates this for my bundle:
>>>>>>>>>> 
>>>>>>>>>> Require-Capability:  
>>>>>>>>>> osgi.extender;filter:="(&(osgi.extender=osgi.component)(version>=1.3.0)(!(version>=2.0.0)))”
>>>>>>>>>> 
>>>>>>>>>> This is because I use the @Component and @Reference annotations.  
>>>>>>>>>> This is strange, since I should be using OSGi R7, so I am not sure 
>>>>>>>>>> why it is saying 1.3.0.  Now when try to run in Karaf, even though I 
>>>>>>>>>> am installing/scr/feature, it fails with unresolved requirement.
>>>>>>>>> 
>>>>>>>>> So in the absence of information to the contrary this requirement is 
>>>>>>>>> added based on your usage of Declarative Services features. If you 
>>>>>>>>> use DS 1.3 features then DS 1.3 will be required.
>>>>>>>>> 
>>>>>>>>> Since R7 added the bundle requirement annotations the @Component 
>>>>>>>>> annotation has been annotated to require DS at the current spec 
>>>>>>>>> version (this gives a more consistent behaviour than bnd’s 
>>>>>>>>> heuristics). At a guess you are picking up a 1.3 requirement because 
>>>>>>>>> you have the 1.3 annotations ahead of the 1.4 annotations on your 
>>>>>>>>> classpath, but it could be triggered by other things too. On the 
>>>>>>>>> other hand this isn’t actually a problem as the requirement is still 
>>>>>>>>> satisfied by DS 1.4 and both versions will work for you at runtime.
>>>>>>>>> 
>>>>>>>>> The Karaf scr feature really should be providing SCR 1.3 (which is 
>>>>>>>>> required by the spec to provide the extender capability. That has 
>>>>>>>>> been the current version of the spec for three years, and has been 
>>>>>>>>> provided by Felix for at least 6 releases. I’d be pretty shocked if 
>>>>>>>>> DS 1.3 wasn’t supported. You may need help from a more Karaf focussed 
>>>>>>>>> person to confirm this.
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Since I could not find OSGi R7 in public Maven Repos, I followed 
>>>>>>>>>> EnRoute depending on:
>>>>>>>>>>       <dependency>
>>>>>>>>>>         <groupId>org.osgi.enroute</groupId>
>>>>>>>>>>         <artifactId>osgi-api</artifactId>
>>>>>>>>>>         <version>7.0.0-SNAPSHOT</version>
>>>>>>>>>>         <type>pom</type>
>>>>>>>>>>         <scope>provided</scope>
>>>>>>>>>>       </dependency>
>>>>>>>>>>       <dependency>
>>>>>>>>>>         <groupId>org.osgi.enroute</groupId>
>>>>>>>>>>         <artifactId>enterprise-api</artifactId>
>>>>>>>>>>         <version>7.0.0-SNAPSHOT</version>
>>>>>>>>>>         <type>pom</type>
>>>>>>>>>>         <scope>provided</scope>
>>>>>>>>>>       </dependency>
>>>>>>>>> 
>>>>>>>>> There’s no problem with you using these. On the other hand the OSGi 
>>>>>>>>> API aggregations you are looking for are:
>>>>>>>>> 
>>>>>>>>> https://mvnrepository.com/artifact/org.osgi/osgi.core 
>>>>>>>>> <https://mvnrepository.com/artifact/org.osgi/osgi.core>
>>>>>>>>> 
>>>>>>>>> https://mvnrepository.com/artifact/org.osgi/osgi.cmpn 
>>>>>>>>> <https://mvnrepository.com/artifact/org.osgi/osgi.cmpn>
>>>>>>>>> 
>>>>>>>>> You can also find the individual specs under the org.osgi group id if 
>>>>>>>>> you want to use a smaller hammer :)
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 2- This is minor, and I see it also in the EnRoute project. While 
>>>>>>>>>> the Maven build succeeds, Eclipse BND plugin shows 2 errors:
>>>>>>>>>> 
>>>>>>>>>>    The default package '.' is not permitted by the Import-Package
>>>>>>>>>>    syntax. This can be caused by compile errors in Eclipse
>>>>>>>>>>    because Eclipse creates valid class files regardless of compile
>>>>>>>>>>    errors. The following package(s) import from the default
>>>>>>>>>>    package [org.enquery.encryptedquery.responder.data.service.impl]
>>>>>>>>>>    
>>>>>>>>>> (biz.aQute.bnd:bnd-maven-plugin:4.0.0:bnd-process:default:process-classes)pom.xml/encryptedquery-responder-dataline
>>>>>>>>>>    0Maven Build Participant Problem
>>>>>>>>>> 
>>>>>>>>>>    The project was not built since its build path is incomplete.
>>>>>>>>>>    Cannot find the class file for javax.persistence.EntityManager.
>>>>>>>>>>    Fix the build path then try building this
>>>>>>>>>>    projectencryptedquery-responder-dataUnknownJava Problem
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> As the message suggests, this usually occurs when Eclipse has build 
>>>>>>>>> errors for the project. Specifically in this case you seem to be 
>>>>>>>>> building against a project which exposes the EntityManager interface 
>>>>>>>>> somehow, but you don’t have the JPA API in your compile dependencies 
>>>>>>>>> (normally these would come come in transitively from the project you 
>>>>>>>>> depend on).
>>>>>>>>> 
>>>>>>>>> I hope this helps,
>>>>>>>>> 
>>>>>>>>> Tim
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Best regards,
>>>>>>>>>> Alex soto
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> On May 18, 2018, at 5:23 AM, Tim Ward <[email protected] 
>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Hi Alex,
>>>>>>>>>>> 
>>>>>>>>>>> The bundles you need are listed in the bndrun for the JPA version 
>>>>>>>>>>> of the enRoute application, but as I think you’re using OpenJPA 
>>>>>>>>>>> (rather than Hibernate) it may help to explain things in relation 
>>>>>>>>>>> to the Transaction Control JPA integration test for OpenJPA. I’m 
>>>>>>>>>>> sure that at least some of this will be stuff you already know, but 
>>>>>>>>>>> I’m trying to make sure I give a compete explanation.
>>>>>>>>>>> 
>>>>>>>>>>> This method defines some extra properties to add to the persistence 
>>>>>>>>>>> unit. It references a couple of open bugs in OpenJPA which may or 
>>>>>>>>>>> may not affect you. It also adds schema generation as OpenJPA does 
>>>>>>>>>>> not support the standard properties from JPA 2.1 
>>>>>>>>>>> https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java#L34
>>>>>>>>>>>  
>>>>>>>>>>> <https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java#L34>
>>>>>>>>>>> 
>>>>>>>>>>> This method defines the OpenJPA bundles and their immediate 
>>>>>>>>>>> dependencies. 
>>>>>>>>>>> https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java#L48
>>>>>>>>>>>  
>>>>>>>>>>> <https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleOpenJPA_2_4_1_Test.java#L48>
>>>>>>>>>>> 
>>>>>>>>>>> You then need:
>>>>>>>>>>> 
>>>>>>>>>>> • Aries JPA 2.7.0 - this provides the OSGi JPA Service 1.1 RI (1.1 
>>>>>>>>>>> features are needed by the Aries Tx Control JPA resource provider 
>>>>>>>>>>> to support XA)
>>>>>>>>>>> 
>>>>>>>>>>> • Aries Tx Control Service - either XA or local depending on 
>>>>>>>>>>> whether you need XA Transaction support. For example 
>>>>>>>>>>> https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java#L365
>>>>>>>>>>>  
>>>>>>>>>>> <https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java#L365>
>>>>>>>>>>> 
>>>>>>>>>>> • Aries Tx Control JPA resource provider - either XA or local 
>>>>>>>>>>> depending on your needs. Note that you can’t use the XA provider 
>>>>>>>>>>> with the local service, but you can use the local provider with the 
>>>>>>>>>>> XA service (although this doesn’t make a lot of sense to do). For 
>>>>>>>>>>> example 
>>>>>>>>>>> https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java#L377
>>>>>>>>>>>  
>>>>>>>>>>> <https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java#L377>
>>>>>>>>>>> 
>>>>>>>>>>> • A JDBC Service implementation supporting your database driver. H2 
>>>>>>>>>>> supports this natively (which is why it is used in many examples) 
>>>>>>>>>>> but MariaDB does not. Therefore you will need to deploy PAX-JDBC’s 
>>>>>>>>>>> support. See 
>>>>>>>>>>> https://github.com/ops4j/org.ops4j.pax.jdbc/tree/master/pax-jdbc-mariadb
>>>>>>>>>>>  
>>>>>>>>>>> <https://github.com/ops4j/org.ops4j.pax.jdbc/tree/master/pax-jdbc-mariadb>
>>>>>>>>>>> 
>>>>>>>>>>> You then have the option of either programmatically assembling your 
>>>>>>>>>>> Resource Provider, or using configuration. Configuration is 
>>>>>>>>>>> generally easier and is what I normally recommend. At that point 
>>>>>>>>>>> you need to create a factory configuration for the relevant PID (it 
>>>>>>>>>>> depends on whether you use the local or XA resource provider, see 
>>>>>>>>>>> https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java#L175
>>>>>>>>>>>  
>>>>>>>>>>> <https://github.com/apache/aries-tx-control/blob/master/tx-control-providers/jpa/tx-control-jpa-itests/src/test/java/org/apache/aries/tx/control/itests/AbstractJPATransactionTest.java#L175>)
>>>>>>>>>>> 
>>>>>>>>>>> The necessary configuration properties are:
>>>>>>>>>>> 
>>>>>>>>>>> • url - the JDBC URL for your database
>>>>>>>>>>> • osgi.jdbc.driver.class - the database driver class name, in your 
>>>>>>>>>>> case org.mariadb.jdbc.Driver
>>>>>>>>>>> • osgi.unit.name - the name of your persistence unit
>>>>>>>>>>> 
>>>>>>>>>>> The result of this configuration will be a JPAEntityManagerProvider 
>>>>>>>>>>> service registered in the service registry (using your 
>>>>>>>>>>> EntityManagerFactoryBuilder and the MariaDB DataSourceFactory). You 
>>>>>>>>>>> can then Inject that service into your code and combine it with the 
>>>>>>>>>>> TransactionControl service to make a thread safe EntityManager that 
>>>>>>>>>>> you can use in all your requests (just like the enRoute example 
>>>>>>>>>>> does).
>>>>>>>>>>> 
>>>>>>>>>>> I hope this helps,
>>>>>>>>>>> 
>>>>>>>>>>> Tim
>>>>>>>>>>> 
>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>> 
>>>>>>>>>>> On 17 May 2018, at 22:46, Alex Soto <[email protected] 
>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Thanks Tim,
>>>>>>>>>>>> 
>>>>>>>>>>>> I was using branch R7, changed to master, it builds now.
>>>>>>>>>>>> 
>>>>>>>>>>>> Now I have updated my project to OSGi 7 with Transaction Control, 
>>>>>>>>>>>> how do I deploy to Karaf?
>>>>>>>>>>>> i.e., what bundles/features do I need?
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Best regards,
>>>>>>>>>>>> Alex soto
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> On May 17, 2018, at 2:08 PM, Tim Ward <[email protected] 
>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi Alex,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Bnd 4.0.0 was only released last Sunday, but this should have 
>>>>>>>>>>>>> been changed yesterday in this commit 
>>>>>>>>>>>>> https://github.com/osgi/osgi.enroute/commit/9f9857c3d317cd08a7aaf7327c1904676299f9ee
>>>>>>>>>>>>>  
>>>>>>>>>>>>> <https://github.com/osgi/osgi.enroute/commit/9f9857c3d317cd08a7aaf7327c1904676299f9ee>
>>>>>>>>>>>>>  to make sure enRoute kept building.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> EnRoute is automatically pushed to the sonatype OSGi nexus 
>>>>>>>>>>>>> repository, so is it possible that you’re running offline, or 
>>>>>>>>>>>>> firewalled from the repo? You should be able to force snapshot 
>>>>>>>>>>>>> updates from the Maven command line.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Tim
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 17 May 2018, at 18:26, Alex Soto <[email protected] 
>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Allright,  I am trying to follow the EnRoute tutorial.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I am getting this error:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> [ERROR] Plugin biz.aQute.bnd:bnd-maven-plugin:4.0.0-SNAPSHOT or 
>>>>>>>>>>>>>> one of its dependencies could not be resolved: Could not find 
>>>>>>>>>>>>>> artifact biz.aQute.bnd:bnd-maven-plugin:jar:4.0.0-SNAPSHOT in 
>>>>>>>>>>>>>> Bnd Snapshots 
>>>>>>>>>>>>>> (https://bndtools.ci.cloudbees.com/job/bnd.master/lastSuccessfulBuild/artifact/dist/bundles/
>>>>>>>>>>>>>>  
>>>>>>>>>>>>>> <https://bndtools.ci.cloudbees.com/job/bnd.master/lastSuccessfulBuild/artifact/dist/bundles/>)
>>>>>>>>>>>>>>  -> [Help 1]
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Any idea (time frame) when this will move from SNAPSHOT 
>>>>>>>>>>>>>> dependencies?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>> Alex soto
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On May 17, 2018, at 11:08 AM, Tim Ward <[email protected] 
>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> It is highly unlikely that you’ll hit the same issues. The 
>>>>>>>>>>>>>>> transaction control resource provider uses the 
>>>>>>>>>>>>>>> DataSourceFactory directly to create a DataSource (either 
>>>>>>>>>>>>>>> progamatically using a factory service or via config admin) 
>>>>>>>>>>>>>>> that enlists itself in the ongoing transaction. This means that 
>>>>>>>>>>>>>>> the answer to your question is “with Transaction Control you 
>>>>>>>>>>>>>>> don’t have to do that because it does it automatically”
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> If you want to use XA transactions then the only requirement is 
>>>>>>>>>>>>>>> that the DataSourceFactory can produce an XADataSource, 
>>>>>>>>>>>>>>> otherwise it just uses the standard JDBC API to 
>>>>>>>>>>>>>>> commit/rollback. If your DataSourceFactory doesn’t support XA 
>>>>>>>>>>>>>>> then use the local resource provider implementation.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Tim
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On 17 May 2018, at 15:17, Alex Soto <[email protected] 
>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I will take a look at these examples.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> However, I think that if I cannot get a MariaDB DataSource 
>>>>>>>>>>>>>>>> that supports transactions, then it will still not work, right?
>>>>>>>>>>>>>>>> If the examples use H2 database, I still may get different 
>>>>>>>>>>>>>>>> results when I change to MariaDB, and I will find myself in 
>>>>>>>>>>>>>>>> the same spot as of now.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> So, the question remains about what is the correct way how to 
>>>>>>>>>>>>>>>> register a transaction aware MariaDB DataSource.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>> Alex soto
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On May 17, 2018, at 1:46 AM, Tim Ward <[email protected] 
>>>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> The best place to start when looking for OSGi R7 examples is 
>>>>>>>>>>>>>>>>> the enRoute Project. It contains Maven Archetypes, examples 
>>>>>>>>>>>>>>>>> and worked tutorials for building applications using R7 
>>>>>>>>>>>>>>>>> specifications.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> https://enroute.osgi.org <https://enroute.osgi.org/> 
>>>>>>>>>>>>>>>>> <https://enroute.osgi.org/ <https://enroute.osgi.org/>> 
>>>>>>>>>>>>>>>>> <https://enroute.osgi.org/Tutorial/ 
>>>>>>>>>>>>>>>>> <https://enroute.osgi.org/Tutorial/>>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Most of the projects in use are just new versions of long 
>>>>>>>>>>>>>>>>> established OSGi implementations from Aries and Felix. The 
>>>>>>>>>>>>>>>>> majority of them are already released and in Maven Central. 
>>>>>>>>>>>>>>>>> Those that are still in the process of releasing (pretty much 
>>>>>>>>>>>>>>>>> just the JAX-RS whiteboard) are available in the Apache 
>>>>>>>>>>>>>>>>> Snapshots repository. I am not aware of any implementations 
>>>>>>>>>>>>>>>>> that require R7 framework features, so all of them should run 
>>>>>>>>>>>>>>>>> on Karaf.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Tim
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On 16 May 2018, at 22:25, Alex Soto <[email protected] 
>>>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> I agree, it s very frustrating and time consuming. Almost 
>>>>>>>>>>>>>>>>>> impossible to get it right.
>>>>>>>>>>>>>>>>>> I may try the OSGi R7, but I am not sure of its adoption 
>>>>>>>>>>>>>>>>>> level at this time, availability of bundles, examples, 
>>>>>>>>>>>>>>>>>> support by Karaf, etc.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Anyway, back to my current stack.  I only see one DataSource 
>>>>>>>>>>>>>>>>>> being registered:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> karaf@root()> service:list DataSource
>>>>>>>>>>>>>>>>>> [javax.sql.DataSource]
>>>>>>>>>>>>>>>>>> ----------------------
>>>>>>>>>>>>>>>>>>  databaseName = responder
>>>>>>>>>>>>>>>>>>  dataSourceName = responder
>>>>>>>>>>>>>>>>>>  osgi.jdbc.driver.name = mariadb
>>>>>>>>>>>>>>>>>>  osgi.jndi.service.name = responder
>>>>>>>>>>>>>>>>>>  service.bundleid = 14
>>>>>>>>>>>>>>>>>>  service.factoryPid = org.ops4j.datasource
>>>>>>>>>>>>>>>>>> service.id <http://service.id/> <http://service.id/ 
>>>>>>>>>>>>>>>>>> <http://service.id/>> <http://service.id/ 
>>>>>>>>>>>>>>>>>> <http://service.id/>>= 194
>>>>>>>>>>>>>>>>>>  service.pid = 
>>>>>>>>>>>>>>>>>> org.ops4j.datasource.feb33f6d-dc46-4bc7-a417-ad6bdd5a6ee5
>>>>>>>>>>>>>>>>>>  service.scope = singleton
>>>>>>>>>>>>>>>>>>  url = jdbc:mariadb:XXXXXX
>>>>>>>>>>>>>>>>>> Provided by :
>>>>>>>>>>>>>>>>>>  OPS4J Pax JDBC Config (14)
>>>>>>>>>>>>>>>>>> Used by:
>>>>>>>>>>>>>>>>>>  Data (135)
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Not sure what to do with this.
>>>>>>>>>>>>>>>>>> I specified the following in the configuration:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> pool=narayana
>>>>>>>>>>>>>>>>>> xa=true
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>>>> Alex soto
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> On May 16, 2018, at 4:12 PM, Tim Ward <[email protected] 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> The structure of the JNDI name is defined by the JNDI 
>>>>>>>>>>>>>>>>>>> service specification.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> osgi:service/<interface name>[/<filter>]
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> So in this case both of your services should be DataSource 
>>>>>>>>>>>>>>>>>>> instances, but they should have different filters.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> The important thing is to make sure you have an JTA 
>>>>>>>>>>>>>>>>>>> enlisting DataSource registered as a service (this isn’t 
>>>>>>>>>>>>>>>>>>> just your normal DataSource), then to build a filter which 
>>>>>>>>>>>>>>>>>>> selects that. One option for this is to use the enlistment 
>>>>>>>>>>>>>>>>>>> whiteboard from Aries (not well documented) 
>>>>>>>>>>>>>>>>>>> https://github.com/apache/aries/tree/trunk/transaction/transaction-jdbc
>>>>>>>>>>>>>>>>>>>  
>>>>>>>>>>>>>>>>>>> <https://github.com/apache/aries/tree/trunk/transaction/transaction-jdbc>
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> This is a non-trivial thing to do, which is why I keep 
>>>>>>>>>>>>>>>>>>> mentioning Transaction Control which handles the enlistment 
>>>>>>>>>>>>>>>>>>> reliably without the layers of services.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Tim
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> On 16 May 2018, at 21:57, Alex Soto <[email protected] 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>> 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Thank you Tim.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Any idea what the JNDI names would be?
>>>>>>>>>>>>>>>>>>>> It is Pax-JDBC creating these JNDI names, so I have no 
>>>>>>>>>>>>>>>>>>>> idea.
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> From the Karaf console:
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> karaf@root()> jndi:names
>>>>>>>>>>>>>>>>>>>> JNDI Name              │ Class Name
>>>>>>>>>>>>>>>>>>>> ───────────────────────┼───────────────────────────────────────────────
>>>>>>>>>>>>>>>>>>>> osgi:service/responder │ org.mariadb.jdbc.MySQLDataSource
>>>>>>>>>>>>>>>>>>>> osgi:service/jndi      │ 
>>>>>>>>>>>>>>>>>>>> org.apache.karaf.jndi.internal.JndiServiceImpl
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>>>>>> Alex soto
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On May 16, 2018, at 3:48 PM, Tim Ward 
>>>>>>>>>>>>>>>>>>>>> <[email protected] 
>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>> 
>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Just looking quickly.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> You have the same JNDI name for both JTA and non JTA 
>>>>>>>>>>>>>>>>>>>>> DataSources. This is clearly wrong as the DataSource 
>>>>>>>>>>>>>>>>>>>>> cannot simultaneously be enlisted in the Transaction and 
>>>>>>>>>>>>>>>>>>>>> not enlisted. The comments also indicate a 
>>>>>>>>>>>>>>>>>>>>> misunderstanding of the purpose of the 
>>>>>>>>>>>>>>>>>>>>> non-jta-datasource, which absolutely is used with JTA 
>>>>>>>>>>>>>>>>>>>>> EntityManagers (for things like sequence allocation and 
>>>>>>>>>>>>>>>>>>>>> out of band optimisations). You really do need to have 
>>>>>>>>>>>>>>>>>>>>> both and they do need to behave differently.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> At a guess your DataSource is not enlisted with the 
>>>>>>>>>>>>>>>>>>>>> transaction manager present in the system.  This usually 
>>>>>>>>>>>>>>>>>>>>> happens by configuring a (otherwise invisible) DataSource 
>>>>>>>>>>>>>>>>>>>>> wrapper There is nothing forcing you to make this happen 
>>>>>>>>>>>>>>>>>>>>> (or checking that it does) hence your transactions would 
>>>>>>>>>>>>>>>>>>>>> be broken. This is one of the several reasons I try to 
>>>>>>>>>>>>>>>>>>>>> direct people to Transaction Control where the model 
>>>>>>>>>>>>>>>>>>>>> actively pushes you toward transactions that actually 
>>>>>>>>>>>>>>>>>>>>> work, rather than hiding all the magic behind an 
>>>>>>>>>>>>>>>>>>>>> annotation.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Hopefully this gives you some clues as to what might be 
>>>>>>>>>>>>>>>>>>>>> wrong.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Best Regards,
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Tim
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> On 16 May 2018, at 21:34, Jean-Baptiste Onofré 
>>>>>>>>>>>>>>>>>>>>>> <[email protected] 
>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]><mailto:[email protected] 
>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Are you sure about your code ? Flush looks weird to me 
>>>>>>>>>>>>>>>>>>>>>> and it seems you don't use container managed transaction.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>>>>>>> JB
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> On 16/05/2018 21:08, Alex Soto wrote:
>>>>>>>>>>>>>>>>>>>>>>> Yes, same result.  I even tried with Narayana 
>>>>>>>>>>>>>>>>>>>>>>> Transaction Manager, and same result.
>>>>>>>>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>>>>>>>>> Alex soto
>>>>>>>>>>>>>>>>>>>>>>>> On May 16, 2018, at 2:56 PM, Jean-Baptiste Onofré 
>>>>>>>>>>>>>>>>>>>>>>>> <[email protected] <mailto:[email protected]> 
>>>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected] <mailto:[email protected]>> 
>>>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected] 
>>>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>><mailto:[email protected] 
>>>>>>>>>>>>>>>>>>>>>>>> <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Same behavior with RequiresNew ?
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>>>>>>>>> JB
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> On 16/05/2018 19:44, Alex Soto wrote:
>>>>>>>>>>>>>>>>>>>>>>>>> With Karaf version 4.2.0, Rollback is not working 
>>>>>>>>>>>>>>>>>>>>>>>>> with MariaDB and InnoDB tables.
>>>>>>>>>>>>>>>>>>>>>>>>> I deployed these features (from Karaf’s enterprise 
>>>>>>>>>>>>>>>>>>>>>>>>> repository):
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>aries-blueprint</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>transaction</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>jndi</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>jdbc</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>jpa</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>pax-jdbc-mariadb</feature>
>>>>>>>>>>>>>>>>>>>>>>>>>        <feature>pax-jdbc-config</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>pax-jdbc-pool-dbcp2</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> <feature>hibernate</feature>
>>>>>>>>>>>>>>>>>>>>>>>>> My Data Source is configured in the file 
>>>>>>>>>>>>>>>>>>>>>>>>> /org.ops4j.datasource-responder.cfg/
>>>>>>>>>>>>>>>>>>>>>>>>>   osgi.jdbc.driver.name = mariadb
>>>>>>>>>>>>>>>>>>>>>>>>>   dataSourceName=responder
>>>>>>>>>>>>>>>>>>>>>>>>>   url
>>>>>>>>>>>>>>>>>>>>>>>>>   = 
>>>>>>>>>>>>>>>>>>>>>>>>> jdbc:mariadb://mariadb.local:3306/responder?characterEncoding=UTF-8&useServerPrepStmts=true&autocommit=false
>>>>>>>>>>>>>>>>>>>>>>>>>   user=XXXX
>>>>>>>>>>>>>>>>>>>>>>>>>   password=XXXX
>>>>>>>>>>>>>>>>>>>>>>>>>   databaseName=responder
>>>>>>>>>>>>>>>>>>>>>>>>>   #Pool Config
>>>>>>>>>>>>>>>>>>>>>>>>>   pool=dbcp2
>>>>>>>>>>>>>>>>>>>>>>>>>   xa=true
>>>>>>>>>>>>>>>>>>>>>>>>> My persistence.xml:
>>>>>>>>>>>>>>>>>>>>>>>>>   <persistence version="2.0" 
>>>>>>>>>>>>>>>>>>>>>>>>> xmlns="http://java.sun.com/xml/ns/persistence";
>>>>>>>>>>>>>>>>>>>>>>>>>        
>>>>>>>>>>>>>>>>>>>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>>>>>>>>>>>>>>>>>>>        
>>>>>>>>>>>>>>>>>>>>>>>>> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
>>>>>>>>>>>>>>>>>>>>>>>>> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd";>
>>>>>>>>>>>>>>>>>>>>>>>>>            <persistence-unit 
>>>>>>>>>>>>>>>>>>>>>>>>> name="responderPersistenUnit" transaction-type="JTA">
>>>>>>>>>>>>>>>>>>>>>>>>>                
>>>>>>>>>>>>>>>>>>>>>>>>> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
>>>>>>>>>>>>>>>>>>>>>>>>>            <!-- Only used when transaction-type=JTA 
>>>>>>>>>>>>>>>>>>>>>>>>> -->
>>>>>>>>>>>>>>>>>>>>>>>>>                
>>>>>>>>>>>>>>>>>>>>>>>>> <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder)</jta-data-source>
>>>>>>>>>>>>>>>>>>>>>>>>>            <!-- Only used when 
>>>>>>>>>>>>>>>>>>>>>>>>> transaction-type=RESOURCE_LOCAL -->
>>>>>>>>>>>>>>>>>>>>>>>>>                
>>>>>>>>>>>>>>>>>>>>>>>>> <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder)</non-jta-data-source>
>>>>>>>>>>>>>>>>>>>>>>>>>            <properties>
>>>>>>>>>>>>>>>>>>>>>>>>>                    <property name=“hibernate.dialect" 
>>>>>>>>>>>>>>>>>>>>>>>>> value="org.hibernate.dialect.MySQL5Dialect" />
>>>>>>>>>>>>>>>>>>>>>>>>>                <property name="hibernate.show_sql" 
>>>>>>>>>>>>>>>>>>>>>>>>> value="true" />
>>>>>>>>>>>>>>>>>>>>>>>>>                <property name="hibernate.format_sql" 
>>>>>>>>>>>>>>>>>>>>>>>>> value="true" />
>>>>>>>>>>>>>>>>>>>>>>>>>                <property 
>>>>>>>>>>>>>>>>>>>>>>>>> name="hibernate.hbm2ddl.auto" value="none"/>
>>>>>>>>>>>>>>>>>>>>>>>>>            </properties>
>>>>>>>>>>>>>>>>>>>>>>>>>        </persistence-unit>
>>>>>>>>>>>>>>>>>>>>>>>>>   </persistence>
>>>>>>>>>>>>>>>>>>>>>>>>> My blueprint.xml:
>>>>>>>>>>>>>>>>>>>>>>>>>   <blueprint 
>>>>>>>>>>>>>>>>>>>>>>>>> xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>>>>>>>>>>>>>>>>>>>>>>>>>   xmlns:jpa="http://aries.apache.org/xmlns/jpa/v2.0.0";
>>>>>>>>>>>>>>>>>>>>>>>>>   
>>>>>>>>>>>>>>>>>>>>>>>>> xmlns:tx="http://aries.apache.org/xmlns/transactions/v2.0.0";
>>>>>>>>>>>>>>>>>>>>>>>>>   
>>>>>>>>>>>>>>>>>>>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>>>>>>>>>>>>>>>>>>>   
>>>>>>>>>>>>>>>>>>>>>>>>> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
>>>>>>>>>>>>>>>>>>>>>>>>> https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>
>>>>>>>>>>>>>>>>>>>>>>>>>   <jpa:enable />
>>>>>>>>>>>>>>>>>>>>>>>>>   <tx:enable />
>>>>>>>>>>>>>>>>>>>>>>>>>   <bean id="userService" 
>>>>>>>>>>>>>>>>>>>>>>>>> class="org.data.impl.UserServiceImpl" />
>>>>>>>>>>>>>>>>>>>>>>>>>   <service ref="userService" 
>>>>>>>>>>>>>>>>>>>>>>>>> interface="org.data.UserService" />
>>>>>>>>>>>>>>>>>>>>>>>>>   </blueprint>
>>>>>>>>>>>>>>>>>>>>>>>>> For testing I throw exception in my DAO:
>>>>>>>>>>>>>>>>>>>>>>>>> @Transactional(REQUIRED)
>>>>>>>>>>>>>>>>>>>>>>>>> public void addUser(User user) {
>>>>>>>>>>>>>>>>>>>>>>>>> em.persist(user);
>>>>>>>>>>>>>>>>>>>>>>>>> em.flush();
>>>>>>>>>>>>>>>>>>>>>>>>> throw new RuntimeException("On Purpose");
>>>>>>>>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>>>>>>>>> I expect the record not to be in the table due to 
>>>>>>>>>>>>>>>>>>>>>>>>> rollback of the transaction, but it still shows up in 
>>>>>>>>>>>>>>>>>>>>>>>>> my database table.
>>>>>>>>>>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>>>>>>>>>>> Alex soto

Reply via email to