2016-03-29 14 views
6

Ich muss beide (seltsam genug ..) "Prefer-Web-Inf-Klassen" und "bevorzugen-Anwendung- Pakete Eigenschaften von weblogic.xml auf einem Weblogic Server 12c (12.2.1)Weblogic 12c: Prefer-Web-Inf-Klassen und Prefer-Application-Pakete für Jersey

Es ist REST-Anwendung basierend auf Jersey 1.9. * (Jersey 1.x JAX-RS RI) und Guice.

1 Warum verwenden: Prefer-Web-Inf-Klassen

Wenn Sie haben mehr als ein WAR müssen Sie auf der Ebene von Krieg/lib die Bibliotheken für Guice-Trikot/Guice platzieren, sonst erhalten Sie eine Multibindings Error.

Es muss auch die Prefer-Web-Inf-Klassen zu True angegeben werden. Dieser Weg funktioniert einwandfrei! Ich habe versucht, auf die gleiche Weise mit Prefer-Anwendung-Pakete mit Paketen zu arbeiten (com.sun.jersey.guice.spi.container.servlet /com.google.inject.servlet, etc ..), aber keine Möglichkeit .

Hinweis: Es ist nicht möglich, diese Bibliotheken auf EAR-Ebene auszuschließen.

2. Warum Gebrauch: bevorzugen-application-Pakete

zu verwenden Jersey 1.x JAX-RS RI auf Weblogic 12c (12.2.1), so dass ich die folgenden Pakete, um anzuzeigen, haben (andere Art und Weise Weblogic verwendet Jersey 2 und verschiedene Versionen von Jackson-Bibliotheken usw.)

Es funktioniert perfekt auf Jersey 1.X, wenn es indicated this way. ist. Ich habe zwei Krieg getrennt sondiert, und funktioniert gut ... aber bedenke, mein Freund, den ich zwei war..so haben ....

Zusammenfassung

ich nicht beide Eigenschaften verwenden können (die Bereitstellung von Fehler für mit beiden Eigenschaften auf der weblogic.xml ..), aber seine benötigt:

  1. Für das Problem mit Guice Filter, bevorzugen-web-inf-Klassen setzen müssen, um echte guice-servlet.jar/Jersey zu verwenden -guice.jar auf der Ebene des Kriegslibs.
  2. mit Jersey 1.x umgehen, müssen ..... verwenden möchten applikations Paket

Frage: Wie beide zu kombinieren, einer von ihnen verwenden ??

Antwort

1

Schließlich

  1. bevorzugen-web-inf-Klassen nur zu wahr.
  2. Wenn Sie dies verwenden, müssen Sie nicht bevorzugen-Anwendung-Pakete .... ABER SICHER, dass Sie die richtigen Bibliotheken auf Kriegs-/Ohr-Ebene haben.

    Das Problem war:

Das Projekt hatte eine Abhängigkeit mit Jersey 2 (basierend auf Swagger für Jersey 2.X ...) Also über Swagger Abhängigkeiten (Prahlerei-jersey2-jaxrs) , Jersey 2 Bibliotheken wurde auf Ohr/Krieg verpackt ... und so Prefer-Web-Inf-Klassen hat keine Wirkung! Nach dem Entfernen der Abhängigkeit alle aufgelöst.

Auf gleicher Ebene (Classpath oder Ohr lib oder Krieg lib) sollten nicht verschiedene Versionen derselben Bibliothek

+0

Ich möchte mein Kopfgeld zurück))! Niemand antwortete)) – Azimuts

0
  • Hallo, Welt! Hallo, Es gibt zwei Möglichkeiten, um dieses Problem zu lösen.

    1. Sie können beide Dateien in einer Datei zusammenfassen und sie basierend auf dem Tag tag als Anforderung aufrufen.

    2. Sie können einfach Tags schreiben, um Ihre XML-Datei zu einer Datei zusammenzuführen oder zu importieren. Beispiel gezeigt. Hinweis: Googlen Sie, wie zu fusionieren und Xml-Datei basierend auf Bedingung aufrufen.

+0

Leider existieren, aber das hat keinen Sinn ... Das gleiche weblogic.xml für beide gültig sein muss Zwecke, Arbeit mit Jersey 1.X und Jersey-Guice. – Azimuts