[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] EclipseLink in OSGi environment
|
If you have concerns about how the OSGi spec or the reference implementation
works, a good place to discuss that would be the gemini users mailing list.
On 30/11/2011 10:14 AM, Eugen Reiswich wrote:
Thanks Tom,
although in my opinion there is a lot of noise and possible race conditions one
has to be aware of using the FactoryBuilder (see the example below), but at
least I know a possible and working solution. Thanks again.
private void createEntityManagerFactory() {
assertemfBuilder!= null: "emfBuilder != null";
assertdbCredentials!= null: "dbCredentials != null";
Map<String, String> dbCredentioals = dbCredentials.getDBCredentioals();
entityManagerFactory= emfBuilder
.createEntityManagerFactory(dbCredentioals);
createCustomer();
}
public void bindDBConnectionService(IDatabaseCredentialsService dbService) {
dbCredentials = dbService;
if (emfBuilder != null) {
createEntityManagerFactory();
}
}
public void bindEMFBuilder(EntityManagerFactoryBuilder builder) {
emfBuilder = builder;
if(dbCredentials!= null) {
createEntityManagerFactory();
}
}
Eugen
Am 29.11.2011 um 20:55 schrieb Tom Ware:
In a word. Yes.
The idea of the EntityManagerFactoryBuilderService is that you are provided
with the major building block needed to create an EntityManagerFactory. You
can then implement the other parts of the assembly (e.g. the addition of
database connection information) as you see fit.
-Tom
On 29/11/2011 12:15 PM, Eugen Reiswich wrote:
Hi Tom,
The idea with the EntityManagerFactoryBuilderService would be that you could
retrieve the database credentials from the same place.
Just to make sure I got it right: I could e.g. create my own
IDatabaseCredentialsService with one method getDBCredentials() : Map<String,
String>. Afterwards I would inject this service everywhere I am using a
persistence unit specific EntityManagerFactoryBuilderService. So rather
providing redundant information as posted below I would retrieve them from the
same place/my IDatabaseCredentialsService.
This solution will produce a little bit overhead with the service bindings but
ok, I can live with it.
Perhaps I do not completely understand the problem you are facing. Do you have
an example of how you would do this outside of OSGi?
Unfortunately I don't have an example outside of OSGi, in our current project
OSGi is fixed as the technology platform.
Eugen
Am 29.11.2011 um 16:01 schrieb Tom Ware:
The idea with the EntityManagerFactoryBuilderService would be that you could
retrieve the database credentials from the same place. I guess you could think
of the fact that you have to pass them in to both getEntityManagerFactory()
calls as redundant, but I'm not sure that's how I think about it.
Perhaps I do not completely understand the problem you are facing. Do you have
an example of how you would do this outside of OSGi?
-Tom
On 29/11/2011 9:52 AM, Eugen Reiswich wrote:
I took a look at the EntityManagerFactoryBuilderService. As I understand there
is one instance of that class for each persistence unit. So again I would have
to provide that instance redundant data base credentials like:
ServiceReference[] refs =
context.getServiceReferences(
EntityManagerFactoryBuilder.class.getName(),
"(osgi.unit.name=Accounting)");
if (refs != null) {
EntityManagerFactoryBuilder emfBuilder =
(EntityManagerFactoryBuilder) context.getService(refs[0]);
if (emfBuilder != null) {
Map<String,Object> props = new HashMap<String,Object>();
props.put("javax.persistence.jdbc.user", username1);
props.put("javax.persistence.jdbc.password", password1);
props.put("javax.persistence.jdbc.url", url1);
EntityManagerFactory accountingEMF =
emfBuilder.createEntityManagerFactory(props);
The same code I would need to write for all other persistence units e.g.
customers, orders. This is exactly what I would like to avoid. Any other hints?
Eugen
Am 28.11.2011 um 20:43 schrieb Tom Ware:
Take a look at the EntityManagerFactoryBuilder Service. Some docs on this
page:
http://wiki.eclipse.org/Gemini/JPA/Documentation/JPAServices
On 28/11/2011 1:39 PM, Eugen Reiswich wrote:
Hi Tom,
thanks for the jump start. After reading the documents there is one
question I
was not able to answer yet. In my outlined scenario I would like to put
everything related to JPA in corresponding DAO bundles. As far as I
understood
my bundles will contain the following JPA related files:
**.service.customer.dao*
- customer-mapping.xml
- persistence.xml
**.service.account.dao*
- account-mapping.xml
- persistence.xml
Both persistence.xml files contain duplicate database credentials. How can I
provide those only once?
Eugen
Am 24.11.2011 um 18:58 schrieb Tom Ware:
The best place to get started is the Gemini project. It includes the
reference
implementation for a number of Java EE technologies in OSGi.
http://www.eclipse.org/gemini/
The base of the JPA part of the project is here:
http://www.eclipse.org/gemini/jpa/
Documentation is on the wiki:
http://wiki.eclipse.org/Gemini/JPA/Documentation
-Tom
On 24/11/2011 12:20 PM, Eugen Reiswich wrote:
Hi folks,
I googled now for two days to find an appropriate OSGi + EclipseLink
example,
but only found very basic ones.
I've got an OSGi application with the following architecture:
*Bundles:*
*.ui.customer
*.ui.account
*.domain.customer // business objects like Customer.java, Address.java etc.
*.domain.account // business objects like Account.java
*.service.customer // customer logic
*.service.account
*.service.customer.dao // persistence logic
*.service.account.dao
Using this architecture I would like to:
- use ORM.XML files in my *.dao-bundles rather that annotations in my
business
objects. This should keep my business objects and domain bundles free
of any
technology.
- I would like to provide one DB-Connection credentials. I understand
that a
persistence.xml contains both: the persistence unit and DB-connection
information. In my example I would need two persistence.xml files for
customer
and account bundles providing DB-connection information twice. Right?
*My questions are:*
1. assuming the above requirements/architecture what's the best way to make
this
work with EclipseLink + JPA 2.0?
2. where do I have to put the persistence.xml file(s)?
3. How can I tell EclipseLink that my DAO-bundles provide ORM mapping
files?
Regards,
Eugen
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
<mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
<mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
________________________
Dipl. Wi-Inf. Eugen Reiswich
Universität Hamburg (UHH)
Fakultät für Mathematik, Informatik
und Naturwissenschaften (MIN-Fakultät)
Department Informatik
Zentrum für Architektur
und Gestaltung von IT-Systemen (AGIS)
Vogt-Koelln-Str. 30
22527 Hamburg
Tel: 040 / 42883 - 2307
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
<mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
<mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
________________________
Dipl. Wi-Inf. Eugen Reiswich
Universität Hamburg (UHH)
Fakultät für Mathematik, Informatik
und Naturwissenschaften (MIN-Fakultät)
Department Informatik
Zentrum für Architektur
und Gestaltung von IT-Systemen (AGIS)
Vogt-Koelln-Str. 30
22527 Hamburg
Tel: 040 / 42883 - 2307
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
<mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
<mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
________________________
Dipl. Wi-Inf. Eugen Reiswich
Universität Hamburg (UHH)
Fakultät für Mathematik, Informatik
und Naturwissenschaften (MIN-Fakultät)
Department Informatik
Zentrum für Architektur
und Gestaltung von IT-Systemen (AGIS)
Vogt-Koelln-Str. 30
22527 Hamburg
Tel: 040 / 42883 - 2307
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
________________________
Dipl. Wi-Inf. Eugen Reiswich
Universität Hamburg (UHH)
Fakultät für Mathematik, Informatik
und Naturwissenschaften (MIN-Fakultät)
Department Informatik
Zentrum für Architektur
und Gestaltung von IT-Systemen (AGIS)
Vogt-Koelln-Str. 30
22527 Hamburg
Tel: 040 / 42883 - 2307
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users