ошибкам сериализации при встрече с пустыми значениями.
При возникновении проблем, пожалуйста, выполните поиск в https://gitee.com/zhijiantianya/yudao-cloud/issues, чтобы проверить наличие аналогичной проблемы.
Не используйте шаблон при создании запроса, так как он будет автоматически удалён системой.
YudaoJacksonAutoConfiguration вызывает метод init
при конфигурации JsonUtils bean. Метод init
переопределяет объект objectMapper
, что приводит к тому, что логика обработки пустых значений в статическом блоке кода становится недействительной.
Метод init
переопределяет объект objectMapper
, что приводит к ошибкам при сериализации через JsonUtils.toJsonString
.
Первый шаг,
Второй шаг,### Ошибочное сообщение
2025-02-21 14:51:03.940 | ERROR 37748 | reactor-http-nio-2 [TID: N/A] o.s.w.s.adapter.HttpWebHandlerAdapter | [68782766-2] Error [com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.cloud.gateway.filter.factory.RewritePathGatewayFilterFactory$1 and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: cn.iocoder.yudao.gateway.filter.logging.AccessLog["route"]->org.springframework.cloud.gateway.route.Route["filters"]->java.util.Collections$UnmodifiableRandomAccessList[0]->org.springframework.cloud.gateway.filter.OrderedGatewayFilter["delegate"])] for HTTP GET "/admin-api/system/tenant/get-id-by-name?name=%E8%8A%8B%E9%81%93%E6%BA%90%E7%A0%81", but ServerHttpResponse already committed (200 OK)
2025-02-21 14:51:03.941 | ERROR 37748 | reactor-http-nio-2 [TID: N/A] r.n.http.server.HttpServerOperations | [68782766-2, L:/192.168.1.50:48080 - R:/192.168.1.50:53920] Error finishing response. Closing connection
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.cloud.gateway.filter.factory.RewritePathGatewayFilterFactory$1
Цепочка ошибки:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.cloud.gateway.filter.factory.RewritePathGatewayFilterFactory$1 and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: cn.iocoder.yudao.gateway.filter.logging.AccessLog["route"]->org.springframework.cloud.gateway.route.Route["filters"]->java.util.Collections$UnmodifiableRandomAccessList[0]->org.springframework.cloud.gateway.filter.OrderedGatewayFilter["delegate"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.18.2.jar:2.18.2]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoIgnoreThen]:
reactor.core.publisher Mono.then(Mono.java:4880)
cn.iocoder.yudao.gateway.filter.logging.AccessLogFilter.filterWithoutRequestBody(AccessLogFilter.java:132)
Original Stack Trace:
Ошибка была зафиксирована в следующих местах:
*_____________ Mono. затем ⇢ в cn. iocoder. yudao. gateway. filter. logging. AccessLogFilter. filterWithoutRequestBody(AccessLogFilter. java:132)
*____________ Mono. defer ⇢ в org. springframework. cloud. gateway. handler. FilteringWebHandler$DefaultGatewayFilterChain. filter(FilteringWebHandler. java:154)
*_____________ Mono. затем ⇢ в org. springframework. web. reactive. result. SimpleHandlerAdapter. handle(SimpleHandlerAdapter. java:46)
|_ Mono. onErrorResume ⇢ в org. springframework. web. reactive. DispatcherHandler. handleResultMono(DispatcherHandler. java:168)
|_ Mono. flatMap ⇢ в org. springframework. web. reactive. DispatcherHandler. handleResultMono(DispatcherHandler. java:172)
*____________ Mono. error ⇢ в org. springframework. web. reactive. result. method. annotation. RequestMappingHandlerAdapter. handleException(RequestMappingHandlerAdapter. java:340)
*__________ Mono. flatMap ⇢ в org. springframework. web. reactive. DispatcherHandler. handle(DispatcherHandler. java:154)
*____________ Mono. defer ⇢ в org. springframework. web. server. handler. DefaultWebFilterChain. filter(DefaultWebFilterChain. java:1 Yöntem:106)
|_ checkpoint ⇢ cn. iocoder. yudao. gateway. filter. cors. CorsFilter [DefaultWebFilterChain]
*____________ Mono. defer ⇢ в org. springframework. web. server. handler. DefaultWebFilterChain. filter(DefaultWebFilterChain. java:106)
|_ checkpoint ⇢ org. springframework. cloud. gateway. фильтр. ВесовойКалькуляторФильтр [DefaultWebFilterChain]
*____________ Mono. defer ⇢ в org. springframework. web. server. handler. DefaultWebFilterChain. filter(DefaultWebFilterChain. java:106)
|_ Mono. doOnError ⇢ в org. springframework. web. server. handler. ExceptionHandlingWebHandler. handle(ExceptionHandlingWebHandler. java:84)
|_ Mono. onErrorResume ⇢ в org. springframework. web. server. handler. ExceptionHandlingWebHandler. handle(ExceptionHandlingWebHandler. java:85)
|_ Mono. doOnError ⇢ в org. springframework. web. server. handler. ExceptionHandlingWebHandler. handle(ExceptionHandlingWebHandler. java:84)
|_ Mono. onErrorResume ⇢ в org. springframework. web. server. handler. ExceptionHandlingWebHandler. handle(ExceptionHandlingWebHandler. java:85)
|_ Mono. doOnError ⇢ в org. springframework. web. server. handler. ExceptionHandlingWebHandler. handle(ExceptionHandlingWebHandler. java:84)```java:84)
|_ Mono.onErrorResume ⇢ в org.springframework.web.server.handler.ExceptionHandlingWebHandler.handle(ExceptionHandlingWebHandler.java:85)
|_ Mono.doOnError ⇢ в org.springframework.web.server.handler.ExceptionHandlingWebHandler.handle(ExceptionHandlingWebHandler.java:84)
|_ Mono.onErrorResume ⇢ в org.springframework.web.server.handler.ExceptionHandlingWebHandler.handle(ExceptionHandlingWebHandler.java:85)
|_ Mono.doOnSuccess ⇢ в org.springframework.web.server.adapter.HttpWebHandlerAdapter.handle(HttpWebHandlerAdapter.java:299)
|_ Mono.onErrorResume ⇢ в org.springframework.web.server.adapter.HttpWebHandlerAdapter.handle(HttpWebHandlerAdapter.java:300)
|_ Mono.tap ⇢ в org.springframework.web.server.adapter.HttpWebHandlerAdapter.handle(HttpWebHandlerAdapter.java:301)
*____________ Mono.error ⇢ в org.springframework.web.server.handler.ExceptionHandlingWebHandler$CheckpointInsertingHandler.handle(ExceptionHandlingWebHandler.java:106)
|_ checkpoint ⇢ HTTP GET "/admin-api/system/tenant/get-id-by-name?name=%E8%8A%8B%E9%81%93%E6%BA%90%E7%A0%81" [ExceptionHandlingWebHandler]
*____________ Mono.error ⇢ в org.springframework.cloud.gateway.filter.headers.observation.ObservationClosingWebExceptionHandler.handle(ObservationClosingWebExceptionHandler.java:53)
*____________ Mono.error ⇢ в cn.iocoder.yudao.gateway.handler.GlobalExceptionHandler.обработка(GlobalExceptionHandler.java:35)
*____________ Mono.error ⇢ в org.springframework.web.server.handler.ResponseStatusExceptionHandler.handle(ResponseStatusExceptionHandler.java:68)
*____________ Mono.error ⇢ в org.springframework.web.server.adapter.HttpWebHandlerAdapter.handleUnresolvedError(HttpWebHandlerAdapter.java:358)
*____________ Mono.then ⇢ в org.springframework.web.server.adapter.HttpWebHandlerAdapter.handle(HttpWebHandlerAdapter.java:302)
*____________ Mono.then ⇢ в org.springframework.web.server.adapter.HttpWebHandlerAdapter.handle(HttpWebHandlerAdapter.java:303)
|_ Mono.doOnError ⇢ в org.springframework.http.server.reactive.ReactorHttpHandlerAdapter.apply(ReactorHttpHandlerAdapter.java:66)
|_ Mono.doOnSuccess ⇢ в org.springframework.http.server.reactive.ReactorHttpHandlerAdapter.apply(ReactorHttpHandlerAdapter.java:67)
*_Mono.
в com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1328) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:414) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:53) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:30) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:732) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:184) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) ~[jackson-databind-2.18.2.jar:2.18.2]
```plaintext
в com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:732) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:184) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:732) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:```java
java:770) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:184) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:502) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:341) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4811) ~[jackson-databind-2.18.2.jar:2.18.2]
в com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:4052) ~[jackson-databind-2.18.2.jar:2.18.2]
в cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString(JsonUtils.java:51) ~[classes/:na]
в cn.iocoder.yudao.gateway.filter.logging.AccessLogFilter.writeAccessLog(AccessLogFilter.java:71) ~[classes/:na]
в cn.iocoder.yudao.gateway.filter.logging.AccessLogFilter.lambda$filterWithoutRequestBody$0(AccessLogFilter.java:132) ~[classes/:na]
в reactor.core.publisher.MonoRunnable.call(MonoRunnable.java:73) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.publisher.MonoRunnable.call(MonoRunnable.java:32) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.publisher.AbstractSubscription.request(AbstractSubscription.java:68) ~[reactor-core-3.7.1.jar:3.7.1]
издательство MonoIgnoreThen$ThenIgnoreMain subscribeNext(MonoIgnoreThen.java:229) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.издательство MonoIgnoreThen$ThenIgnoreMain onComplete(MonoIgnoreThen.java:204) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.издательство FluxDoFinally$DoFinallySubscriber onComplete(FluxDoFinally.java:128) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.издательство MonoPeekTerminal$MonoTerminalPeekSubscriber onComplete(MonoPeekTerminal.java:299) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.издательство FluxPeekFuseable$PeekFuseableConditionalSubscriber onComplete(FluxPeekFuseable.java:595) ~[reactor-core-3.7.1.jar:3.7.1]
в reactor.core.издательство MonoIgnoreThen$ThenIgnoreMain onComplete(MonoIgnoreThen.```java
java:210) ~[reactor-core-3.7.1.jar:3.7.1]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) ~[reactor-core-3.7.1.jar:3.7.1]
at org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier.onComplete(ChannelSendOperator.java:428) ~[spring-web-6.2.1.jar:6.2.1]
at reactor.core.publisher MonoIgnoreElements$IgnoreElementsSubscriber.onComplete(MonoIgnoreElements.java:89) ~[reactor-core-3.7.1.jar:3.7.1]
at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:209) ~[reactor-core-3.7.1.jar:3.7.1]
at reactor.core.publisher MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:210) ~[reactor-core-3.7.1.jar:3.7.1]
at reactor.netty.channel MonoSendMany$SendManyInner.run(MonoSendMany.java:349) ~[reactor-netty-core-1.2.1.jar:1.2.1]
at reactor.netty.channel MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:434) ~[reactor-netty-core-1.2.1.jar:1.2.1]
at reactor.netty.channel MonoSendMany$SendManyInner.trySuccess(MonoSendMany.java:598) ~[reactor-netty-core-1.2.1.jar:1.2.1]
at reactor.netty.channel MonoSendMany$SendManyInner.trySuccess(MonoSendMany.java:118) ~[reactor-netty-core-1.2.1.jar:1.2.1]
at io.netty.util.concurrent.PromiseCombiner.tryPromise(PromiseCombiner.java:170) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.PromiseCombiner.access$600(PromiseCombiner.java:35) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.PromiseCombiner$1.operationComplete0(PromiseCombiner.java:62) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.PromiseCombiner$1.operationComplete(PromiseCombiner.java:44) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
116.Final]
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.internal.PromiseNotificationUtil.trySuccess(PromiseNotificationUtil.java:48) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.ChannelOutboundBuffer.safeSuccess(ChannelOutboundBuffer.java:748) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:303) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:383) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:437) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:929) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:359) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:893) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1319) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:935) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at reactor.netty.http.server.HttpTrafficHandler.flush(HttpTrafficHandler.java:347) ~[reactor-netty-http-1.2.1.jar:1.2.1]
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at reactor.netty.channel.MonoSendMany$SendManyInner$AsyncFlush.run(MonoSendMany.java:800) ~[reactor-netty-core-1.2.1.jar:1.2.1]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:166) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.channel.nio.NioEventLoop运行所有任务(NioEventLoop.java:552) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]```java
Final.jar:4.1.116.Final]run(NioEventLoop.java:569) ~[netty-transport-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.116.Final.jar:4.1.116.Final]
at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]