Hi, I have a project using JPA and EclipseLink that is working :
org.ops4j.datasource-myapp.cfg : osgi.jdbc.driver.class=org.postgresql.Driver dataSourceName=myapp databaseName=db_myapp serverName=127.0.0.1 portNumber=5432 user=xxxx password=xxxx persistence.xml : <persistence-unit name="my-persistence-unit" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=myapp)</jta-data-source> ... This is the only parameters I'm using. François Le 24/05/2018 à 23:41, Alex Soto a écrit : > File: org.ops4j.datasource-responder.cfg > > > osgi.jdbc.driver.name = mariadb > dataSourceName=responder > url > = > jdbc:mariadb://localhost:3306/responder?characterEncoding=UTF-8&useServerPrepStmts=true > > user=XXXXX > password=XXXXX > databaseName=responder > > ops4j.preHook=responderDB > > > > This is picked up by PAX-JDBC and registered as a service: > /osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder)/ > I want the persistence unit to use this DataSource. > > Best regards, > Alex soto > > > > >> On May 24, 2018, at 3:31 PM, Francois Papon >> <[email protected] <mailto:[email protected]>> >> wrote: >> >> Hi Alex, >> >> Where is configured your JDBC url ? Can you share it ? >> >> François >> >> >> Le 24/05/2018 à 23:26, Alex Soto a écrit : >>> If I change my persistence.xml to this: >>> >>> >>> <persistence-unit name="responderPersistenUnit" transaction-type="JTA"> >>> <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder)</jta-data-source> >>> <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder)</jta-data-source> >>> >>> >>> </persistence-unit> >>> >>> And the configuration entries to: >>> >>> <config name="org.apache.aries.jpa.responderPersistenUnit"> >>> >>> javax.persistence.provider=org.hibernate.jpa.HibernatePersistenceProvider >>> *javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver* >>> hibernate.dialect=org.hibernate.dialect.MariaDBDialect >>> hibernate.show_sql=false >>> hibernate.format_sql=true >>> hibernate.hbm2ddl.auto=none >>> </config> >>> >>> Then the error Is: >>> >>> >>> java.lang.IllegalArgumentException: Cannot rebind to a different >>> database driver, as per the JPA service specification >>> at >>> org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder.processProperties(AriesEntityManagerFactoryBuilder.java:225) >>> ~[?:?] >>> at >>> org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder.createEntityManagerFactory(AriesEntityManagerFactoryBuilder.java:173) >>> ~[?:?] >>> at >>> org.apache.aries.jpa.container.impl.ManagedEMF.updated(ManagedEMF.java:75) >>> ~[?:?] >>> at >>> org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) >>> ~[8:org.apache.felix.configadmin:1.8.16] >>> at >>> org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) >>> [8:org.apache.felix.configadmin:1.8.16] >>> at >>> org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) >>> [8:org.apache.felix.configadmin:1.8.16] >>> at >>> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.provide(ConfigurationManager.java:1479) >>> [8:org.apache.felix.configadmin:1.8.16] >>> at >>> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1435) >>> [8:org.apache.felix.configadmin:1.8.16] >>> at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:141) >>> [8:org.apache.felix.configadmin:1.8.16] >>> at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:109) >>> [8:org.apache.felix.configadmin:1.8.16] >>> at java.lang.Thread.run(Thread.java:748) [?:?] >>> >>> >>> If I remove the >>> line *javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver *from >>> the config file above, then I get the previous error about >>> configuration not being completed. What I am trying to do is to not >>> hard code the /hibernate.dialect /inside the bundle, so I can >>> switch to a different database without having to rebuild. >>> >>> Also, my DataSource is already created by PAX JDBC Config and this I >>> don’t want to change, since I am using PreHook facility there to run >>> LiquiBase migrations. >>> Any hints or examples appreciated. >>> >>> >>> Best regards, >>> Alex soto >>> >>> >>> >>> >>>> On May 24, 2018, at 1:41 PM, Alex Soto <[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> Hello, >>>> >>>> I am using Aries JPA 2.7.0, I am trying provide the JPA persistence >>>> configuration using configuration file. So my persistence.xml. >>>> >>>> <persistence version="2.0" >>>> xmlns="http://java.sun.com/xml/ns/persistence" >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:schemaLocation="http://java.sun.com/xml/ns/persistence >>>> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> >>>> >>>> <persistence-unit name="responderPersistenUnit" >>>> transaction-type="JTA"> >>>> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> >>>> </persistence-unit> >>>> </persistence> >>>> >>>> >>>> I deploy config file as part of my feature: >>>> >>>> <config name="org.apache.aries.jpa.responderPersistenUnit"> >>>> hibernate.dialect=org.hibernate.dialect.MariaDBDialect >>>> hibernate.show_sql=false >>>> hibernate.format_sql=true >>>> hibernate.hbm2ddl.auto=none >>>> >>>> >>>> jta-data-source=osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder) >>>> >>>> >>>> non-jta-data-source=osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder) >>>> >>>> >>>> </config> >>>> >>>> When I run, the following exception is thrown: >>>> >>>> >>>> java.lang.IllegalArgumentException: The persistence unit >>>> responderPersistenUnit has incomplete configuration and cannot >>>> be created. The configuration >>>> >>>> is{non-jta-data-source=osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder), >>>> hibernate.format_sql=true, hibernate.hbm2ddl.auto=none, >>>> hibernate.dialect=org.hibernate.dialect.MariaDBDialect, >>>> >>>> jta-data-source=osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder), >>>> >>>> felix.fileinstall.filename=file:/Users/asoto/git/encryptedquery/responder/dist/target/encryptedquery-responder-dist-1.0.0-SNAPSHOT/etc/org.apache.aries.jpa.responderPersistenUnit.cfg, >>>> hibernate.show_sql=false, >>>> javax.persistence.spi.PersistenceUnitTransactionType=JTA, >>>> service.pid=org.apache.aries.jpa.responderPersistenUnit} >>>> at >>>> org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder.createAndPublishEMF(AriesEntityManagerFactoryBuilder.java:365) >>>> ~[?:?] >>>> at >>>> org.apache.aries.jpa.container.impl.AriesEntityManagerFactoryBuilder.createEntityManagerFactory(AriesEntityManagerFactoryBuilder.java:183) >>>> ~[?:?] >>>> at >>>> >>>> org.apache.aries.jpa.container.impl.ManagedEMF.updated(ManagedEMF.java:75) >>>> ~[?:?] >>>> at >>>> >>>> org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) >>>> ~[8:org.apache.felix.configadmin:1.8.16] >>>> at >>>> >>>> org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) >>>> [8:org.apache.felix.configadmin:1.8.16] >>>> at >>>> org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) >>>> [8:org.apache.felix.configadmin:1.8.16] >>>> at >>>> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.provide(ConfigurationManager.java:1479) >>>> [8:org.apache.felix.configadmin:1.8.16] >>>> at >>>> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:1435) >>>> [8:org.apache.felix.configadmin:1.8.16] >>>> at >>>> org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:141) >>>> [8:org.apache.felix.configadmin:1.8.16] >>>> at >>>> org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:109) >>>> [8:org.apache.felix.configadmin:1.8.16] >>>> at java.lang.Thread.run(Thread.java:748) [?:?] >>>> >>>> >>>> >>>> So Aries JPA is finding the configuration properties I am >>>> providing, but still missing something. What else is needed as >>>> configuration properties? Why is it not complete the persistent unit? >>>> >>>> >>>> Best regards, >>>> Alex soto >>>> >>>> >>>> >>>> >>> >> >
