2016-08-02 14 views
0

Ich habe eine einfache Rest-Anwendung, die auf einem IBM MobileFirst 7.1 Liberty Server bereitgestellt wird. (Ich kenne die Implementierung des JAX-RS nicht, aber es ist in der Liberty Server Runtime enthalten, glaube ich)JAX-RS - Laden von @Provider-Klassen aus einer Jar-Datei

Ich muss etwas von meinem gemeinsamen Code mit anderen Teams teilen, also habe ich etwas von dem Code in verschoben ein separates Maven-Projekt, das als Server-Bibliothek hinzugefügt und hinzugefügt werden soll. Das alles funktioniert großartig, bis ich einige @Provider annotierte Klassen in das separate Maven-Projekt einfügen musste. Insbesondere sind einige ExceptionMapper-Implementierungen mit der @Provider-Annotation markiert.

Ich habe versucht, die Klasse direkt innerhalb der Anwendungsklassen getClasses() Methode zu setzen. Dies schien zu funktionieren, aber ich erhalte eine Warnmeldung, die besagt, dass meine Exception-Mapper-Implementierungen mit den @Provider- oder @Path-Annotationen (was sie sind) markiert werden müssen.

Gibt es einen Trick, um JAX-RS dazu zu bringen, diese Ressourcenklassen aus einer Jar-Datei zu erkennen?

+0

Bitte erwähnen Sie immer Ihre IBM MobileFirst-Version ... –

+0

@IdanAdar Wir betreiben MFP 7.1 –

Antwort

1

Damit der @Provider erkannt wird, versuchen Sie bitte, die JAR im Ordner "adapter/lib" anstelle des Ordners "server/lib" zu speichern.

+0

Gibt es trotzdem, es im Verzeichnis Server/Lib zu tun? Im Moment habe ich mehr als 10 Kopien des gleichen genauen Glases in jedem Adapter, weil sie alle es verwenden. Ich habe es auch im Verzeichnis Server/Lib, weil ich benutzerdefinierte Authentifikatoren habe, die auch einige Klassen verwenden. Schwierig zu verwalten –

+0

Es tut mir leid, aber nein. Der Adapter befindet sich in einer Sandbox. Aus diesem Grund können Sie ihn problemlos bereitstellen und die Bereitstellung rückgängig machen. Der Scan von Klassen für Annotationen erfolgt nur innerhalb des Adapterklassenladeprogramms. Der Server/lib ist ein Elternklassenlader des Adapters und konnte dort nicht gefunden werden. –

+0

Das macht Sinn, Danke für die weitere Erklärung. –

Verwandte Themen