4 Stimmen

Hibernate/JPA-Vererbungsproblem unter Weblogic

Im erhalten einen seltsamen Fehler beim Ausführen meiner spring2.5.6, jpa (hibernate3.4) webapp in Weblogic 10.3


[ERROR] Javassist Enhancement failed: com.xxx.domain.model.Scheme
java.lang.NoSuchMethodError: pcGetManagedFieldCount
        at com.xxx.domain.model.Fund.<clinit>(Fund.java)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAc
cessorFactory.java:25)

Die Klasse com.xxx.domain.model.Scheme ist eine zugeordnete Unterklassenentität der abstrakten Fondsentität in einer single_table-Vererbungshierarchie, und ich erhalte diesen Fehler für alle Entitäten in der Hierarchie. Ich verwende sowohl kommentierte Klassen als auch Xml-Metadaten, um die Zuordnungen für meine Persistenzklassen zu definieren.

Ich erhalte diesen Fehler nur, wenn die App in Weblogic bereitgestellt wird, also alles läuft gut mit Junit. Ich habe versucht, auf die neueste Version von javaassit.jar zu aktualisieren.

Problem Sieht für mich aus wie ein Problem mit der Reihenfolge der Klassenladung, aber ich kann es nicht herausfinden.

PS. Wie von bea vorgeschlagen, habe ich in der weblogic.xml folgendes hinzugefügt

<container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

Hat jemand irgendwelche Ideen, andere Tipps zur Konfiguration oder Richtungen, in die ich meine Untersuchung führen sollte?

2voto

JavaRocky Punkte 18459

Ich hatte das gleiche Problem.

Meine Entitäten erweiterten eine Klasse (@MappedSuperClass), die sich in einer Jar-Abhängigkeit befand. Ich musste diese Klasse aus der Jar-Datei in mein Projekt verschieben. Erst dann funktionierte es und konnte problemlos bereitgestellt werden.

Eine andere Möglichkeit, dieses Problem zu lösen, besteht darin, die Entitäten explizit in der persistence.xml anzugeben

0voto

duffymo Punkte 298898

Es tut mir leid, ich habe nur WebLogic 10.0 auf meinem Rechner, und es hat keine javassist JARs in der Distro. Es sieht so aus, als ob javassist erst in 10.3 für die AOP-Bytecode-Generierung hinzugefügt wurde.

Es könnte einen Versuch wert sein, das javassist JAR aus Ihrem WebLogic Deployment zu entfernen und die Version zu verwenden, die es unterstützt. Entfernen Sie das "prefer-web-inf-classes"-Tag aus Ihrer web.xml und schauen Sie, ob es mit der von WebLogic bevorzugten Version funktioniert.

0voto

Können Sie den Code für die Entitätsklasse und, falls Sie keine Annotationen verwenden, das Segment Ihrer hbm-Zuordnungsdatei posten?

Ihre Vermutung über den Klassenpfad könnte richtig sein. Versuchen Sie in Ihrer weblogic-application.xml folgendes

<prefer-application-packages>
  <package-name>antlr.*</package-name>
  <package-name>org.antlr.*</package-name>
</prefer-application-packages>

Wenn Sie weitere Protokollausgaben haben, veröffentlichen Sie diese bitte ebenfalls.

-1voto

Ich habe gerade selbst ein paar Tage damit verloren. Das Problem für mich war, dass ich 2 separate Data-Services-Module in meiner App. Ich glaube, 10.3 hat damit Probleme. Ich bin mir der Lösung nicht sicher, aber eine Lösung für mich bestand darin, meine beiden Datendienstmodule zu einem einzigen zu kombinieren. BEA scheint sich dieses Problems bewusst zu sein. Hoffentlich hilft die folgende URL weiter. Referenz CR370788. http://edocs.bea.com/wls/docs103/issues/known_resolved.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X