karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Soto <alex.s...@envieta.com>
Subject Re: Aries JPA: The persistence unit has incomplete configuration and cannot be created.
Date Thu, 24 May 2018 19:26:04 GMT
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.soto@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
> 
> 
> 
> 


Mime
View raw message