Konfigurieren Jersey mit Feder mit nur Anmerkungen
Ich habe ein Servlet 3.0 web-app, die mithilfe Frühjahr und Jersey. Momentan habe ich es über den SpringServlet konfiguriert als filter in web.xml und die Ressourcen-Klassen annotiert mit beiden @Path
und @Component
. Hier ist die web.xml snippet:
<filter>
<filter-name>jersey-serlvet</filter-name>
<filter-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</filter-class>
<init-param>
<param-name>
com.sun.jersey.config.property.packages
</param-name>
<param-value>com.foo;com.bar</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.feature.FilterForwardOn404</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jersey-serlvet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Diesem setup funktioniert, aber ich wirklich wollen, um dieses zu erhalten set mit Anmerkungen, nur keine web.xml config. Mein Erster Versuch in dieser war das entfernen der oben SpringServlet-Konfiguration und erstellen Sie eine Klasse, die Sie erweitert Application
. Hier ist ein snippet, dass:
@ApplicationPath("/*")
public class MyApplication extends PackagesResourceConfig {
public MyApplication() {
super("com.foo;com.bar");
HashMap<String, Object> settings = new HashMap<String, Object>(1);
settings.put(ServletContainer.FEATURE_FILTER_FORWARD_ON_404, true);
this.setPropertiesAndFeatures(settings);
}
}
Funktioniert, dass die JAX-RS-Ressourcen registriert sind, und ich kann trifft Sie auf Ihre URLs, aber Sie werfen NullPointerExceptions, wenn Sie versuchen, und verwenden Sie Ihre autowired Eigenschaften... das macht Sinn, weil ich vermute, dass die Ressourcen sind nun geladen von Jersey und sind nicht Spring managed beans, daher kein autowiring.
Trotz ein gutes Stück von der Suche rund um, ich finde keine Möglichkeit, das laden der Jersey Ressourcen als Spring-beans mit Annotationen nur. gibt es so einen Weg? ich weiß nicht wirklich wollen, um zu schreiben, ein Haufen code für die Ressourcen manuell Holen den Spring-Kontext und ruft DI, wenn ich helfen kann.
Wenn Anmerkungen-nur nicht zur Arbeit zu gehen, dann kann ich Leben mit der filter config in web.xml wenn ich können Sie eine Application
Klasse zu laden, anstatt eine Liste von Paketen zu Scannen. Wenn ich Sie loswerden kann der Paket-Liste gibt, und dann geben Sie nur ein Application
Instanz der Klasse, dann werde ich zufrieden sein.
Natürlich wäre es toll, wenn jemand eine definitive Antwort für mich, aber ich würde auch dankbar für jegliche Hinweise oder Tipps, wo ich sonst noch schauen könnten, oder Dinge zu versuchen.
Dank,
Matt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unten, ist Teil meiner app, die verwendet Servlet 3.0, Spring, Jersey 1.8 und es hat keine web.xml:
}
Habe ich noch nicht in der Lage, mein ideales Ergebnis, aber ich war in der Lage, gewisse Fortschritte zu erzielen, so werde ich hier posten, falls es hilft jemand anderes. Ich war in der Lage, die Verwendung der Spring-Servlet angeben, meine Bewerbung Klasse, wodurch das Paket aus der Liste web.xml.
Den web.xml erforderlichen änderungen werden in der init-params (filter-mapping ist nicht gezeigt, aber ist immer noch erforderlich):
Und dann in der application-Klasse, die ich hatte, um zu ändern, wie ich rief den super-Konstruktor leicht:
Immer noch nicht genau, was ich nach war, aber zumindest in diesem zieht ein wenig mehr config in Java-code und aus der web.xml, was ist wichtig für mich, wie ich bin versucht zu verstecken dieses detail.
Zwei Optionen in den Sinn (kein Wortspiel beabsichtigt).
SpringServlet
mit Ihrer eigenen Klasse, und fügen Sie entsprechende servlet 3.0 Anmerkungen zu.SpringServlet
zu einemApplication
Klasse, Sie lösen könnte, die Nein-autowiring problem durch aktivieren Frühjahr bauen-Zeit oder load-time bytecode-weaving. Das ermöglicht den Frühling zum einfügen von Objekten instanziiert überall statt nur Objekte von Frühling. Sehen "Mit AspectJ in eine Abhängigkeit zu injizieren domain objects mit Spring".Erste von allen, in einem servlet-3.0-container, die Sie nicht wirklich brauchen eine
web.xml
.Aber mit Jersey 2.0 können Sie ein flag setzen, Scannen Sie den gesamten web-app für annotierten Ressourcen:
Frühjahr wird automatisch aktiviert, wenn Sie dieses jar:
Ich Jersey verwendet, mit meiner bisher gemachten Projekt mit SpringMVC. Ich basiert mein code auf der Der Frühling ist die offizielle Dokumentation.
Configuration-Klassen in
config.package
sind:Hibernate-Konfiguration