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]> 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
>
>
>
>