Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Gemini » When is Gemini JPA ready to be used to add DynamicTypes via Eclipelink DynamicSchemaManager(I want to know if there is some kind of Event / Service to be used to know if Gemini JPA is ready)
When is Gemini JPA ready to be used to add DynamicTypes via Eclipelink DynamicSchemaManager [message #1407697] Wed, 13 August 2014 08:40
Dobias van Buuren is currently offline Dobias van BuurenFriend
Messages: 2
Registered: August 2014
Junior Member
I'm trying to migrate from EclipseLink 2.4.1 to 2.5.2 in an environment where we have built a persistence framework on top of EclipseLink.
Since we have a truly dynamic system where the database schema contributions come from various bundles (read OSGi services that implement our Persistable interface) and can be modified at runtime via our product, we use the EclipseLink Dynamic Entities API to create org.eclipse.persistence.dynamic.DynamicType instances and add / replace it to the Schema using the org.eclipse.persistence.tools.schemaframework.DynamicSchemaManager.
Note that the only entries in the persistence.xml is a persistence-unit with some eclipselink properties configured. No class entries at all, because they are all contributed using the Dynamic Entity API.

All works fine with org.eclipse.persistence.jpa.osgi, because I know when the Eclipselink bundles are ready for use. I did this by depending on the service javax.persistence.EntityManagerFactory for my persistence unit (osgi.unit.name=MyUnit).

Since persistence.jpa.osgi has been superseded by org.eclipse.gemini.jpa, I started using this Gemini JPA (version 1.2.0 M1).
Because my PersistenceManagerImpl may only start processing Persistable services (discovered using whiteboard pattern) when EclipseLink / Gemini is finished with their initialization / weaving / etc. I am looking for a way to find this out. My first approach was roughly the same as with o.e.persistence.jpa.osgi: I created a dependency to the org.osgi.service.jpa.EntityManagerFactoryBuilder service for my persistence unit, but I found that this wasn't good enough.

The symptoms I have are that DynamicTypes added a little early aren't created in the underlying database, but when I wait some time, then DynamicTypes are added and everything works fine. All works fine also when I stop/ start the org.eclipse.gemini.jpa bundle when my system is completly running.

My question to the Gemini experts is: How do I find out that Gemini is finished with whatever it needs to do? Ideally, I want to be able to listen to some kind of org.osgi.service.Event to find out Gemini is ready / Gemini is busy.

Note that I have hot-deployment requirements, so every bundle (also the Gemini / EclipseLink ones) must be stopped, started at any order and my micro services based system must gracefully stop offering some services and start offering some services when its providing bundles are started again.

Thanks in advance for your replies.
Previous Topic:Gemini from P2 and Maven
Next Topic:Gemini Web 2.2.4 RELEASE is now available
Goto Forum:
  


Current Time: Mon Sep 16 23:21:05 GMT 2024

Powered by FUDForum. Page generated in 0.03387 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top