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
<[email protected] <mailto:[email protected]>>:
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 <[email protected]
<mailto:[email protected]>>:
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 <[email protected]
<mailto:[email protected]>>:
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
<[email protected] <mailto:[email protected]>>:
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
<[email protected] <mailto:[email protected]>>:
OK - thanks Christian. Will try the annotations.
/Bengt
2016-07-06 10:18 GMT+02:00 Christian Schneider
<[email protected]
<mailto:[email protected]>>:
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"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/
/xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"/
/xmlns:jpa="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"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/
/xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.2.0"/
/xmlns:jpa="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
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 Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://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 Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com