Thanks a lot for your reply Christian. It does sound like I have a versioning problem. I was very unsure about what versions of jpa/jta/openjpa to use when upgrading from Karaf 2.4.1.
As it stands, I use - OpenJPA 2.4.1 (I use the Karaf "openjpa" feature version 2.4.1) - JTA version 1.1 at compile time but JTA 1.2 seems to be installed at runtime. Probably due to the "openjpa" 2.4.1 feature requiring it - JPA. In runtime both 1.1 and 2.1 are installed. The former because I compile against it and the latter due to the "openjpa" 2.4.1 feature (I think) Wow what a mess, thanks for pointing this out. So, if I want to use "the latest and greatest" I should use (both at compile time and runtime of course): - OpenJPA 2.4.1 (I guess this one is OK since I do use it) - JTA 1.2 (Need to change the compile version) - JPA 2.1 (Need to change the compile version) Does that sound OK? How do I check if OpenJPA is up-and-running properly? service:list PersistenceProvider gives me this: *[javax.persistence.spi.PersistenceProvider]* *-------------------------------------------* * javax.persistence.provider = org.apache.openjpa.persistence.PersistenceProviderImpl* * javax.persistence.spi.PersistenceProvider = org.apache.openjpa.persistence.PersistenceProviderImpl* * service.bundleid = 106* * service.id <http://service.id> = 309* * service.scope = singleton* *Provided by :* * OpenJPA Aggregate Jar (106)* *Used by:* * Apache Geronimo JSR-317 JPA 2.0 Spec API (70)* /Bengt 2016-07-07 9:23 GMT+02:00 Christian Schneider <ch...@die-schneider.net>: > The first thing Aries JPA does after finding the bundle is to locate a > suitable PersistenceProvider service. So one thing to check is of the > openjpa PersistenceProvider service is registered. > > I am pretty sure the problem is with the openjpa version though. Openjpa > 2.4.0 does not support JTA 1.2. In the newest karaf version there should be > a feature for openjpa 2.4.1 which should work > with JTA 1.2. This is important as Aries JPA 2 requires JTA 1.2 for the > @Transactional support. > > Another issue might be with the JPA api version. Openjpa is only > compatible to jpa 2.0. So you have to make sure your own bundle does not > depend on jpa 2.1. > > Christian > > > On 07.07.2016 09:10, Bengt Rodehav wrote: > > OK - thanks Christian. > > Do you have any idea why the EntityManagerFactory service does not seem to > be published. The logging implies that the persistence unit is found and > added. What could be missing? > > /Bengt > > 2016-07-06 19:36 GMT+02:00 Christian Schneider <ch...@die-schneider.net>: > >> You can ignore these messages. they come from Aries spi-fly and simply >> say that spi-fly looked into your bundle and decided that it does not need >> to do anything. I have committed a change to spi-fly recently to log these >> messages only on level debug as they confuse a lot of people. >> >> Christian >> >> 2016-07-06 13:37 GMT+02:00 Bengt Rodehav < <be...@rodehav.com> >> be...@rodehav.com>: >> >>> Actually a more complete log says: >>> >>> 2016-07-06 13:35:13,732 | INFO | nsole user karaf | >>> PersistenceBundleTracker | er.impl.PersistenceBundleTracker 102 | >>> Found persistence unit filetransferhistoryPU in bundle >>> se.digia.connect.services.filetransfer.history-domain with provider >>> org.apache.openjpa.persistence.PersistenceProviderImpl. >>> 2016-07-06 13:35:13,733 | INFO | nsole user karaf | >>> PersistenceBundleTracker | er.impl.PersistenceBundleTracker 93 | >>> Persistence units added for bundle >>> se.digia.connect.services.filetransfer.history-domain event 128 >>> 2016-07-06 13:35:13,733 | INFO | nsole user karaf | bundle >>> | ? ? | Bundle Considered >>> for SPI providers: se.digia.connect.services.filetransfer.history-domain >>> 2016-07-06 13:35:13,734 | INFO | nsole user karaf | bundle >>> | ? ? | No 'SPI-Provider' >>> Manifest header. Skipping bundle: >>> se.digia.connect.services.filetransfer.history-domain >>> >>> This sounds like the persistence units have been added but there is >>> something wrong with the "SPI-provider". >>> >>> /Bengt >>> >>> >>> 2016-07-06 13:36 GMT+02:00 Bengt Rodehav < <be...@rodehav.com> >>> be...@rodehav.com>: >>> >>>> I do have the correct information in the manifest: >>>> >>>> Meta-Persistence: META-INF/persistence.xml >>>> >>>> But I think this indicates that something is wrong: >>>> >>>> 2016-07-06 13:35:13,733 | INFO | nsole user karaf | bundle >>>> | ? ? | Bundle Considered >>>> for SPI providers: se.digia.connect.services.filetransfer.history-domain >>>> 2016-07-06 13:35:13,734 | INFO | nsole user karaf | bundle >>>> | ? ? | No 'SPI-Provider' >>>> Manifest header. Skipping bundle: >>>> se.digia.connect.services.filetransfer.history-domain >>>> >>>> >>>> What is the SPI-provider? >>>> >>>> /Bengt >>>> >>>> 2016-07-06 11:04 GMT+02:00 Christian Schneider < >>>> <ch...@die-schneider.net>ch...@die-schneider.net>: >>>> >>>>> If no EntityManagerFactory service is created then this is not a >>>>> problem with the blueprint. >>>>> Do you have the Meta-Persistence manifest entry? >>>>> See >>>>> >>>>> https://github.com/cschneider/Karaf-Tutorial/blob/master/tasklist-ds/model/bnd.bnd >>>>> >>>>> As soon as you have the entry you should see in the log that Aries JPA >>>>> parses the persistence xml and tries to create the EMF. It should report >>>>> in >>>>> the log if something is missing. >>>>> >>>>> For the blueprint you have to add the enable Elements for jpa and tx >>>>> as they create the interceptors. >>>>> >>>>> Christian >>>>> >>>>> >>>>> On 06.07.2016 10:51, Bengt Rodehav wrote: >>>>> >>>>> Having problems getting this to work. I get the following in the log >>>>> file: >>>>> >>>>> 2016-07-06 10:46:54,710 | INFO | nsole user karaf | bundle >>>>> | ? ? | Bundle >>>>> Considered >>>>> for SPI providers: se.digia.connect.services.filetransfer.history-db >>>>> 2016-07-06 10:46:54,710 | INFO | nsole user karaf | bundle >>>>> | ? ? | No >>>>> 'SPI-Provider' >>>>> Manifest header. Skipping bundle: >>>>> se.digia.connect.services.filetransfer.history-db >>>>> >>>>> No EntityManagerFactory service is being created. >>>>> >>>>> Looks like I've missed something. The only changes I've made is the >>>>> blueprint xml and the injection of the EntityManager using the annotation. >>>>> Do I need to change anything else, like the persistence.xml? >>>>> >>>>> /Bengt >>>>> >>>>> 2016-07-06 10:24 GMT+02:00 Bengt Rodehav < <be...@rodehav.com> >>>>> be...@rodehav.com>: >>>>> >>>>>> OK - thanks Christian. Will try the annotations. >>>>>> >>>>>> /Bengt >>>>>> >>>>>> 2016-07-06 10:18 GMT+02:00 Christian Schneider < >>>>>> <ch...@die-schneider.net>ch...@die-schneider.net>: >>>>>> >>>>>>> Hi Bengt, >>>>>>> >>>>>>> Aries JPA 2 only supports the annotations. You can install Aries JPA >>>>>>> 1.x into karaf 4.0.5 if you want the old xml style. >>>>>>> >>>>>>> Christian >>>>>>> >>>>>>> >>>>>>> On 06.07.2016 09:58, Bengt Rodehav wrote: >>>>>>> >>>>>>> I'm migrating from Karaf 2.4.1 to 4.0.5. I also go from JPA 1.0 to >>>>>>> 2.0. >>>>>>> >>>>>>> Previously my Blueprint XML looked like this: >>>>>>> >>>>>>> >>>>>>> *<?xml version="1.0" encoding="UTF-8"?>* >>>>>>> *<blueprint xmlns=" >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>" xmlns:xsi=" >>>>>>> <http://www.w3.org/2001/XMLSchema-instance>http://www.w3.org/2001/XMLSchema-instance >>>>>>> <http://www.w3.org/2001/XMLSchema-instance>"* >>>>>>> * xsi:schemaLocation=" >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>" xmlns:tx=" >>>>>>> <http://aries.apache.org/xmlns/transactions/v1.0.0>http://aries.apache.org/xmlns/transactions/v1.0.0 >>>>>>> <http://aries.apache.org/xmlns/transactions/v1.0.0>"* >>>>>>> * xmlns:jpa=" >>>>>>> <http://aries.apache.org/xmlns/jpa/v1.0.0>http://aries.apache.org/xmlns/jpa/v1.0.0 >>>>>>> <http://aries.apache.org/xmlns/jpa/v1.0.0>">* >>>>>>> >>>>>>> * <bean id="messageService" >>>>>>> class="se.digia.connect.iso20022.history.impl.MessageHistoryService">* >>>>>>> * <tx:transaction method="*" value="RequiresNew" />* >>>>>>> * <jpa:context property="entityManager" unitname="iso20022PU" />* >>>>>>> * </bean>* >>>>>>> >>>>>>> * <service ref="messageService" >>>>>>> interface="se.digia.connect.iso20022.history.api.IMessageHistoryService" >>>>>>> /> >>>>>>> * >>>>>>> >>>>>>> *</blueprint>* >>>>>>> >>>>>>> >>>>>>> I have now changed to: >>>>>>> >>>>>>> *<?xml version="1.0" encoding="UTF-8"?>* >>>>>>> *<blueprint xmlns=" >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>" xmlns:xsi=" >>>>>>> <http://www.w3.org/2001/XMLSchema-instance>http://www.w3.org/2001/XMLSchema-instance >>>>>>> <http://www.w3.org/2001/XMLSchema-instance>"* >>>>>>> * xsi:schemaLocation=" >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>" xmlns:tx=" >>>>>>> <http://aries.apache.org/xmlns/transactions/v1.2.0>http://aries.apache.org/xmlns/transactions/v1.2.0 >>>>>>> <http://aries.apache.org/xmlns/transactions/v1.2.0>"* >>>>>>> * xmlns:jpa=" >>>>>>> <http://aries.apache.org/xmlns/jpa/v2.0.0>http://aries.apache.org/xmlns/jpa/v2.0.0 >>>>>>> <http://aries.apache.org/xmlns/jpa/v2.0.0>"> <!-- tjoho -->* >>>>>>> >>>>>>> * <bean id="messageService" >>>>>>> class="se.digia.connect.iso20022.history.impl.MessageHistoryService">* >>>>>>> * <tx:transaction method="*" value="RequiresNew" />* >>>>>>> * <jpa:context property="entityManager" unitname="iso20022PU" />* >>>>>>> * </bean>* >>>>>>> >>>>>>> * <service ref="messageService" >>>>>>> interface="se.digia.connect.iso20022.history.api.IMessageHistoryService" >>>>>>> />* >>>>>>> >>>>>>> *</blueprint>* >>>>>>> >>>>>>> On Karaf startup I get the following error: >>>>>>> >>>>>>> *2016-07-06 09:46:42,154 | ERROR | rint Extender: 2 | >>>>>>> BlueprintContainerImpl | container.BlueprintContainerImpl >>>>>>> 437 | >>>>>>> Unable to start blueprint container for bundle >>>>>>> se.digia.connect.services.filetransfer.history-db/2.8.0.SNAPSHOT* >>>>>>> *org.osgi.service.blueprint.container.ComponentDefinitionException: >>>>>>> Unable to validate xml* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.parser.Parser.validate(Parser.java:349)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.parser.Parser.validate(Parser.java:336)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:343)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:276)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * at >>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_74]* >>>>>>> * at >>>>>>> java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_74]* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * at >>>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_74]* >>>>>>> * at >>>>>>> java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_74]* >>>>>>> * at >>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)[:1.8.0_74]* >>>>>>> * at >>>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.8.0_74]* >>>>>>> * at >>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_74]* >>>>>>> * at >>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_74]* >>>>>>> * at java.lang.Thread.run(Thread.java:745)[:1.8.0_74]* >>>>>>> *Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: >>>>>>> The matching wildcard is strict, but no declaration can be found for >>>>>>> element 'jpa:context'.* >>>>>>> * at >>>>>>> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown >>>>>>> Source)[:]* >>>>>>> * at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown >>>>>>> Source)[:]* >>>>>>> * at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown >>>>>>> Source)[:]* >>>>>>> * at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown >>>>>>> Source)[:]* >>>>>>> * at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.jaxp.validation.DOMValidatorHelper.beginNode(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown >>>>>>> Source)[:]* >>>>>>> * at >>>>>>> org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown >>>>>>> Source)[:]* >>>>>>> * at javax.xml.validation.Validator.validate(Unknown Source)[:2.7.0]* >>>>>>> * at >>>>>>> org.apache.aries.blueprint.parser.Parser.validate(Parser.java:346)[25:org.apache.aries.blueprint.core:1.6.1]* >>>>>>> * ... 14 more* >>>>>>> >>>>>>> I read at <http://aries.apache.org/modules/jpaproject.html> >>>>>>> http://aries.apache.org/modules/jpaproject.html that annotations >>>>>>> can now be used for the injection of the perstence unit context. But, >>>>>>> is it >>>>>>> the only way to do it? Is there no way to do it using the jpa:context >>>>>>> element anymore? >>>>>>> >>>>>>> /Bengt >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Christian Schneiderhttp://www.liquid-reality.de >>>>>>> >>>>>>> Open Source Architecthttp://www.talend.com >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Christian Schneiderhttp://www.liquid-reality.de >>>>> >>>>> Open Source Architecthttp://www.talend.com >>>>> >>>>> >>>> >>> >> >> >> -- >> -- >> Christian Schneider >> http://www.liquid-reality.de >> <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.liquid-reality.de> >> >> Open Source Architect >> http://www.talend.com >> <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.talend.com> >> > > > > -- > Christian Schneiderhttp://www.liquid-reality.de > > Open Source Architecthttp://www.talend.com > >