Alex,

As you’ve noticed in the log there are some “odd things” going on. What you’ve 
managed to do is to prod things in the correct order to reach a state that is 
not normally accessible!

So what’s happening is:

Error while creating the Dummy EntityManagerFactory to allow weaving. - This 
always happens for Hibernate can safely be ignored. Part of the JPA 
specification involves supporting load-time weaving of the entity types. This 
forces the Aries JPA container to eagerly create the EMF as early as possible 
to avoid “missing” the class load. This in turn means that Aries JPA can’t wait 
to locate the DataSource, and instead uses a “dummy”, which gets us far enough 
through the process to get a load-time weaver. Hibernate then explodes because 
it tries to do real things with the dummy datasource.
The persistence unit responderPersistenUnit has incomplete configuration and 
cannot be created. This is your persistence unit configuration being injected 
into Aries JPA - it fails because it is using a mixture of persistence xml and 
configuration, and the configuration properties therefore have no database 
connection details/
Found DataSource for responderPersistenUnit 
osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=responder)Once 
PAX-JDBC registers the DataSource service it is located by Aries JPA and used 
to create the EMF

The critical point here is that Entry 2 happens before Entry 3, but Aries JPA 
remembers the configuration that was injected into it in Entry 2. Therefore 
once the DataSource is found Aries JPA still has the configuration details 
injected from before. If you reversed the order of 2 and 3 then it wouldn’t 
work.

As Configuration Admin is asynchronous in its delivery of Configurations it can 
be pretty unreliable to depend on this ordering, although you could probably 
contrive a way of activating features to encourage it to happen this way all 
the time. Programmatic assembly is probably your friend here. 

Best Regards,

Tim


> On 25 May 2018, at 17:09, Jean-Baptiste Onofré <[email protected]> wrote:
> 
> 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] <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]>
>>> <mailto:[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/ 
>>> <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/ 
>>> <http://osgi.jdbc.driver.name/>> = mariadb
>>>        dataSourceName=responder
>>>        url
>>>        = 
>>> jdbc:mariadb://localhost:3306/responder?characterEncoding=UTF-8&useServerPrepStmts=true
>>>  
>>> <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/ 
>>> <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/ <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/ 
>>> <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]> 
>>>> <mailto:[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]>
>>>>    <mailto:[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>
>>>>        
>>>> <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]>>
>>>>> <mailto:[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>>
>>>>>      
>>>>> <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 <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 <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]>>>
>>>>>      >> <mailto:[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>>
>>>>>      <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>>
>>>>>      <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 
>>>>> <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>>
>>>>>      <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 <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 <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 <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 <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]>>
>>>>        <mailto:[email protected] <mailto:[email protected]> 
>>>> <mailto:[email protected] <mailto:[email protected]>>>
>>>>>      http://blog.nanthrax.net <http://blog.nanthrax.net/> 
>>>>> <http://blog.nanthrax.net/ <http://blog.nanthrax.net/>>
>>>>>      Talend - http://www.talend.com <http://www.talend.com/> 
>>>>> <http://www.talend.com/ <http://www.talend.com/>>
>>>>> 
>>>>> 
>>>> 
>>>>        -- 
>>>>        --
>>>>        Jean-Baptiste Onofré
>>>>        [email protected] <mailto:[email protected]> 
>>>> <mailto:[email protected] <mailto:[email protected]>>
>>>>        http://blog.nanthrax.net <http://blog.nanthrax.net/> 
>>>> <http://blog.nanthrax.net/ <http://blog.nanthrax.net/>>
>>>>        Talend - http://www.talend.com <http://www.talend.com/> 
>>>> <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/>

Reply via email to