# Custom JacksonJsonpMapper in RestClientTransport

**URL:** <https://discuss.elastic.co/t/custom-jacksonjsonpmapper-in-restclienttransport/336481>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [June 20, 2023, 12:34pm UTC](https://discuss.elastic.co/t/custom-jacksonjsonpmapper-in-restclienttransport/336481 "2023-06-20T12:34:11Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![JaroslavHolan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jaroslavholan/32/122506_2.png) [@JaroslavHolan](https://discuss.elastic.co/u/JaroslavHolan)\
**Post date:** [June 20, 2023, 12:34pm UTC](https://discuss.elastic.co/t/custom-jacksonjsonpmapper-in-restclienttransport/336481/1 "2023-06-20T12:34:11Z")

</div>

Hi,

I need to help with how to pass my instance of **JacksonJsonpMapper** to **RestClientTransport** in Spring Java/Kotlin project.

I have the following exception

```auto
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling. 

```

It is thrown by **JacksonJsonpMapper** in Elastic client

```auto
at co.elastic.clients.json.jackson.JacksonJsonpMapper.serialize(JacksonJsonpMapper.java:98) ~[elasticsearch-java-8.5.3.jar:?]

```

Artifact jackson-datatype-jsr310 is added to the pom.xml. It is ok.  
I can create my custom object mapper. It is ok.

```auto
val objectMapper = ObjectMapper().registerModule(JavaTimeModule())
val jsonpMapper = JacksonJsonpMapper(objectMapper)

```

In the documentation "Connecting" I see that I can pass on my instance of JacksonJsonpMapper

> **[Connecting | Elasticsearch Java API Client \[8.8\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/connecting.html)**

But how to do it in a project using Spring? Maybe by **ClientConfiguration**? How to pass my instance of **JacksonJsonpMapper**?

---

<div class="post-metadata">

**Author:** ![JaroslavHolan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jaroslavholan/32/122506_2.png) [@JaroslavHolan](https://discuss.elastic.co/u/JaroslavHolan)\
**Post date:** [June 20, 2023, 2:15pm UTC](https://discuss.elastic.co/t/custom-jacksonjsonpmapper-in-restclienttransport/336481/2 "2023-06-20T14:15:04Z")

</div>

I've just solved it by overriding the `elasticsearchClient()` method

```auto
    @Bean
    override fun elasticsearchClient(restClient: RestClient): ElasticsearchClient {
        val objectMapper = ObjectMapper().registerModule(JavaTimeModule())
        val jsonpMapper = JacksonJsonpMapper(objectMapper)
        val transport = RestClientTransport(restClient, jsonpMapper)
        return ElasticsearchClient(transport);
    }

```

---

<div class="post-metadata">

**Author:** ![swallez](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/swallez/32/11972_2.png) [@swallez](https://discuss.elastic.co/u/swallez)\
**Post date:** [June 20, 2023, 2:24pm UTC](https://discuss.elastic.co/t/custom-jacksonjsonpmapper-in-restclienttransport/336481/3 "2023-06-20T14:24:42Z")

</div>

This sounds more like a Spring Data Elasticsearch question. Unfortunately I don't have detailed knowledge of the configuration process in this context. Maybe ask there?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 18, 2023, 2:25pm UTC](https://discuss.elastic.co/t/custom-jacksonjsonpmapper-in-restclienttransport/336481/4 "2023-07-18T14:25:27Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
