Wie verwenden von TomEE mit Hibernate
Habe ich erstellt sehr einfache app mit der persistenzkontext (hibernate als provider) Lesen einen Wert aus der Datenbank. Ich benutze Eclipse mit Maven.
Erste, ich bekomme
Caused by: org.apache.openejb.OpenEJBException: java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider:
und nach zu diesem Thema
http://openejb.979440.n4.nabble.com/problem-with-hibernate-persistence-provider-td980429.html
Ich ausgeschlossen hibernate-jpa-2.0-api. Nun, meine Abhängigkeiten Aussehen
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.3.Final</version>
<exclusions>
<exclusion>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</exclusion>
</exclusions>
</dependency>
Nun, ich weiß nicht warum...
Caused by: java.lang.ClassNotFoundException: org.hibernate.transaction.TransactionManagerLookup
Aber TransactionManagerLookup ist in hibernate-core.
Bitte, kann mir jemand sagen, wie die Aussehen sollte pom.xml die Verwendung von hibernate in TomEE?
- erklären Sie den Titel bitte
- Mit TomEE, ich bin versucht zu laufen, einfache Anwendung mit hibernate als jpa-provider. Nun, ich weiß nicht, welche Abhängigkeiten sollten berücksichtigt werden und welche ausgeschlossen werden sollen. Bibliotheken zur Verfügung gestellt von TomEE einige Konflikte mit der lib von maven, das ist, warum ich das ausschließen einige libs.
- Können Sie erweitern Sie den stacktrace auf der 'TransactionManagerLookup' Ausnahme?
- Ich klebte gesamte Konsole pastebin.com/MR1JDe8m
- Ich habe genau das gleiche problem und ich bin wirklich warten auf die Lösung!!!
- Es funktioniert, nachdem ich die deaktiviert maven-Abhängigkeiten und kopiert benötigten jar (hibernate, antlr) zu tomee/lib-Ordner.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Hinzufügen:
<tomee-home>/lib/antlr-2.7.7.jar
<tomee-home>/lib/dom4j-1.6.1.jar
<tomee-home>/lib/ehcache-core-2.5.1.jar
<tomee-home>/lib/ehcache-terracotta-2.5.1.jar
<tomee-home>/lib/hibernate-commons-annotations-4.0.1.Final.jar
<tomee-home>/lib/hibernate-core-4.1.4.Final.jar
<tomee-home>/lib/hibernate-ehcache-4.1.4.Final.jar
<tomee-home>/lib/hibernate-entitymanager-4.1.4.Final.jar
<tomee-home>/lib/hibernate-validator-4.3.0.Final.jar
<tomee-home>/lib/jboss-logging-3.1.0.GA.jar
<tomee-home>/lib/terracotta-toolkit-1.4-runtime-4.1.0.jar
Den ehcache Gläser könnten optional sein, aber habe nicht versucht, ohne Sie.
Entfernen (optional):
<tomee-home>/lib/asm-3.2.jar
<tomee-home>/lib/bval-core-0.4.jar
<tomee-home>/lib/bval-jsr303-0.4.jar
<tomee-home>/lib/commons-lang-2.6.jar
<tomee-home>/lib/openjpa-2.2.0.jar
<tomee-home>/lib/serp-1.13.1.jar
1. Kopieren Sie die gewünschten Ruhezustand .Gläser
<tomee-home>/lib
Laut der Dokumentation ( http://tomee.apache.org/tomee-and-hibernate.html ), die folgenden sind ausreichend und in der Tat arbeiteten Sie für mich:
All diese
.jars
enthalten sind in der Hibernate-ORM 4.2.x download ( http://hibernate.org/orm/ ), mit Ausnahme des Hibernate Validator, das ist ein separater download ( http://hibernate.org/validator/ ).2. Bearbeiten Sie Ihre pom.xml
Mithilfe der
javaee-api
maven-Artefakt mit einem Umfang vonprovided
können Sie jetzt mit der JPA-Spezifikation in Ihrem Projekt. Allerdings, wenn Sie wurden mit einigen Hibernate-spezifische features, Klassen oder Anmerkungen haben, können Sie immer noch auf das Überwintern in Ihrenpom.xml
um mit den Abhängigkeiten:3. Definieren Sie Ihre Datenbank-Verbindung
Bearbeiten
<tomee-home>/conf/tomee.xml
:Können Sie auch die oben
<Resource>...</Resource>
definition inWEB-INF/resources.xml
und versenden Sie es mit Ihrer Anwendung statt:4. JTA-Datasource
Nun, dass Sie gesagt TomEE, wie Sie eine Verbindung aufbauen, definieren eine JTA-datasource in
/src/main/java/META-INF/persistence.xml
:5. Starten Sie mit JPA
Erhalten eine
EntityManager
in einer CDI-bean oder EJB-so:Abschließende Anmerkungen
Hibernate-Versionen 4.3+
Ich bin mit Hibernate 4.2.21 (JPA 2.0, Java EE 6) zusammen mit TomEE 1.7.2. Alle TomEE 1.7.x, 1.6.x und 1.5.x funktionieren wird. Allerdings können Sie nicht verwenden, Hibernate 4.3+ (JPA 2.1 /Java-EE-7), wie TomEE 1.7.x und unten nur die Unterstützung von Java EE 6. Wenn Sie wirklich wollen, verwenden Sie die Java-EE-7-features zusammen mit TomEE, dieser blog-post könnte hilfreich sein: http://rmannibucau.wordpress.com/2013/07/19/little-tip-to-help-you-to-test-javaee-7-in-tomee-with-tomee-maven-plugin/
TomEE 1.5.x
TomEE 1.5.x enthält bereits eine
javassist-<version>.jar
, so dass Sie nicht haben, um zu kopieren.tomee-maven-plugin
mitconfiguration/libs/lib
(Blick auf die pom.xml)ja nur darum, die hibernate-jpa-2.1-api-1.0.0.Final.jar in den TomEE lib-Ordner für mich gearbeitet.