2012-04-19 13 views
5

Ich habe eine Anwendung, die JPA/Hibernate und Google Guice verwendet. Guice wird in einem ServletContextListener bootstrapped und richtet das EntityManagerFactory selbst ein.JBoss AS7 automatisches Laden JPA

Die Anwendung funktioniert auf Tomcat 7 einwandfrei, aber bei der Bereitstellung auf JBoss AS7 schlägt das fehl, da JBoss vor dem Aufruf von ServletContextListener die automatische Einrichtung von JPA vornimmt.

Wie kann ich JBoss dazu bringen, JPA nicht automatisch zu initialisieren und stattdessen auf meine ServletContextListener zu warten?

aktualisieren

Nach dem Link, der James unten angegeben:

Während der Anwendungsbereitstellung wird JPA Verwendung nachgewiesen (zB persistence.xml oder @ PersistenceContext/Einheit Anmerkungen) und injiziert Hibernate Abhängigkeiten in die Anwendungsbereitstellung.

https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Introduction

ich brauche, herauszufinden, wie diese "Auto-detect" Funktion zu deaktivieren.

Update # 2

Container Management von PPV kann durch Hinzufügen der folgenden Eigenschaft auf die persistence.xml deaktiviert werden:

<property name="jboss.as.jpa.managed" value="false" /> 

Nach this topic, ab Februar 2012 nur diese Funktionalität verfügbar in einem nächtlichen Build.

+0

Das ist ziemlich alt, aber ich stieß auf das gleiche Problem. Mein zusätzliches Problem ist, dass ich nicht persistence.xml verwende, sondern den Entity Manager Factory mit Java-Code deklariert und es scheint, dass das Hinzufügen der Eigenschaft dort ignoriert wird und keinen Unterschied macht. Irgendeine Idee, wenn es mit diesem Ansatz gelöst werden kann? – andreadi

+0

@andreadi Keine Ahnung. Ich habe nur eine Anwendung auf AS7 getestet, aber ich habe sie nie für dieses Projekt verwendet. Sie werden wahrscheinlich am besten eine neue Frage mit Ihren Besonderheiten stellen. –

Antwort

2

JBoss AS7 ist ein vollständiger Java EE-Server. Das bedeutet, dass eine JPA-Implementierung mitgeliefert wird. In Tomcat müssen Sie Ihre eigene JPA-Implementierung bereitstellen und führen im Wesentlichen JPA wie in Java SE aus.

Ich würde empfehlen, lesen Sie die JPA reference Dokumentation für AS7.

Sie erhalten auch CDI, so dass es keinen wirklichen Bedarf für Guice gibt. Sie könnten wahrscheinlich statt CDI verwenden Guice, aber ehrlich gesagt konnte ich nicht sagen, wie :-)

+0

Ich habe zuvor Oracle WebLogic 11g verwendet und es lädt standardmäßig nicht zwangsweise JPA, so dass es merkwürdig erscheint, dass JBoss dies tun würde. Ich überprüfe den Link allerdings. –

+0

Wahrscheinlich sehen Sie Ihre persistence.xml und laden Hibernate und die JPA-API. Ich bin mir ziemlich sicher, dass die meisten EE-Server dies tun, aber ich kann das nicht garantieren.Ich habe ein wenig gesucht und nichts ist mir wirklich aufgefallen, wie ich es deaktivieren kann. Möglicherweise können Sie das JPA-Subsystem deaktivieren und Hibernate mit Ihrer Anwendung bündeln. –

+0

Ich habe keine Möglichkeit gefunden, diese Funktion zu deaktivieren. Ich habe Ihre Antwort geuploadet und werde sie Anfang nächster Woche annehmen, wenn ich wieder im Büro bin, wenn niemand sonst Informationen darüber bereitstellt, wie die automatische Erkennung von JPA deaktiviert werden kann. Ich weiß Ihre Unterstützung zu schätzen, Ihr Link erklärte zumindest, was passiert ist. –