Hi Alex,

I think it's better to use cfg or persistence.xml, one or the other, not
a mix of both.

I'm using both in the samples, but I don't mix both in the same sample.

Regards
JB

On 25/05/2018 16:00, Alex Soto wrote:
> 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]
>> <mailto:[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/>
>>>
>>>
>>
>>
> 

-- 
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to