[Eclipse RCP] Hibernate-Ressourcen im Classpath

Vatar

Erfahrenes Mitglied
Hi

Ich bastele gerade eine kleine RCP-Anwendung und nutze als OR-Mapping-Framework Hibernate. Ich möchte meine RCP schön sauber nach Aufgabenbereichen trennen, indem ich für jeden Teil ein eigenes Plugin benutze welches die benötigte Funktionalität bietet. Einen meiner Plugins soll als zentrale Stelle für Hibernate dienen. Die Jars befinden sich darin und eine kleine Hilfsklasse die mir den Zugriff auf die SessionFactory ermöglicht.
Die Datenstrukturen sollen jeweils im betreffenden Plugin mit der zugehörigen mapping.xml liegen. Diese muss dann nur einmal als mapping zu der cfg.xml hinzugefügt werden.

Mein Problem ist jetzt dass eben die Mapping-Resourcen nicht gefunden werden
Code:
Plugin_Hibernate/src/hibernate.cfg.xml

Plugin_A/src/bla.datastructures
                           Person.java
                           Person.hbm.xml

Plugin_B/src/blubb.datastructures
                           User.java
                           User.hbm.xml
Ich habe in der hibernate.cfg.xml die Pfade als bla.datastructures.Person..hbm.xml und blub.datastructures.User.hbm.xml eingetragen.
Was mache ich hier falsch?

Danke schon mal im Voraus.
-- Marc
 
bla.datastructures.Person..hbm.xml und blub.datastructures.User.hbm.xml

Ok, das war ja schon mal totaler Blödsinn :p
Laut dem Hibernate-Tutorial muss die Paketstruktur mit \ angegeben werden also

bla\datastructures\Person..hbm.xml und blub\datastructures\User.hbm.xml

Hat aber leider auch nicht weitergeholfen. Wie gesagt, die Dateien liegen auf jedem Fall im Classpath nur einem anderen Plugin.
 
Ich habe eine Lösung gefunden, aber noch kleine Probleme.

Das Problem ist, dass Eclipse für jedes Plugin einen eigenen Classpath hat. Seit Eclipse 3.1 gibt es aber die Möglichkeit ein sogenanntes Buddy-Classloading zu nutzen. Dazu musste ich im Manifest meinen HibernateWrapper zuerst registrieren
Code:
Eclipse-BuddyPolicy: registered
und danach müssen Plugins welche dem Wrapper ihren Classpath zur Verfügung stellen sollen einen Buddy registrieren
Code:
Eclipse-RegisterBuddy: toolseye.HibernateWrapper

Jetzt habe ich nur noch ein Problem, und zwar funktioniert das ganze nur mit der ersten Mapping Datei, welche im RCP-Plugin liegt. Ich vermute dass es mit der zweiten nicht funktioniert, da Eclipse die Plugins erst lädt wenn sie benötigt werden. Dummerweise sucht Hibernate gleich zu Beginn nach allen Dateien (wegen dem Login).

Ich habe mal irgendwo was gelesen dass ich in einer config die Reihenfolge angeben kann in der die Plugins zu beginn geladen werden.
Hat jemand von euch so etwas schon einmal gemacht? Und wie muss diese config ausschauen?

Thx
 
Zurück