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 <alex.s...@envieta.com> 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 > <http://java.sun.com/xml/ns/persistence>" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance > <http://www.w3.org/2001/XMLSchema-instance>" > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence > <http://java.sun.com/xml/ns/persistence> > http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd > <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 > > > >