Yes, it is simple to add this to your bundle, but what do you do when the 
JavaJPA requirement is not met?  
How do you troubleshoot this error?

Error executing command: Error installing bundles:
 Unable to start bundle 
mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.7.0-SNAPSHOT:
 org.osgi.framework.BundleException: Unable to resolve 
org.apache.aries.jpa.example.tasklist.model [103](R 103.0): missing requirement 
[org.apache.aries.jpa.example.tasklist.model [103](R 103.0)] osgi.contract; 
(&(osgi.contract=JavaJPA)(version=2.1.0)) Unresolved requirements: 
[[org.apache.aries.jpa.example.tasklist.model [103](R 103.0)] osgi.contract; 
(&(osgi.contract=JavaJPA)(version=2.1.0))]
 


Best regards,
Alex soto



> On Nov 22, 2017, at 5:31 AM, Timothy Ward <[email protected]> wrote:
> 
> The contract requirement is the recommended way to use the JPA API in OSGi. 
> The versioning applied by most JSRs (JPA included) is not semantic, and so 
> cannot be relied upon (for example JPA 2.0 is backward compatible with 1.0, 
> Servlet 4 is backward compatible with 3.1).
> 
> Portable Java Contract definitions have been around for a long time (several 
> years), and the latest round of OSGi specifications are using them to 
> guarantee compatibility between clients and implementations. As Aries JPA 
> will be the reference implementation of the OSGi JPA service in OSGi Release 
> 7 there was some work done to ensure that Aries JPA properly honours the JPA 
> contract (release 2.7.0 of Aries JPA will be the RI release). This release is 
> tested (and working) with Hibernate, EclipseLink and OpenJPA.
> 
> Requiring a contract definition is very simple when using bnd, or a bnd-based 
> tool. You can simply add:
> 
> -contract: JavaJPA
> 
> to your bnd configuration and it will make sure that your bundle uses the 
> contract correctly.
> 
> Regards,
> 
> Tim Ward
> 
> OSGi IoT Expert Group Chair
> [email protected] <mailto:[email protected]>
> 
> 
>> On 22 Nov 2017, at 09:20, João Assunção <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> I use Hibernate as the persistence engine and the following features:
>> 
>> * jdbc
>> * pax-jdbc-h2
>> * pax-jdbc-postgresql
>> * jpa
>> * hibernate
>> 
>> In other projects I used eclipselink and they both work great. 
>> 
>> I noticed the missing requirement osgi.contract=JavaJPA. I don't use that in 
>> my JPA bundles, and after some investigation I noticed it was introduced 
>> recently in the snapshot version of aries JPA. 
>> 
>> Try to use the examples from aries.jpa version 2.6.1
>> 
>> 
>> João Assunção
>> 
>> Email: [email protected] <mailto:[email protected]>
>> Mobile: +351 916968984
>> Phone: +351 211933149
>> Web: www.exploitsys.com <http://www.exploitsys.com/>
>> 
>> 
>> 
>> On Tue, Nov 21, 2017 at 4:24 PM, Jean-Baptiste Onofré <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Let me take a look'm. I was swamped on meetings today.
>> 
>> Regards
>> JB
>> On Nov 21, 2017, at 17:23, Alex Soto <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Thank you Francois, I tried EclipseLink, but it still doesn’t work.  I am 
>> doing all this interactively on a fresh Karaf installation.  In my case 
>> since I do  not have an actual database server,  so I am using H2.  I 
>> installed the following features:
>> 
>> feature:install jdbc
>> feature:install jndi
>> feature:install jpa
>> feature:install transaction
>> feature:install eclipselink
>> feature:install pax-jdbc
>> feature:install pax-jdbc-config
>> feature:install pax-jdbc-h2 
>> feature:install pax-jdbc-pool-dbcp2
>> 
>> list
>> 
>> START LEVEL 100 , List Threshold: 50
>>  ID │ State     │ Lvl │ Version                 │ Name
>> ─────────────
>>  28 │ Active    │  80 │ 4.1.3                   │ Apache Karaf :: OSGi 
>> Services :: Event
>>  53 │ Active    │  80 │ 1.9.2.1                 │ Apache ServiceMix :: 
>> Bundles :: jasypt
>>  54 │ Active    │  80 │ 1.5.0                   │ OPS4J Base - Service 
>> Provider Access
>>  55 │ Active    │  80 │ 1.1.0                   │ OPS4J Pax JDBC Generic 
>> Driver Extender
>>  56 │ Active    │  80 │ 1.1.0                   │ OPS4J Pax JDBC Config
>>  57 │ Active    │  80 │ 1.1.0                   │ OPS4J Pax JDBC Pooling 
>> Support Base
>>  58 │ Active    │  80 │ 1.0.0.201505202023      │ 
>> org.osgi:org.osgi.service.jdbc
>>  59 │ Active    │  80 │ 4.1.3                   │ Apache Karaf :: JDBC :: 
>> Core
>>  67 │ Active    │  80 │ 3.0.0                   │ Expression Language 3.0 API
>>  68 │ Active    │  80 │ 1.2.0                   │ CDI APIs
>>  69 │ Active    │  80 │ 1.2                     │ javax.interceptor API
>>  70 │ Active    │  80 │ 1.2                     │ javax.transaction API
>>  71 │ Active    │  80 │ 2.6.1                   │ Apache Aries JPA Container 
>> API
>>  72 │ Active    │  80 │ 2.6.1                   │ Apache Aries JPA blueprint
>>  73 │ Active    │  80 │ 2.6.1                   │ Apache Aries JPA container
>>  74 │ Active    │  80 │ 2.6.1                   │ Apache Aries JPA support
>>  77 │ Active    │  80 │ 1.6.0                   │ Commons Pool
>>  78 │ Active    │  80 │ 1.0.2                   │ Apache Felix Coordinator 
>> Service
>>  79 │ Active    │  80 │ 1.1.1                   │ geronimo-jms_1.1_spec
>>  81 │ Active    │  80 │ 1.2                     │ geronimo-servlet_2.5_spec
>>  83 │ Active    │  80 │ 1.7.0.6                 │ Apache ServiceMix :: 
>> Bundles :: ant
>>  84 │ Active    │  80 │ 1.4.0.3                 │ Apache ServiceMix :: 
>> Bundles :: commons-dbcp
>>  85 │ Active    │  80 │ 1.0.0.2                 │ Apache ServiceMix :: 
>> Bundles :: javax.inject
>>  88 │ Active    │  80 │ 1.1.1                   │ Apache Aries Transaction 
>> Blueprint
>>  89 │ Active    │  80 │ 2.1.0                   │ Apache Aries Transaction 
>> Blueprint
>>  90 │ Active    │  80 │ 1.3.3                   │ Apache Aries Transaction 
>> Manager
>>  91 │ Active    │  80 │ 2.1.0.v201304241213     │ Java Persistence API 2.1
>>  92 │ Active    │  80 │ 2.6.1                   │ Apache Aries JPA Container 
>> adapter for EclipseLink
>>  93 │ Active    │  80 │ 3.2.0.v201302191141     │ EclipseLink ANTLR
>>  94 │ Active    │  80 │ 5.0.1.v201405080102     │ EclipseLink ASM
>>  95 │ Active    │  80 │ 2.6.4.v20160829-44060b6 │ EclipseLink Core
>>  96 │ Active    │  80 │ 2.6.4.v20160829-44060b6 │ EclipseLink JPA
>>  97 │ Active    │  80 │ 2.6.4.v20160829-44060b6 │ EclipseLink Hermes Parser
>>  98 │ Active    │  80 │ 1.3.172                 │ H2 Database Engine
>>  99 │ Active    │  80 │ 2.1.1                   │ Apache Commons DBCP
>> 100 │ Active    │  80 │ 2.4.2                   │ Apache Commons Pool
>> 101 │ Active    │  80 │ 3.2.4.1                 │ Apache ServiceMix :: 
>> Bundles :: cglib
>> 102 │ Active    │  80 │ 1.1.0                   │ OPS4J Pax JDBC Pooling 
>> DBCP2
>> 103 │ Installed │  80 │ 2.7.0.SNAPSHOT          │ Apache Aries JPA example 
>> tasklist model
>> 
>> 
>> Copied file:   org.ops4j.datasource-tasklist.cfg. to etc containing:
>> 
>> osgi.jdbc.driver.name <http://osgi.jdbc.driver.name/>=H2
>> databaseName=tasklist;create=true
>> dataSourceName=tasklist
>> pool=dbcp2
>> xa=true
>> jdbc.pool.maxTotal=8
>> 
>> No data source is created, either command:  service:list DataSource, or  
>> jdbc:ds-list  don't show any data source.
>> Trying to deploy Aries-example jar 
>> 
>>  install -s 
>> mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.7.0-SNAPSHOT
>> 
>> Produces Error:
>> 
>> Error executing command: Error installing bundles:
>>  Unable to start bundle 
>> mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.7.0-SNAPSHOT:
>>  org.osgi.framework.BundleException: Unable to resolve 
>> org.apache.aries.jpa.example.tasklist.model [103](R 103.0): missing 
>> requirement [org.apache.aries.jpa.example.tasklist.model [103](R 103.0)] 
>> osgi.contract; (&(osgi.contract=JavaJPA)(version=2.1.0)) Unresolved 
>> requirements: [[org.apache.aries.jpa.example.tasklist.model [103](R 103.0)] 
>> osgi.contract; (&(osgi.contract=JavaJPA)(version=2.1.0))]
>> 
>> 
>> I am at evaluation/proof-of-concept stage, just trying to figure out what 
>> works out-of-the-box, so I don’t have a project created, I am just using the 
>> Aries JPA example.  It does not look good as a viable approach so far.
>> 
>> Best regards, 
>> Alex soto 
>> 
>> 
>> 
>>> On Nov 21, 2017, at 10:44 AM, Francois Papon < [email protected] 
>>> <mailto:[email protected]>> wrote:
>>> 
>>> Hi,
>>> 
>>> I use EclipseLink for JPA implementation in a custo Karaf distribution and 
>>> it work's well.
>>> 
>>> In my persistence feature pom I have this dependencies :
>>> 
>>>         <dependency>
>>>             <groupId>org.osgi</groupId>
>>>             <artifactId>org.osgi.core</artifactId>
>>>             <scope>provided</scope>
>>>         </dependency>
>>> 
>>>         <dependency>
>>>             <groupId>org.osgi</groupId>
>>>             <artifactId>osgi.cmpn</artifactId>
>>>             <scope>provided</scope>
>>>         </dependency>
>>>         <!-- JPA -->
>>>         <dependency>
>>>             <groupId>org.eclipse.persistence</groupId>
>>>             <artifactId>javax.persistence</artifactId>
>>>             <scope>provided</scope>
>>>         </dependency>
>>>         <dependency>
>>>             <groupId>org.apache.aries.jpa</groupId>
>>>             <artifactId>org.apache.aries.jpa.api</artifactId>
>>>             <scope>provided</scope>
>>>         </dependency>
>>> 
>>> and in my assembly this feature on boot :
>>>                         <feature>jdbc</feature>
>>>                         <feature>jndi</feature>
>>>                         <feature>jpa</feature>
>>>                        
>>>                         <feature>transaction</feature>
>>>                         <feature>eclipselink</feature>                 
>>> 
>>>                         <feature>pax-jdbc</feature>
>>>                         <feature>pax-jdbc-config</feature>
>>>                         <feature>pax-jdbc-pool-hikaricp</feature>
>>>                         <feature>pax-jdbc-pool-aries</feature>
>>>                         <feature>pax-jdbc-postgresql</feature>
>>> 
>>> in the etc folder the database config file 
>>> "org.ops4j.datasource-mydatasource.cfg" : 
>>> 
>>> osgi.jdbc.driver.class=org.postgresql.Driver 
>>> dataSourceName=my-datasource 
>>> databaseName=my-database 
>>> serverName=172.17.0.2 
>>> portNumber=5432 
>>> user=dbuser 
>>> password=dbpassword 
>>> 
>>> Hope this help. 
>>> 
>>> Le 21/11/2017 à 17:57, Alex Soto a écrit : 
>>>> Does anybody know a good, simple step by step tutorial on how to quickly 
>>>> start using JPA 2.1 with Karaf 4.1.3?
>>>> At this point I am not requiring any specific JPA implementation/version 
>>>> (Hibernate vs. any other).
>>>> So far using Karaf’s default has not worked for me.  I would expect 
>>>> Karaf’s defaults should work out our the box.
>>>> 
>>>> 
>>>>> On Nov 20, 2017, at 2:54 PM, Jean-Baptiste Onofré < [email protected] 
>>>>> <mailto:[email protected]>> wrote:
>>>>> 
>>>>> Ok, I see hibernate now. Let me check if I see the jpa spec bundle. 
>>>>> 
>>>>> Regards 
>>>>> JB
>>>>> On Nov 20, 2017, at 20:42, Alex Soto < [email protected] 
>>>>> <mailto:[email protected]>> wrote:
>>>>> Thank you JB for the quick response.  
>>>>> OK, so I installed the jpa feature:
>>>>> 
>>>>>  feature:install jpa
>>>>> 
>>>>> karaf@root()> list
>>>>> START LEVEL 100 , List Threshold: 50
>>>>>  ID │ State     │ Lvl │ Version            │ Name
>>>>> ────┼───────────┼─────┼────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>>>>>  28 │ Active    │  80 │ 4.1.3              │ Apache Karaf :: OSGi 
>>>>> Services :: Event
>>>>>  52 │ Active    │  80 │ 1.3.0              │ ClassMate
>>>>>  53 │ Active    │  80 │ 3.20.0.GA <http://3.20.0.ga/>          │ Javassist
>>>>>  54 │ Active    │  80 │ 1.2                │ javax.interceptor API
>>>>>  55 │ Active    │  80 │ 1.6.6              │ Byte Buddy (without 
>>>>> dependencies)
>>>>>  56 │ Active    │  80 │ 2.7.7.5            │ Apache ServiceMix :: Bundles 
>>>>> :: antlr
>>>>>  57 │ Active    │  80 │ 1.6.1.5            │ Apache ServiceMix :: Bundles 
>>>>> :: dom4j
>>>>>  58 │ Active    │  80 │ 5.0.1.Final        │ hibernate-commons-annotations
>>>>>  59 │ Active    │  80 │ 5.2.8.Final        │ hibernate-core
>>>>>  60 │ Active    │  80 │ 1.0.0.Final        │ hibernate-jpa-2.1-api
>>>>>  61 │ Active    │  80 │ 5.2.8.Final        │ hibernate-osgi
>>>>>  62 │ Active    │  80 │ 2.0.3.Final        │ Java Annotation Indexer
>>>>>  63 │ Active    │  80 │ 3.3.0.Final        │ JBoss Logging 3
>>>>>  65 │ Active    │  80 │ 1.9.2.1            │ Apache ServiceMix :: Bundles 
>>>>> :: jasypt
>>>>>  66 │ Active    │  80 │ 1.1.0              │ OPS4J Pax JDBC Config
>>>>>  67 │ Active    │  80 │ 1.1.0              │ OPS4J Pax JDBC Pooling 
>>>>> Support Base
>>>>>  68 │ Active    │  80 │ 1.0.0.201505202023 │ 
>>>>> org.osgi:org.osgi.service.jdbc
>>>>>  69 │ Active    │  80 │ 1.3.172            │ H2 Database Engine
>>>>> 117 │ Active    │  80 │ 1.2.0              │ CDI APIs
>>>>> 118 │ Active    │  80 │ 1.2                │ javax.transaction API
>>>>> 119 │ Active    │  80 │ 1.1.1              │ Apache Aries Transaction 
>>>>> Blueprint
>>>>> 120 │ Active    │  80 │ 2.1.0              │ Apache Aries Transaction 
>>>>> Blueprint
>>>>> 121 │ Active    │  80 │ 1.3.3              │ Apache Aries Transaction 
>>>>> Manager
>>>>> 122 │ Active    │  80 │ 1.0.2              │ Apache Felix Coordinator 
>>>>> Service
>>>>> 123 │ Active    │  80 │ 1.0.0.2            │ Apache ServiceMix :: Bundles 
>>>>> :: javax.inject
>>>>> 124 │ Installed │  80 │ 2.7.0.SNAPSHOT     │ Apache Aries JPA example 
>>>>> tasklist model
>>>>> 125 │ Active    │  80 │ 2.6.1              │ Apache Aries JPA Container 
>>>>> API
>>>>> 126 │ Active    │  80 │ 2.6.1              │ Apache Aries JPA blueprint
>>>>> 127 │ Active    │  80 │ 2.6.1              │ Apache Aries JPA container
>>>>> 128 │ Active    │  80 │ 2.6.1              │ Apache Aries JPA support
>>>>> 129 │ Active    │  80 │ 1.1.1              │ geronimo-jms_1.1_spec
>>>>> 130 │ Active    │  80 │ 1.7.0.6            │ Apache ServiceMix :: Bundles 
>>>>> :: antThe same problem persists
>>>>> 
>>>>> And
>>>>> 
>>>>> karaf@root()> bundle:diag 124
>>>>> Apache Aries JPA example tasklist model (124)
>>>>> ---------------------------------------------
>>>>> Status: Installed
>>>>> Unsatisfied Requirements:
>>>>> [org.apache.aries.jpa.example.tasklist.model [124](R 124.0)] 
>>>>> osgi.service; (osgi.jndi.service.name 
>>>>> <http://osgi.jndi.service.name/>=tasklist)
>>>>> [org.apache.aries.jpa.example.tasklist.model [124](R 124.0)] 
>>>>> osgi.contract; (&(osgi.contract=JavaJPA)(version=2.1.0))
>>>>> Declarative Services
>>>>> 
>>>>> 
>>>>> Or is it something else I need to install?
>>>>> 
>>>>> Best regards, 
>>>>> 
>>>>> Alex soto 
>>>>> [email protected] <mailto:[email protected]> 
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Nov 20, 2017, at 2:31 PM, Jean-Baptiste Onofré < [email protected] 
>>>>>> <mailto:[email protected]>> wrote:
>>>>>> 
>>>>>> I don't see the jpa engine in your bundle list ? Openjpa, hibernate, 
>>>>>> eclipselink ? 
>>>>>> The jpa version depends of the engine. 
>>>>>> 
>>>>>> Regards 
>>>>>> JB
>>>>>> On Nov 20, 2017, at 20:09, Alex Soto < [email protected] 
>>>>>> <mailto:[email protected]>> wrote:
>>>>>> Hello,
>>>>>> 
>>>>>> This is my first attempt to use JPA with Karaf, so I am trying to follow 
>>>>>> example from   https://github.com/apache/aries-jpa 
>>>>>> <https://github.com/apache/aries-jpa> using Karaf 4.1.3, so far 
>>>>>> unsuccessfully. 
>>>>>> On a clean Karaf I have installed the following:
>>>>>> 
>>>>>>  feature:install hibernate-orm
>>>>>>   feature:install pax-jdbc-config
>>>>>>  feature:install pax-jdbc-h2
>>>>>>  feature:install http-whiteboard
>>>>>>  feature:install scr
>>>>>>  feature:install transaction
>>>>>> 
>>>>>> Then I copied the data source config file 
>>>>>> org.ops4j.datasource-tasklist.cfg to the Karaf’s etc directory.
>>>>>> 
>>>>>> Now, when I install the first Example bundle:
>>>>>> 
>>>>>> install -s 
>>>>>> mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.7.0-SNAPSHOT
>>>>>> Error executing command: Error installing bundles: 
>>>>>>  Unable to start bundle 
>>>>>> mvn:org.apache.aries.jpa.example/org.apache.aries.jpa.example.tasklist.model/2.7.0-SNAPSHOT:
>>>>>>  org.osgi.framework.BundleException: Unable to resolve 
>>>>>> org.apache.aries.jpa.example.tasklist.model [124](R 124.0): missing 
>>>>>> requirement [org.apache.aries.jpa.example.tasklist.model [124](R 124.0)] 
>>>>>> osgi.contract; (&(osgi.contract=JavaJPA)(version=2.1.0)) Unresolved 
>>>>>> requirements: [[org.apache.aries.jpa.example.tasklist.model [124](R 
>>>>>> 124.0)] osgi.contract; (&(osgi.contract=JavaJPA)(version=2.1.0))]
>>>>>> 
>>>>>> list
>>>>>> START LEVEL 100 , List Threshold: 50
>>>>>>  ID │ State  │ Lvl │ Version            │ Name
>>>>>> ────┼────────┼─────┼────────────────────┼───────────────────────────────────────────
>>>>>>  28 │ Active │  80 │ 4.1.3              │ Apache Karaf :: OSGi Services 
>>>>>> :: Event
>>>>>>  52 │ Active │  80 │ 1.3.0              │ ClassMate
>>>>>>  53 │ Active │  80 │ 3.20.0.GA <http://3.20.0.ga/>          │ Javassist
>>>>>>  54 │ Active │  80 │ 1.2                │ javax.interceptor API
>>>>>>  55 │ Active │  80 │ 1.6.6              │ Byte Buddy (without 
>>>>>> dependencies)
>>>>>>  56 │ Active │  80 │ 2.7.7.5            │ Apache ServiceMix :: Bundles 
>>>>>> :: antlr
>>>>>>  57 │ Active │  80 │ 1.6.1.5            │ Apache ServiceMix :: Bundles 
>>>>>> :: dom4j
>>>>>>  58 │ Active │  80 │ 5.0.1.Final        │ hibernate-commons-annotations
>>>>>>  59 │ Active │  80 │ 5.2.8.Final        │ hibernate-core
>>>>>>  60 │ Active │  80 │ 1.0.0.Final        │ hibernate-jpa-2.1-api
>>>>>>  61 │ Active │  80 │ 5.2.8.Final        │ hibernate-osgi
>>>>>>  62 │ Active │  80 │ 2.0.3.Final        │ Java Annotation Indexer
>>>>>>  63 │ Active │  80 │ 3.3.0.Final        │ JBoss Logging 3
>>>>>>  65 │ Active │  80 │ 1.9.2.1            │ Apache ServiceMix :: Bundles 
>>>>>> :: jasypt
>>>>>>  66 │ Active │  80 │ 1.1.0              │ OPS4J Pax JDBC Config
>>>>>>  67 │ Active │  80 │ 1.1.0              │ OPS4J Pax JDBC Pooling Support 
>>>>>> Base
>>>>>>  68 │ Active │  80 │ 1.0.0.201505202023 │ org.osgi:org.osgi.service.jdbc
>>>>>>  69 │ Active │  80 │ 1.3.172            │ H2 Database Engine
>>>>>> 117 │ Active │  80 │ 1.2.0              │ CDI APIs
>>>>>> 118 │ Active │  80 │ 1.2                │ javax.transaction API
>>>>>> 119 │ Active │  80 │ 1.1.1              │ Apache Aries Transaction 
>>>>>> Blueprint
>>>>>> 120 │ Active │  80 │ 2.1.0              │ Apache Aries Transaction 
>>>>>> Blueprint
>>>>>> 121 │ Active │  80 │ 1.3.3              │ Apache Aries Transaction 
>>>>>> Manager
>>>>>> 122 │ Active │  80 │ 1.0.2              │ Apache Felix Coordinator 
>>>>>> Service
>>>>>> 123 │ Active │  80 │ 1.0.0.2            │ Apache ServiceMix :: Bundles 
>>>>>> :: javax.injec
>>>>>> 
>>>>>> bundle:diag 124 
>>>>>> Unsatisfied Requirements: 
>>>>>> [org.apache.aries.jpa.example.tasklist.model [124](R 124.0)] 
>>>>>> osgi.service; (osgi.jndi.service.name 
>>>>>> <http://osgi.jndi.service.name/>=tasklist) 
>>>>>> [org.apache.aries.jpa.example.tasklist.model [124](R 124.0)] 
>>>>>> osgi.contract; (&(osgi.contract=JavaJPA)(version=2.1.0))
>>>>>> 
>>>>>> 
>>>>>> Any idea how to troubleshoot this problem? 
>>>>>> 
>>>>>> Best regards, 
>>>>>> Alex soto 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
>> 
> 

Reply via email to