> On 11 May 2018, at 15:53, Alex Soto <alex.s...@envieta.com> wrote:
> 
> Thanks for the help Tim.
> 
>> On May 11, 2018, at 10:24 AM, Tim Ward <tim.w...@paremus.com 
>> <mailto:tim.w...@paremus.com>> wrote:
>> 
>> Aries JPA can work with either JPA 2.0, or JPA 2.1, and is tested with 
>> EclipseLink, Hibernate and OpenJPA. 
> 
> I am looking at these integration tests, but the test itself does not uses 
> the feature, as defined in the feature.xml file.  It loads a different 
> version of javax.persistence for the OpenJPA integration test. So unless you 
> are an AriesJPA developer, you would not know about this.  How would anybody 
> figure this out? 
> 
> @Configuration
>     public Option[] configuration() {
>         return new Option[] {
>             baseOptions(), //
>             ariesJpa20(), //
>             jta11Bundles(), // Openjpa currently does not work with jta 1.2. 
> See https://issues.apache.org/jira/browse/OPENJPA-2607 
> <https://issues.apache.org/jira/browse/OPENJPA-2607>
>             openJpa(), //
>             derbyDSF(), //
>             testBundle()
>         };
> 
> Then the example does not use OpenJPA, but Hibernate, so there is no 
> information on how to make it work with OpenJPA out of the box.  
> One option here would be to have multiple specific features: jpa-hibernate, 
> jpa-openjpa, etc.

Yes, that’s pretty much what is needed, but Karaf would be the place to create 
and maintain those features.

> 
>> 
>> It is highly recommended that you use the JavaJPA contract in any of your 
>> bundles using JPA so that you are isolated from the API version number 
>> changes in the future (most Java EE specifications make major version bumps 
>> quite regularly).
>> 
> 
> I have this in my bundle’s osgi.bnd file:
> 
>       -contract: JavaJPA
> 
> Is that all that is needed?  It does not indicate version.

That is most of what is needed - you also need to be compiling against a 
library which offers the contract (for example the spec bundles provided by 
Aries). If you do that you will end up with Import-Package statements for 
javax.persistence (et al) with no version, but also a Require-Capability: 
osgi.contract;filter:=(&(osgi.contract=JavaJPA)(version=XXX)) where the XXX is 
determined from the Provide-Capability of the bundle you compiled against.

> 
>> The real problem is that the AriesJPA feature shouldn’t exist as a 
>> standalone thing (it doesn’t make sense to deploy it on its own). It should 
>> come for free when you install the OpenJPA (or Hibernate, or EclipseLink) 
>> feature, using whichever API they have deployed.
> 
> Exactly, this is harder than it should be.  When I install a feature, I 
> expect the feature to bring in all that is needed, not having to chase down 
> all these dependencies.
> Is there an intention to take this approach any time soon?

I’m afraid that would be a decision for the Karaf maintainers rather than me. 
I’m only chipping in because I’m an Aries PMC member who deals quite a bit with 
the JPA and Tx Control components.

Best Regards,

Tim Ward

> 
> 
> 
> 
>> 
>> Tim
>> 
>> 
>>> On 11 May 2018, at 14:23, Alex Soto <alex.s...@envieta.com 
>>> <mailto:alex.s...@envieta.com>> wrote:
>>> 
>>> I had accidentally replied directly to Tim.  Repeating here:
>>> 
>>> Let me see if I understand this correctly:
>>> 
>>> Karaf version 4.2.0 enterprise repository depends on version 2.6.1 of 
>>> AriesJPA.
>>> AriesJPA version 2.6.1 depends on  javax.persistence version 2.1.0.
>>> Karaf’s enterprise repository defines a openjpa feature that depends on 
>>> OpenJPA version 2.4.2.
>>> OpenJPA version 2.4.2 depends on javax.persistence version 2.0.0.
>>>  
>>> Is this correct?
>>> Is there is a bug in the Enterprise repository mixing incompatible versions 
>>> of OpenJPA and AriesJPA?
>>> Is the problem in OpenJPA not declaring the version it depends on?
>>> 
>>> Inspecting in Karaf’s console:
>>> 
>>> karaf@root()> list
>>> 
>>>  97 │ Active  │  80 │ 2.4.2               │ OpenJPA Aggregate Ja
>>> 
>>> karaf@root()> bundle:requirements 97
>>> 
>>> osgi.wiring.package; 
>>> (&(osgi.wiring.package=javax.persistence)(version>=1.1.0)(!(version>=2.1.0)))
>>>  resolved by:
>>>    osgi.wiring.package; javax.persistence 2.0.0 from 
>>> org.apache.geronimo.specs.geronimo-jpa_2.0_spec [66]
>>> 
>>> 
>>> karaf@root()> feature:info jpa
>>> Feature jpa 2.6.1
>>> Description:
>>>   OSGi Persistence Container
>>> Details:
>>>   JPA implementation provided by Apache Aries JPA 2.x. NB: this feature 
>>> doesn't provide the JPA engine, you have to install one by yourself 
>>> (OpenJPA for instance)
>>> Feature has no configuration
>>> Feature has no configuration files
>>> Feature has no dependencies.
>>> Feature contains followed bundles:
>>>   mvn:org.eclipse.persistence/javax.persistence/2.1.0
>>>   mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1
>>>   mvn:org.osgi/org.osgi.service.jdbc/1.0.0
>>>   mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2 start-level=30
>>>   mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/2.6.1 start-level=30
>>>   mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/2.6.1 
>>> start-level=30
>>>   mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/2.6.1 start-level=30
>>> 
>>> Best regards,
>>> Alex soto
>>> 
>>> 
>>> 
>>> 
>>>> On May 10, 2018, at 5:45 PM, Tim Ward <tim.w...@paremus.com 
>>>> <mailto:tim.w...@paremus.com>> wrote:
>>>> 
>>>> OpenJPA 2.4.x supports JPA 2.0 (not 2.1) you can get the API you need from 
>>>> Apache Aries, as well as the JPA container. This is also all used and 
>>>> tested with Aries Transaction Control, so you can look at the bundles used 
>>>> there.
>>>> 
>>>> Best Regards,
>>>> 
>>>> Tim
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>>> On 10 May 2018, at 20:43, Jean-Baptiste Onofré <j...@nanthrax.net 
>>>>> <mailto:j...@nanthrax.net>> wrote:
>>>>> 
>>>>> Anyway, let me check if OpenJPA 2.4.2 supports JPA 2.1 (it's what I 
>>>>> thought).
>>>>> 
>>>>> Regards
>>>>> JB
>>>>> 
>>>>>> On 05/10/2018 09:36 PM, Alex Soto wrote:
>>>>>> I am sorry I only see one version:
>>>>>> 
>>>>>> karaf@root()> feature:list | grep jpa
>>>>>> openjpa                                  │ 2.4.2            │          │
>>>>>> Started     │ enterprise-4.2.0                  │ Apache OpenJPA 2.4.x
>>>>>> persistence engine support
>>>>>> camel-jpa                                │ 2.21.1           │       
>>>>>>  │ Uninstalled │ camel-2.21.1                      │
>>>>>> deltaspike-jpa                           │ 1.4.2            │       
>>>>>>  │ Uninstalled │ org.ops4j.pax.cdi-1.0.0.RC2       │ Apache Deltaspike 
>>>>>> jpa support
>>>>>> deltaspike-jpa                           │ 1.8.1            │       
>>>>>>  │ Uninstalled │ org.ops4j.pax.cdi-1.0.0           │ Apache Deltaspike 
>>>>>> jpa support
>>>>>> jpa                                      │ 2.6.1            │          │
>>>>>> Started     │ aries-jpa-2.6.1                   │ OSGi Persistence 
>>>>>> Container
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Is there a repository I need to add?  
>>>>>> 
>>>>>> Best regards,
>>>>>> Alex soto
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On May 10, 2018, at 3:25 PM, Jean-Baptiste Onofré <j...@nanthrax.net 
>>>>>>> <mailto:j...@nanthrax.net>
>>>>>>> <mailto:j...@nanthrax.net <mailto:j...@nanthrax.net>>> wrote:
>>>>>>> 
>>>>>>> Karaf provides both jpa 1.x and  2.x feature.
>>>>>>> 
>>>>>>> You just have to  install the right one depending of the engine you are 
>>>>>>> using:
>>>>>>> 
>>>>>>> feature:install jpa/1.x
>>>>>>> feature:install  openjpa
>>>>>>> 
>>>>>>> Regards
>>>>>>> JB
>>>>>>> 
>>>>>>>> On 05/10/2018 09:23 PM, Alex Soto wrote:
>>>>>>>> Thanks JB,
>>>>>>>> 
>>>>>>>> I was hoping to use whatever was defined in the Karaf’s enterprise 
>>>>>>>> feature,
>>>>>>>> but if that doesn’t work ,then which version do I need?  I am afraid 
>>>>>>>> if I
>>>>>>>> deviate from the versions selected by Kara’s Enterprise feature I will 
>>>>>>>> get
>>>>>>>> into more version mismatch problems.   Also what do I put in my POM for
>>>>>>>> javax.persistence dependency?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Best regards,
>>>>>>>> Alex soto
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On May 10, 2018, at 3:16 PM, Jean-Baptiste Onofré <j...@nanthrax.net 
>>>>>>>>> <mailto:j...@nanthrax.net>
>>>>>>>>> <mailto:j...@nanthrax.net <mailto:j...@nanthrax.net>>> wrote:
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> OpenJPA 2.x still uses JPA 1.x. By default, jpa feature will provide 
>>>>>>>>> 2.x
>>>>>>>>> version.
>>>>>>>>> 
>>>>>>>>> You should specify the jpa feature version.
>>>>>>>>> 
>>>>>>>>> Regards
>>>>>>>>> JB
>>>>>>>>> 
>>>>>>>>>> On 05/10/2018 09:08 PM, Alex Soto wrote:
>>>>>>>>>> Hello,
>>>>>>>>>> 
>>>>>>>>>> I am running Karaf 4.2.0, trying to setup a project with OpenJPA.  I 
>>>>>>>>>> am getting
>>>>>>>>>> error:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 14:44:07.799 ERROR [FelixDispatchQueue] FrameworkEvent ERROR
>>>>>>>>>> - org.apache.aries.jpa.container
>>>>>>>>>> java.lang.ClassCastException:
>>>>>>>>>> org.apache.openjpa.persistence.PersistenceProviderImpl
>>>>>>>>>> cannot be cast to javax.persistence.spi.PersistenceProvider
>>>>>>>>>> at
>>>>>>>>>> org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:84)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:44)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> 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.trackInitial(AbstractTracked.java:183)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at 
>>>>>>>>>> org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:318) 
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at 
>>>>>>>>>> org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261) 
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.aries.jpa.container.impl.PersistenceBundleTracker.trackProvider(PersistenceBundleTracker.java:103)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.aries.jpa.container.impl.PersistenceBundleTracker.findPersistenceUnits(PersistenceBundleTracker.java:87)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:66)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:39)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> 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.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) 
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at org.apache.felix.framework.Felix.startBundle(Felix.java:2174) 
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at 
>>>>>>>>>> org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1373)
>>>>>>>>>>  ~[?:?]
>>>>>>>>>> at
>>>>>>>>>> org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
>>>>>>>>>> ~[?:?]
>>>>>>>>>> at java.lang.Thread.run(Thread.java:748) [?:?]
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> This looks like version mismatch.  I am loading the following 
>>>>>>>>>> packages in my
>>>>>>>>>> feature:
>>>>>>>>>> 
>>>>>>>>>> <feature>aries-blueprint</feature>
>>>>>>>>>> <feature>war</feature>
>>>>>>>>>> <feature>camel-core</feature>
>>>>>>>>>> <feature>camel-servlet</feature>
>>>>>>>>>> <feature>camel-blueprint</feature>
>>>>>>>>>> <feature>camel-jackson</feature>
>>>>>>>>>> <feature>jndi</feature>
>>>>>>>>>> <feature>jdbc</feature>
>>>>>>>>>> <feature>transaction</feature>
>>>>>>>>>> <feature>jpa</feature>
>>>>>>>>>> <feature>openjpa</feature>
>>>>>>>>>> <feature>pax-jdbc-mariadb</feature>
>>>>>>>>>>       <feature>pax-jdbc-config</feature>
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> One thing I don’t know if is correct is the javax.persistence 
>>>>>>>>>> dependency in
>>>>>>>>>> my POM:
>>>>>>>>>> 
>>>>>>>>>> <dependency>
>>>>>>>>>>           <groupId>org.eclipse.persistence</groupId>
>>>>>>>>>>           <artifactId>javax.persistence</artifactId>
>>>>>>>>>>           <version>2.0.5</version>
>>>>>>>>>>           <scope>provided</scope>
>>>>>>>>>>       </dependency>
>>>>>>>>>> 
>>>>>>>>>> Any hints?
>>>>>>>>>> 
>>>>>>>>>> Best regards,
>>>>>>>>>> Alex soto
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> -- 
>>>>>>>>> Jean-Baptiste Onofré
>>>>>>>>> jbono...@apache.org <mailto:jbono...@apache.org> 
>>>>>>>>> <mailto:jbono...@apache.org <mailto:jbono...@apache.org>>
>>>>>>>>> http://blog.nanthrax.net <http://blog.nanthrax.net/>
>>>>>>>>> Talend - http://www.talend.com <http://www.talend.com/>
>>>>>>>> 
>>>>>>> 
>>>>>>> -- 
>>>>>>> Jean-Baptiste Onofré
>>>>>>> jbono...@apache.org <mailto:jbono...@apache.org> 
>>>>>>> <mailto:jbono...@apache.org <mailto:jbono...@apache.org>>
>>>>>>> http://blog.nanthrax.net <http://blog.nanthrax.net/>
>>>>>>> Talend - http://www.talend.com <http://www.talend.com/>
>>>>>> 
>>>>> 
>>>>> -- 
>>>>> Jean-Baptiste Onofré
>>>>> jbono...@apache.org <mailto:jbono...@apache.org>
>>>>> http://blog.nanthrax.net <http://blog.nanthrax.net/>
>>>>> Talend - http://www.talend.com <http://www.talend.com/>
>>> 
>> 
> 

Reply via email to