2010-11-29 3 views
2

Ich stehe vor einem seltsamen Problem, die Quartz-Bibliothek in meinem liferay-Portal im Glassfish-Server laufen zu lassen. Die Anwendung besteht aus zwei Teilen: einer Vaadin-basierten Web-App, die den Quarz-Job startet und stoppt, und einem anderen, der die Job-Logik enthält.Problem mit Quartz-Bibliothek in Liferay/Glassfish mit Vaadin

Da der Joblogik-Teil von der Job-Schnittstelle abhängig ist, muss ich den Quartz als osgi-Bibliothek bereitstellen. Dadurch funktioniert alles einwandfrei und meine Webanwendung kann das installierte Jobmodul sehen, aber beim Start des Jobs gibt es einen Fehler.

previously initiated loading for a different type with name "org/quartz/Trigger" 

Ich denke, das kommt, weil ich die Quarz-Bibliothek in meinem Web-inf/lib als auch gegeben haben. Aber wenn ich das entferne, wirft das einen weiteren Fehler für Quartz-Abhängigkeiten.

Die einzige mögliche Lösung, die ich gerade habe, ist, die Quartz-Abhängigkeiten von der zweiten Komponente zu entfernen, die die Job-Geschäftslogik hat (implementiert org.quartz.Job; eine andere Schnittstelle erstellen).

Gibt es eine andere Möglichkeit, dies zu sortieren ???

Antwort

0

Versuchen Sie, Ihre Quarzabhängigkeiten in der WAR-Datei zu reparieren - verwenden Sie import-package und entfernen Sie den 2. Quarz aus WEB-INF/lib.

Stellen Sie außerdem sicher, dass die Quarzabhängigkeit tatsächlich ein Bündel ist oder dass Sie es dynamisch einwickeln.

Es klingt, als ob Sie Probleme mit dem Laden von Klassen aufgrund mehrerer Kopien von Trigger haben. Die Fehlermeldung quartz sagt Ihnen, dass es geladen wurde. Trigger von einem anderen Klassenlader als zuvor. Sie möchten definitiv nicht zwei identische Versionen eines Glases in Ihrer App.