This is the one you want https://mvnrepository.com/artifact/org.apache.felix/org.apache.felix.scr/2.1.0
1.4 is backward compatible with 1.3 so it should be possible to just do a drop-in replacement. Tim Sent from my iPhone > On 18 May 2018, at 17:50, Alex Soto <alex.s...@envieta.com> 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 <tim.w...@paremus.com> wrote: >> >> Hi, >> >> Answers inline: >> >> Sent from my iPhone >> >>> On 18 May 2018, at 16:55, Alex Soto <alex.s...@envieta.com> 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.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-data line 0 Maven 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 project encryptedquery-responder-data >>> Unknown Java 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 <tim.w...@paremus.com> 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 >>>> >>>> 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 >>>> >>>> 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 >>>> >>>> • 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 >>>> >>>> • 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 >>>> >>>> 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) >>>> >>>> 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 <alex.s...@envieta.com> 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 <tim.w...@paremus.com> 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 >>>>>> 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 <alex.s...@envieta.com> 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/) >>>>>>> -> [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 <tim.w...@paremus.com> 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 <alex.s...@envieta.com> 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 <tim.w...@paremus.com> 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 >>>>>>>>>> >>>>>>>>>> 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 <alex.s...@envieta.com> 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 = 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 <tim.w...@paremus.com> 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 >>>>>>>>>>>> >>>>>>>>>>>> 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 <alex.s...@envieta.com> 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 <tim.w...@paremus.com> >>>>>>>>>>>>>> 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é >>>>>>>>>>>>>>> <j...@nanthrax.net> 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é >>>>>>>>>>>>>>>>> <j...@nanthrax.net <mailto:j...@nanthrax.net>> 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 >