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>" xmlns:xsi="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>" xmlns:tx="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>">* * <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>" xmlns:xsi="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>" xmlns:tx="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>"> <!-- 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
