ich eine jersey2 Anwendung für JSON-Unterstützung über Jackson konfiguriert habe,Wie bekomme ich einen Verweis auf den Jackson Object Mapper in einer jersey2/hk2 Anwendung
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
in der POM-Datei und
public MyApplication() {
...
register(JacksonFeature.class)
...
}
Hinzufügen
in meiner Anwendung. Alles funktioniert, meine Ressourcen entserialisierten POJOs als Argument
@POST @Consumes(MediaType.APPLICATION_JSON)
public void blah(MyPojo p) {
...
}
Jetzt ist einer der thoese Ressourcen benötigt einen Verweis auf Jackson bekommen ObjectMapper
einig Deserialisierung auf seinem eigenen zu tun. Ich habe versucht, etwas zu tun, wie
@Inject
public MyResource(@Context ObjectMapper mapper) {
...
}
oder
@GET
public String foo(@Context ObjectMapper mapper) {
...
}
aber in beiden Fällen ist die Bezugnahme auf mapper
null ist. Wie kann ich einen Verweis auf die ObjectMapper
in meinen Ressourcen einfügen?
Das funktioniert, aber da ich (noch?) Von einem benutzerdefinierten 'ObjectMapper' nicht benötigt habe, habe ich auf einen Weg gehofft, Jersey's geschaffenes zu verwenden, anstatt mein eigenes zu liefern. – agnul
Wenn jemand "ein Problem hat: abstrakte Typen müssen entweder mit Dropwizard auf konkrete Typen gemappt werden, obwohl Sie ein Modul mit' addAbstractTypeMapping' registriert haben, hat diese Lösung das Problem wie ein Charm behoben (registrieren Sie einfach Ihr Modul in 'createDefaultMapper' und registriere diesen 'Provider' mit' environment.jersey(). register() 'im' run() 'deiner' Anwendung')! – qwertzguy