dirweis
I'm new here

Eigenes log4J

Hallo,

gibt es eine Version, die keine Klassen von log4J in org.slf4j (Datei fs-webrt.jar) mit liefert, da wir in unseren Modulen andere Versionen mitliefern?

Vielen Dank im Voraus!

Dirk

0 Kudos
8 Replies
feddersen
Community Manager

Hallo Dirk,

das sollte möglich sein, wenn du den scope der resource auf "module" setzt. Also einfach eine andere Version von log4j als Resource in der module.xml definieren.

Viele Grüße

Christoph

0 Kudos

Hallo Christoph,

   kann es dann nicht zu einem Problem kommen, wenn wir gegen Version X von slf4j kompilieren, aber das mit Version Y ausgeliefert wird?

Viele Grüße

   Elmar

0 Kudos

Hallo Elmar,

ich verstehe die Frage nicht ganz. Wenn du log4j als Resource im Modul angibst, musst du das log4j-Jar auch mit in das Modul packen. Da nimmst du die Version, die du haben willst.

Viele Grüße

Christoph

0 Kudos

Hallo Christoph,

   auf dem FS Server funktioniert das auch soweit. Wenn Du aber daraus eine WebApp machst und das auf einen Server installierst hast Du ein Versionsproblem - in dem war File befinden sich dann zwei verschiedene log4j bzw slf4j, eine davon "versteckt" in dem fs-webrt.jar, was natürlich zu Problemen führt. Lassen wir nun unsere slf4j jars weg, knallt es, weil in dem fs-webrt.jar die falsche Version ist.

Das Problem ist also, was am Schluß über das war File auf dem Tomcat landet, nicht im FS Server.

Viele Grüße

   Elmar

0 Kudos

Hallo Elmar,

den dezenten Hinweis auf die fs-webrt.jar hatte ich übersehen.

Das mit dem Scope funktioniert natürlich nur bei Modulen, die auf dem FirstSpirit-Server laufen. Die Webapplikationen haben ja nur einen Classpath und zumindest bei der Verwendung des internen Jetty wird das fs-webrt-jar gewinnen. In dem Fall bleibt euch nur kompatibel zur mitgelieferten Log4J  bzw. slf4j Implementierung zu bleiben. Auf das fs-webrt.jar werdet ihr ja wahrscheinlich nicht verzichten können.

Viele Grüße

Christoph

0 Kudos

Hallo Christoph,

das ist wahr, auf das mitgelieferte fs-webrt.jar können wir nicht einfach verzichten. Gibt es eine Liste von Klassen bzw. deren Versionen, die in diesem jar mit geliefert werden?

Vielen Dank im Voraus!

Dirk

0 Kudos

Würde mich ebenfalls interessieren, Danke.

Gruß

David

0 Kudos

Hallo zusammen,

Abhilfe könnte das Shade-Plugin von Maven liefern. Damit ist es möglich Klassen zu "relocaten", d.h. ihren Klassenpfad zu ändern. Z.B. von "com.foo.bar" auf "com.shaded.foo.bar". Somit können Classloading-Konflikte, wie der oben beschriebene, vermieden werden.

https://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html

Eine Auflistung von allen Klassen inkl. Version die in den einzelnen FS-Jars enthalten sind gibt es meines Wissens nach nicht. Für dieses "Feature" gibt es allerdings schon einen Feature-Request, für den gerne gevoted werden darf Smiley Wink:

https://community.e-spirit.com/ideas/1575

Grüße

Sandro

0 Kudos