I will give a try to Tim’s suggestion, as it may be safer than what I am doing now (with the errors in the log I can’t feel comfortable) but I do agree there seems to be a gap. To be clear, the gap (as indicated by Tim), is the inability of using a DataSource registered in JNDI when configuring the Persistence Unit via Configuration Admin, something that is supported when using the persistence.xml file.
Best regards, Alex soto > On May 25, 2018, at 9:37 AM, Paul McCulloch <[email protected]> wrote: > > That's what I do Alex. I didn't think I needed the non-jta-datasource (& > everything seems to work), but this thread has made me think I should go back > & re-asses that. > > I'll also look again at the Transaction Control stuff - it was at 0.0.1 when > I last looked, so I was nervous about relying on it. It looks like it will > fix my hack for MSSQL of having to fake an XA datasource (as Aries JPA > transactions don't work with non XA datasources).. > > On 25 May 2018 at 14:21, Alex Soto <[email protected] > <mailto:[email protected]>> wrote: > Hi All, > > Thanks for input. I think I found a sweet spot that seems to work, although > I wish somebody from AriesJPA can confirm this is a valid approach. > I removed the Dialect and the other Hibernate specific settings out of my > persistence.xml, but I have to keep the data source reference to JNDI: > > <persistence-unit name="responderPersistenUnit" transaction-type="JTA"> > > <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name > <http://osgi.jndi.service.name/>=responder)</jta-data-source> > </persistence-unit> > > The Pax-exam configuration file org.ops4j.datasource-responder.cfg remains > the same: > > osgi.jdbc.driver.name <http://osgi.jdbc.driver.name/> = mariadb > dataSourceName=responder > url = > jdbc:mariadb://localhost:3306/responder?characterEncoding=UTF-8&useServerPrepStmts=true > <> > user=XXX > password=XXX > databaseName=responder > ops4j.preHook=responderDB > > AriesJPA configuration in my feature provides the dialect and the provider: > > <config name="org.apache.aries.jpa.responderPersistenUnit"> > > javax.persistence.provider=org.hibernate.jpa.HibernatePersistenceProvider > hibernate.dialect=org.hibernate.dialect.MariaDBDialect > hibernate.show_sql=false > hibernate.format_sql=true > hibernate.hbm2ddl.auto=none > </config> > > When I run, first I can see in the log AriesJPA Container: > > 2018-05-25T09:01:22,580 | DEBUG | features-3-thread-1 | > PersistenceBundleTracker | 46 - org.apache.aries.jpa.container - > 2.7.0 | Matching JPA contract for possible persistence bundle > encryptedquery-responder-data > 2018-05-25T09:01:22,594 | INFO | features-3-thread-1 | > PersistenceBundleTracker | 46 - org.apache.aries.jpa.container - > 2.7.0 | Found persistence unit responderPersistenUnit in bundle > encryptedquery-responder-data with provider null. > 2018-05-25T09:01:22,596 | INFO | features-3-thread-1 | > PersistenceProviderTracker | 46 - org.apache.aries.jpa.container - > 2.7.0 | Found provider for responderPersistenUnit > org.hibernate.jpa.HibernatePersistenceProvider > 2018-05-25T09:01:22,618 | INFO | features-3-thread-1 | LogHelper > | 134 - org.hibernate.core - 5.2.9.Final | HHH000204: Processing > PersistenceUnitInfo [ > name: responderPersistenUnit > ...] > 2018-05-25T09:01:22,688 | INFO | features-3-thread-1 | Version > | 134 - org.hibernate.core - 5.2.9.Final | HHH000412: Hibernate > Core {5.2.9.Final} > 2018-05-25T09:01:22,691 | INFO | features-3-thread-1 | Environment > | 134 - org.hibernate.core - 5.2.9.Final | HHH000206: > hibernate.properties not found > 2018-05-25T09:01:22,750 | INFO | features-3-thread-1 | Version > | 133 - org.hibernate.common.hibernate-commons-annotations - > 5.0.1.Final | HCANN000001: Hibernate Commons Annotations {5.0.1.Final} > 2018-05-25T09:01:23,330 | WARN | features-3-thread-1 | > JdbcEnvironmentInitiator | 134 - org.hibernate.core - 5.2.9.Final | > HHH000342: Could not obtain connection to query metadata : Unable to > determine Dialect to use [name=, majorVersion=0]; user must register resolver > or explicitly set 'hibernate.dialect' > 2018-05-25T09:01:23,332 | DEBUG | features-3-thread-1 | > PersistenceProviderTracker | 46 - org.apache.aries.jpa.container - > 2.7.0 | Error while creating the Dummy EntityManagerFactory to allow weaving. > org.hibernate.service.spi.ServiceException: Unable to create requested > service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] > at > org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271) > ~[?:?] > at > org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) > ~[?:?] > at > org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) > ~[?:?] > at > org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) > ~[?:?] > at > org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) > ~[?:?] > at > org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242) > ~[?:?] > at > org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) > ~[?:?] > at > org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) > ~[?:?] > at > org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) > ~[?:?] > at > org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:858) > ~[?:?] > at > org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:885) > ~[?:?] > at > org.hibernate.osgi.OsgiPersistenceProvider.createContainerEntityManagerFactory(OsgiPersistenceProvider.java:96) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceProviderTracker.createAndCloseDummyEMF(PersistenceProviderTracker.java:105) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:86) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceProviderTracker.addingService(PersistenceProviderTracker.java:44) > ~[?:?] > at > org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941) > ~[?:?] > at > org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870) > ~[?:?] > at > org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) > ~[?:?] > at > org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) > ~[?:?] > at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:318) > ~[?:?] > at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:261) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceBundleTracker.trackProvider(PersistenceBundleTracker.java:229) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceBundleTracker.findPersistenceUnits(PersistenceBundleTracker.java:213) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:98) > ~[?:?] > at > org.apache.aries.jpa.container.impl.PersistenceBundleTracker.addingBundle(PersistenceBundleTracker.java:44) > ~[?:?] > at > org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) > ~[?:?] > at > org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) > ~[?:?] > at > org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) > ~[?:?] > at > org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) ~[?:?] > at > org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) > ~[?:?] > at > org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915) > ~[?:?] > at > org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834) > ~[?:?] > at > org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516) > ~[?:?] > at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) > ~[?:?] > at org.apache.felix.framework.Felix.activateBundle(Felix.java:2231) > ~[?:?] > at org.apache.felix.framework.Felix.startBundle(Felix.java:2146) ~[?:?] > at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) > ~[?:?] > at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984) > ~[?:?] > at > org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:161) > ~[?:?] > at > org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1116) > ~[?:?] > at > org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:996) > ~[?:?] > at > org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1025) > ~[?:?] > at > org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:964) > ~[?:?] > at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > [?:?] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > [?:?] > at java.lang.Thread.run(Thread.java:748) [?:?] > Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo > cannot be null when 'hibernate.dialect' not set > at > org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100) > ~[?:?] > at > org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) > ~[?:?] > at > org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) > ~[?:?] > at > org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) > ~[?:?] > at > org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) > ~[?:?] > at > org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) > ~[?:?] > ... 46 more > > > Notice the above exception is logged as DEBUG level, so I think it can be > ignored. Later I see this error: > > 2018-05-25T09:01:23,354 | ERROR | CM Configuration Updater (ManagedService > Update: pid=[org.apache.aries.jpa.responderPersistenUnit]) | configadmin > | 8 - org.apache.felix.configadmin - 1.8.16 | > [org.osgi.service.cm <http://org.osgi.service.cm/>.ManagedService, id=196, > bundle=18/mvn:org.enquery.encryptedquery/encryptedquery-responder-data/1.0.0-SNAPSHOT]: > Unexpected problem updating configuration > org.apache.aries.jpa.responderPersistenUnit > java.lang.IllegalArgumentException: The persistence unit > responderPersistenUnit has incomplete configuration and cannot be created. > The configuration is{hibernate.format_sql=true, > javax.persistence.provider=org.hibernate.jpa.HibernatePersistenceProvider, > hibernate.hbm2ddl.auto=none, > hibernate.dialect=org.hibernate.dialect.MariaDBDialect, > org.apache.karaf.features.configKey=org.apache.aries.jpa.responderPersistenUnit, > > felix.fileinstall.filename=file:/Users/asoto/git/encryptedquery/responder/itests/target/exam/cdf383ba-08b3-4157-bec3-c131857d7108/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) [?:?] > > > Later I see PAX-JDBC configuring the DataSource: > > > 2018-05-25T09:01:24,065 | INFO | CM Configuration Updater (ManagedService > Update: pid=[org.apache.aries.jpa.responderPersistenUnit]) | > ServiceTrackerHelper | 162 - org.ops4j.pax.jdbc.config - 1.3.0 | > Obtained service dependency: > (&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.name > <http://osgi.jdbc.driver.name/>=mariadb)) > 2018-05-25T09:01:24,065 | INFO | CM Configuration Updater (ManagedService > Update: pid=[org.apache.aries.jpa.responderPersistenUnit]) | > DataSourceRegistration | 162 - org.ops4j.pax.jdbc.config - 1.3.0 | > Found DataSourceFactory. Creating DataSource responder > 2018-05-25T09:01:24,071 | INFO | CM Configuration Updater (ManagedService > Update: pid=[org.apache.aries.jpa.responderPersistenUnit]) | > DataSourceRegistration | 162 - org.ops4j.pax.jdbc.config - 1.3.0 | > Executing pre hook for DataSource responder > 2018-05-25T09:01:29,888 | INFO | CM Configuration Updater > (ManagedServiceFactory Update: factoryPid=[org.ops4j.datasource]) | > DataSourceRegistration | 162 - org.ops4j.pax.jdbc.config - 1.3.0 | > Pre hook finished. Publishing DataSource responder > 2018-05-25T09:01:29,890 | INFO | CM Configuration Updater > (ManagedServiceFactory Update: factoryPid=[org.ops4j.datasource]) | > DataSourceTracker | 46 - org.apache.aries.jpa.container - > 2.7.0 | Found DataSource for responderPersistenUnit > osgi:service/javax.sql.DataSource/(osgi.jndi.service.name > <http://osgi.jndi.service.name/>=responder) > 2018-05-25T09:01:29,890 | DEBUG | CM Configuration Updater > (ManagedServiceFactory Update: factoryPid=[org.ops4j.datasource]) | > AriesEntityManagerFactoryBuilder | 46 - org.apache.aries.jpa.container - > 2.7.0 | No transaction type set in config, restoring the original value JTA > 2018-05-25T09:01:29,890 | INFO | CM Configuration Updater > (ManagedServiceFactory Update: factoryPid=[org.ops4j.datasource]) | LogHelper > | 134 - org.hibernate.core - 5.2.9.Final | HHH000204: > Processing PersistenceUnitInfo [ > name: responderPersistenUnit > ...] > 2018-05-25T09:01:29,984 | INFO | CM Configuration Updater > (ManagedServiceFactory Update: factoryPid=[org.ops4j.datasource]) | Dialect > | 134 - org.hibernate.core - 5.2.9.Final | HHH000400: > Using dialect: org.hibernate.dialect.MySQL5Dialect > > > After this, everything works normally. Looks like the errors I see are later > corrected, so it may be just a timing issue. > > Best regards, > Alex soto > > > > >> On May 25, 2018, at 8:01 AM, Paul McCulloch <[email protected] >> <mailto:[email protected]>> wrote: >> >> The dialect can be left out of the pu.xml though. I started down this path, >> but in the end have just relied on hibernate to select the correct dialect. >> I deploy the same bundles on H2, Oracle & MSSQL with this approach. >> >> >> On 25 May 2018 at 12:51, Jean-Baptiste Onofré <[email protected] >> <mailto:[email protected]>> wrote: >> Hi Paul, >> >> yes, I remember this discussion, but AFAIR, it's always overriden by the >> dialect in the persistence.xml. >> >> Regards >> JB >> >> On 25/05/2018 13:00, Paul McCulloch wrote: >> > Hibernate usually does a reasonable job of auto detecting the dialect, >> > in my experience. If you need to override this then Aries JPA supports >> > creating a configuration file /etc/org.apache.aries.jpa.<PU name>.cfg >> > where you can override hibernate.dialect. Beware if you have a "-" in >> > the PU name as I think fileinstall we try and create a factory config. >> > >> > I can't recall where I got this info from. It might have been >> > here: >> > http://karaf.922171.n3.nabble.com/Dynamic-parameters-in-persistence-xml-td4043602.html >> > >> > <http://karaf.922171.n3.nabble.com/Dynamic-parameters-in-persistence-xml-td4043602.html> >> > >> > On 25 May 2018 at 06:46, Jean-Baptiste Onofré <[email protected] >> > <mailto:[email protected]> >> > <mailto:[email protected] <mailto:[email protected]>>> wrote: >> > >> > Hi Alex, >> > >> > the dialect HAS to be in the persistence.xml (it's in the JPA spec). >> > >> > AFAIK, Aries JPA doesn't provide a mechanism to provide the dialect >> > externally from the persistence.xml. >> > >> > Even the Aries JPA itests define the dialect there: >> > >> > >> > https://github.com/apache/aries-jpa/blob/master/itests/jpa-container-testbundle/src/main/resources/META-INF/persistence.xml#L40 >> > >> > <https://github.com/apache/aries-jpa/blob/master/itests/jpa-container-testbundle/src/main/resources/META-INF/persistence.xml#L40> >> > >> > <https://github.com/apache/aries-jpa/blob/master/itests/jpa-container-testbundle/src/main/resources/META-INF/persistence.xml#L40 >> > >> > <https://github.com/apache/aries-jpa/blob/master/itests/jpa-container-testbundle/src/main/resources/META-INF/persistence.xml#L40>> >> > >> > Further more, dialect also depends of the engine you are using >> > (hibernate, openjpa, eclipselink). >> > >> > Regards >> > JB >> > >> > On 24/05/2018 21:26, Alex Soto wrote: >> > > 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 >> > <http://osgi.jndi.service.name/> >> > <http://osgi.jndi.service.name >> > <http://osgi.jndi.service.name/>>=responder)</jta-data-source> >> > > >> > <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name >> > <http://osgi.jndi.service.name/> >> > <http://osgi.jndi.service.name >> > <http://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]> <mailto:[email protected] >> > <mailto:[email protected]>> >> > >> <mailto:[email protected] <mailto:[email protected]> >> > <mailto:[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 >> > <http://java.sun.com/xml/ns/persistence> >> > <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> >> > <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 >> > <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> >> > <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 >> > <http://osgi.jndi.service.name/> >> > <http://osgi.jndi.service.name >> > <http://osgi.jndi.service.name/>>=responder) >> > >> >> > >> >> > >> > non-jta-data-source=osgi:service/javax.sql.DataSource/(osgi.jndi.service.name >> > <http://osgi.jndi.service.name/> >> > <http://osgi.jndi.service.name >> > <http://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 >> > <http://osgi.jndi.service.name/> >> > <http://osgi.jndi.service.name >> > <http://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 >> > <http://osgi.jndi.service.name/> >> > <http://osgi.jndi.service.name >> > <http://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 >> > >> >> > >> >> > >> >> > >> >> > > >> > >> > -- >> > -- >> > Jean-Baptiste Onofré >> > [email protected] <mailto:[email protected]> >> > <mailto:[email protected] <mailto:[email protected]>> >> > http://blog.nanthrax.net <http://blog.nanthrax.net/> >> > Talend - http://www.talend.com <http://www.talend.com/> >> > >> > >> >> -- >> -- >> Jean-Baptiste Onofré >> [email protected] <mailto:[email protected]> >> http://blog.nanthrax.net <http://blog.nanthrax.net/> >> Talend - http://www.talend.com <http://www.talend.com/> >> > >
