Yes
It could work... with ManagedService. But ManagedEMF should be changed in
non static class and should implement ManagedService interface.
Right?

Il 05/apr/2015 10:44, "Christian Schneider" <ch...@die-schneider.net> ha
scritto:

> forgot to send to list too
>
>
> -------- Weitergeleitete Nachricht --------
> Betreff:        Re: Prototype for a new aries jpa impl
> Datum:  Sun, 05 Apr 2015 10:42:30 +0200
> Von:    Christian Schneider <ch...@die-schneider.net>
> Antwort an:     ch...@die-schneider.net
> An:     Giuseppe Gerla <giuseppe.ge...@gmail.com>
>
>
>
> I propose to use config admin with one config per punit instead of a plain
> file. The reason is that you probably will want to deploy the config
> together with your application.
> This would be a lot more difficult if there is one config for all
> persistence units and your deployment has to patch the config file.
>
> So I propose you use config admin with a ManagedService. The pid could
> look like a ManagedServiceFactory but probably it would be better to use a
> real MSF.
>
> So for each persistence unit you could publish a ManagedService with a pid
> of org.apache.aries.jpa.<persistence-unit>.cfg. The EMF creation would
> take place in the updated method of the ManagedService. When there is a
> null config it would take the default properties if a config is given it
> would take it.
>
> Would that work?
>
> Christian
>
>
> Am 05.04.2015 um 09:37 schrieb Giuseppe Gerla:
>
>> Ok.
>> I'm starting to implement.... using this scenario. Unit name is
>> "propertiesUnit". In the configuration file I search for:
>>
>> propertiesUnit.<property-name> = <property-value>
>>
>> So we will have one file for all persistence units.
>> I want create e private method in the ManagedEMF class to retrieve all
>> properties and use to create the EMF.
>> Wdyt?
>>
>>
>>
>> Regards
>> Giuseppe
>>
>> 2015-04-05 8:46 GMT+02:00 Christian Schneider <ch...@die-schneider.net
>> <mailto:ch...@die-schneider.net>>:
>>
>>     Hi Guiseppe,
>>
>>     would be great if you can tackle that.
>>
>>     Christian
>>
>>
>>     Am 04.04.2015 um 14:23 schrieb Giuseppe Gerla:
>>
>>         Hi Christian
>>         Great idea.
>>         I understood the problem and yesterday I was thinking about a
>>         possible
>>         solution like yours.
>>         I'm thinking to use config admin in the parser of
>>         persistence.xml so to be
>>         able to use parameter value in the properties, but your
>>         solution seems more
>>         complete.
>>
>>         If you want I can help you to develop this functionality.
>>
>>
>>         Thanks
>>         Regards
>>         Giuseppe
>>
>>         2015-04-04 10:24 GMT+02:00 Christian Schneider
>>         <ch...@die-schneider.net <mailto:ch...@die-schneider.net>>:
>>
>>             Hi Guiseppe,
>>
>>             I see your point. The problem though is that the
>>             EntityManagerFactory is
>>             created when the persistence.xml is read. At that point the
>>             EntityManagerFactory service is created.
>>             So the aries jpa xml or @PersistenceContext properties can
>>             only influence
>>             the creation of the EntityManager. So for you case this
>>             would not work.
>>
>>             My proposal to use config admin would work though. Imagine
>>             we have a
>>             ManagedServiceFactory that reacts on configs like
>>             etc/org.apache.aries.jpa-*.cfg. In the config you set the
>>             persistence
>>             unit name and the properties you want to override. These
>>             properties would
>>             be read when creating the EntityManagerFactory. So this
>>             would allow you to
>>             even override the persistenceProvider.
>>
>>             Christian
>>
>>
>>             Am 03.04.2015 um 09:44 schrieb Giuseppe Gerla:
>>
>>                 Hi Christian
>>                 I understand your point of view, but I not agree.
>>                 JPA define API, so it is an abstraction. My
>>                 application MUST be
>>                 independent
>>                 from the implementation.
>>                 Think about this. I have a software based on
>>                 postgreSQL that use OpenJPA.
>>                 For some reason a new customer buy my software with
>>                 the constraint that it
>>                 has to use MySQL. In this case, using your approach I
>>                 have to use OpenJPA
>>                 with MySQL, but this combination is not performing.
>>                 From my experience,
>>                 the
>>                 best JPA implementation for mysql is Eclipselink.
>>                 Using my approach I have
>>                 the chance to deploy my software on mysql using
>>                 eclipse without change the
>>                 code!!!
>>                 Not only. Using my approach, without change the code,
>>                 I can do several
>>                 test
>>                 in the real environment to select the best combination
>>                 between DBMS and
>>                 JPA
>>                 implementation from performance point of view.
>>                 However, I have to say that write jpa query (using
>>                 criteria builder)
>>                 independent from the JPA implementation and from DBMS
>>                 is a bit complex.
>>
>>                 I think that my use case is not so common, but I have
>>                 this need and using
>>                 Spring ORM can satisfy it.
>>                 This is because I open the ARIES-1295 issue and open a
>>                 pull request to fix
>>                 it.
>>
>>
>>                 Regards
>>                 Giuseppe
>>
>>
>>                 2015-04-03 1:03 GMT+02:00 Christian Schneider
>>                 <ch...@die-schneider.net
>>                 <mailto:ch...@die-schneider.net>>:
>>
>>                   Why should that make sense? Changing the persistence
>>                 framework is much
>>
>>                     more than the schema generation and other properties.
>>                     They all have slight differences when you create
>>                     real applications.
>>                     Exchanging the JPA impl on the fly is not feasible
>>                     and I can not imagine
>>                     a
>>                     use case where it is necessary.
>>
>>                     Also the ddl generation is normally not working
>>                     once you create bigger
>>                     applications. The reason is that you want to
>>                     manage the schema and
>>                     provide
>>                     a clearly defined migration of the schema when you
>>                     deploy. I have seen
>>                     people use liquibase for that case with good
>>                     success. For my examples I
>>                     of
>>                     course use the schema generation but that is not
>>                     how people do it in
>>                     bigger
>>                     projects.
>>
>>                     So my assumption is that you probably will not
>>                     really need properties
>>                     where you inject the EntityManager. What might
>>                     make sense though is to
>>                     for
>>                     example provide a way to set properties on the
>>                     persistence unit level
>>                     using
>>                     config admin. That should be easy to do and would
>>                     even help with your use
>>                     case .. even if I doubt it is realistic.
>>
>>                     Christian
>>
>>
>>                     Am 02.04.2015 um 23:13 schrieb Giuseppe Gerla:
>>
>>                       Hi Christian
>>
>>                         thanks for explanation. I hope to make some
>>                         tests during next week-end.
>>
>>                         About properties, I'd like to have a
>>                         persistence.xml without reference
>>                         to
>>                         JPA implementation, only classes list.
>>                         Implementation should be changed
>>                         without re-compile the bundle.
>>                         So for example if I have a property to define
>>                         the schema creation in the
>>                         persistence.xml like
>>
>>                         <property name="hibernate.hbm2ddl.auto"
>>                         value="create-drop"/>
>>
>>                         and replace hibernate with eclipselink, I have
>>                         to replace the
>>                         persistence.xml with
>>
>>                         <property name="eclipselink.ddl-generation"
>>                         value="drop-and-create-tables"/>
>>
>>                         and I have to deploy a new version of my bundle.
>>                         Using blueprint and hot-configuration of Karaf
>>                         it could be possible to
>>                         change the property using a configuration file.
>>
>>                         Regards
>>                         Giuseppe
>>
>>
>>                         2015-04-02 21:26 GMT+02:00 Christian Schneider
>>                         <ch...@die-schneider.net
>>                         <mailto:ch...@die-schneider.net>
>>
>>                             :
>>
>>                            Hi Giuseppe,
>>
>>                             the main thing missing is the more
>>                             advanced transaction handling.
>>                             Currently for blueprint the transaction
>>                             starts at the outermost place
>>                             where an EntityManager or EmSupplier is
>>                             injected.
>>                             So it is as if you would use a
>>                             @Transactional with Required type on
>>                             each
>>                             such class.
>>
>>                             Apart from that you should already be able
>>                             to write jpa applications
>>                             with
>>                             the current code.
>>
>>                             Currently only the persistence.xml is
>>                             regarded for creating the
>>                             EntityManagerFactory. While you can add
>>                             properties to the
>>                             @PersistenceContext annotation they are
>>                             not used.
>>                             Honestly I do not understand anyway how
>>                             you would handle such
>>                             properties.
>>                             You could have different properties at
>>                             every @PersistenceContext for
>>                             the
>>                             same unit name. As we are only creating
>>                             the EntityManager at the
>>                             outermost
>>                             call the other properties can not be
>>                             applied. Can you explain what use
>>                             case
>>                             you have in mind for the properties?
>>
>>                             Christian
>>
>>
>>                             Am 02.04.2015 um 18:48 schrieb Giuseppe Gerla:
>>
>>                                Hi Christian
>>
>>                                 I would be very interested to try the
>>                                 new prototype, but I have few
>>                                 time.
>>                                 So before I start, I would like to ask
>>                                 you:
>>                                 1. you say that the current code is
>>                                 not yet complete. What is missing?
>>                                 What
>>                                 functionalities I will not test?
>>                                 2. Is it possible or it will be
>>                                 possible to set some properties to the
>>                                 EMF?
>>                                 (something like jpa:map functionality. See
>>                                 https://issues.apache.org/
>> jira/browse/ARIES-1295
>>
>>                                 Thanks for your work
>>                                 Regards
>>                                 Giuseppe
>>
>>
>>                                 2015-04-02 15:41 GMT+02:00 Christian
>>                                 Schneider <
>>                                 ch...@die-schneider.net
>>                                 <mailto:ch...@die-schneider.net>
>>
>>                                     :
>>
>>                                     I am experimenting for some time
>>                                 with a new way to implement jpa
>>                                 support.
>>
>>                                   You can find the design on this website:
>>
>>                                     http://liquid-reality.de/
>> display/liquid/New+design+for+aries+jpa
>>
>>                                     The prototype code is at:
>>                                     https://github.com/cschneider/
>> jpa-experiments
>>
>>                                     The goals for the new design are:
>>                                     - Simpler and more robust
>>                                     implementation using OSGi service
>>                                     dynamics.
>>                                     Tracking all dependencies and
>>                                     publishing / unpublishing
>>                                     EntityManagerFactory when any go away
>>                                     - Move some functionality to other
>>                                     projects like wrapping XA
>>                                     DataSources
>>                                     to pax-jdbc.
>>                                     - Support for other frameworks
>>                                     like declarative services using
>>                                     JPATemplate
>>                                     and closures
>>
>>                                     The current code is not yet
>>                                     complete but already works for
>>                                     blueprint
>>                                     and
>>                                     DS.
>>
>>                                     I would be happy about any feedback.
>>
>>                                     Especially I would be interested
>>                                     if with the new approach Quiesce is
>>                                     still
>>                                     necessary. The code already makes
>>                                     sure that the EntityManagerFactory
>>                                     is
>>                                     nicely cleaned up. EntityManagers
>>                                     are only held for the duration of a
>>                                     request. So if blueprint Quiesce
>>                                     shuts down the requests then I think
>>                                     the
>>                                     jpa impls should not need to do
>>                                     additional work here. I tested to
>>                                     update
>>                                     all modules at runtime and all
>>                                     seems to work nicely. With the current
>>                                     aries
>>                                     jpa I can not update the
>>                                     persistence unit bundles. See
>>                                     https://issues.apache.org/
>> jira/browse/ARIES-1270
>>
>>                                     Christian
>>
>>                                     --
>>                                     Christian Schneider
>>                                     http://www.liquid-reality.de
>>
>>                                     Open Source Architect
>>                                     http://www.talend.com
>>
>>
>>
>>
>>
>>
>>
>>
>
>
>

Reply via email to