getContext () -Methode von CustomContextResolver wird von Jackson nicht aufgerufen

Ich kämpfe seit Tagen mit diesem Problem und habe keine Ahnung, wie ich es lösen soll. Jede schnelle Hilfe wird dankbar sein. Ich muss LocalDate von der JSON-Zeichenfolge konvertieren, die ich vom REST-Service-Build mit Apache CXF und Jackson erhalte. Ich habe benutzerdefinierten ContextResolver geschrieben und JavaTimeModule im Mapper-Objekt registriert. Wenn ich die Anwendung ausführe, wird der Standardkonstruktor aufgerufen, das heißt, sie wurde geladen, aber die Methode getContext (), die ObjectMapper zurückgibt, wird nie aufgerufen.

Ich habe denselben ContextResolver auf Server- und Clientseite registriert. Alle Abhängigkeiten sind vorhanden (jackson databind, core, annotation, datatype-jsr310).

Ich kann eine JSON-Antwort abrufen, wenn ich die REST-URI direkt im Browser drücke. Das Problem tritt auf, wenn ich dieselbe mit URI-Anmerkungen versehene Methode vom Client-Code aus aufrufe. Unten ist mein Client-Code.

import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;


@Provider //makes this bean a Provider
public class LocalDateObjectMapperContextResolver implements ContextResolver<ObjectMapper>{

    private final ObjectMapper MAPPER;

    public LocalDateObjectMapperContextResolver() {
        MAPPER = new ObjectMapper();
        MAPPER.registerModule(new JavaTimeModule());
        MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return MAPPER;
    }

}
<jaxrs:client id="testclient"
    serviceClass="package1.RESTService"
    username="abc"
    password="abc"
    address="$serviceURL">

    <jaxrs:features>
        <bean class="org.apache.cxf.transport.common.gzip.GZIPFeature"/>
        <cxf:logging/>
    </jaxrs:features>

    <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
        <bean class="mypackage.LocalDateObjectMapperContextResolver"/>
    </jaxrs:providers>

</jaxrs:client>

Same way, Dieser contextResolver ist serverseitig auch unter @ registrie

<jaxrs:server>
.....
 <jaxrs:providers>
    <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"/>
            <bean class="mypackage.LocalDateObjectMapperContextResolver"/>
  </jaxrs:providers>
</jaxrs:server>

Jeder Grund, warum getContext nicht aufgerufen wird?

Ich habe auch versucht, ObjectMapper zu erweitern und dort javaTimeModule zu registrieren, weiß aber nicht, wie ich customObjectMapper in Jackson Flow registrieren soll. Ich habe nur den Standardkonstruktor zum Testen angegeben. Er wird beim Start der Anwendung aufgerufen. Aber es gibt keine Ergebnisse. Es wird immer noch derselbe Fehler angezeigt.

Error: Es wurde kein geeigneter Konstruktor für den Typ [einfacher Typ, Klasse java.time.LocalDate] gefunden: Kann nicht vom JSON-Objekt instanziiert werden (Typinformationen müssen hinzugefügt / aktiviert werden?)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage