Ich benutze Jetty 9.1 und Jersey 2.5.1. Jersey hat für Jetty integrierte Unterstützung, so beginne ich meinen Server wie folgt aus:Anlegesteg Eingebettet, Jersey 2, Weld
public static void main(String[] args) {
URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = ResourceConfig.forApplicationClass(MyApplication.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, config);
}
MyApplication einfach this.packages(...)
ruft meine REST-API-Klassen zum Nachschlagen.
Die Klasse REST api enthält jedoch ein mit @Inject
annotiertes Feld, das von WELD injiziert werden sollte. Offensichtlich wird WELD nicht gestartet (CDI-Unterstützung nicht aktiviert), und seltsamer, es sieht so aus, als ob HK2 (von Jersey 2 verwendet) versucht, die Injektion durchzuführen.
(Ich habe eine org.glassfish.hk2.api.UnsatisfiedDependencyException
beim Treffen der REST-Endpunkt).
Wie konfiguriere ich richtig WELD (vorzugsweise programmgesteuert)?
Stellen Sie sicher, dass Sie Weld 2.2+ verwenden, da es nur einige Fehler bei der CDI-Integration mit Jetty 9.1+ behoben hat. –