diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/codec/MessageReaderFactory.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/codec/MessageReaderFactory.java index 95d6ff56..b81f1eec 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/codec/MessageReaderFactory.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/codec/MessageReaderFactory.java @@ -2,8 +2,11 @@ package com.gitee.sop.gatewaycommon.gateway.codec; import com.gitee.sop.gatewaycommon.manager.EnvironmentKeys; import org.springframework.core.codec.AbstractDataBufferDecoder; +import org.springframework.core.codec.Decoder; +import org.springframework.http.codec.DecoderHttpMessageReader; import org.springframework.http.codec.HttpMessageReader; import org.springframework.util.ReflectionUtils; +import org.springframework.web.reactive.function.client.ExchangeStrategies; import org.springframework.web.reactive.function.server.HandlerStrategies; import java.lang.reflect.Method; @@ -43,4 +46,23 @@ public class MessageReaderFactory { } return messageReaders; } + + public static void initMaxInMemorySize(ExchangeStrategies exchangeStrategies) { + // 修复返回大文本数据报org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 + String maxInMemorySizeValueStr = EnvironmentKeys.MAX_IN_MEMORY_SIZE.getValue(); + int maxInMemorySizeValue = Integer.parseInt(maxInMemorySizeValueStr); + if (DEFAULT_SIZE == maxInMemorySizeValue) { + return; + } + for (HttpMessageReader messageReader : exchangeStrategies.messageReaders()) { + if (messageReader instanceof DecoderHttpMessageReader) { + DecoderHttpMessageReader reader = (DecoderHttpMessageReader) messageReader; + Decoder decoder = reader.getDecoder(); + if (decoder instanceof AbstractDataBufferDecoder) { + AbstractDataBufferDecoder dataBufferDecoder = (AbstractDataBufferDecoder)decoder; + dataBufferDecoder.setMaxInMemorySize(maxInMemorySizeValue); + } + } + } + } } diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/GatewayModifyResponseGatewayFilter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/GatewayModifyResponseGatewayFilter.java index e6a13901..2167b8a2 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/GatewayModifyResponseGatewayFilter.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/GatewayModifyResponseGatewayFilter.java @@ -2,10 +2,10 @@ package com.gitee.sop.gatewaycommon.gateway.filter; import com.gitee.sop.gatewaycommon.bean.ApiContext; import com.gitee.sop.gatewaycommon.bean.SopConstants; +import com.gitee.sop.gatewaycommon.gateway.codec.MessageReaderFactory; import com.gitee.sop.gatewaycommon.result.ResultExecutor; import org.apache.commons.lang3.StringUtils; import org.reactivestreams.Publisher; -import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.NettyWriteResponseFilter; @@ -13,16 +13,12 @@ import org.springframework.cloud.gateway.filter.factory.rewrite.CachedBodyOutput import org.springframework.cloud.gateway.support.BodyInserterContext; import org.springframework.cloud.gateway.support.DefaultClientResponse; import org.springframework.core.Ordered; -import org.springframework.core.codec.AbstractDataBufferDecoder; -import org.springframework.core.codec.Decoder; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseCookie; import org.springframework.http.client.reactive.ClientHttpResponse; -import org.springframework.http.codec.DecoderHttpMessageReader; -import org.springframework.http.codec.HttpMessageReader; import org.springframework.http.server.reactive.ServerHttpResponseDecorator; import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.BodyInserter; @@ -40,9 +36,6 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.O */ public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered { - @Value("${spring.codec.max-in-memory-size:262144}") - private int maxInMemorySize; - @Override @SuppressWarnings("unchecked") public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { @@ -107,16 +100,7 @@ public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered private ExchangeStrategies getExchangeStrategies() { ExchangeStrategies exchangeStrategies = ExchangeStrategies.withDefaults(); // 修复返回大文本数据报org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 - for (HttpMessageReader messageReader : exchangeStrategies.messageReaders()) { - if (messageReader instanceof DecoderHttpMessageReader) { - DecoderHttpMessageReader reader = (DecoderHttpMessageReader) messageReader; - Decoder decoder = reader.getDecoder(); - if (decoder instanceof AbstractDataBufferDecoder) { - AbstractDataBufferDecoder dataBufferDecoder = (AbstractDataBufferDecoder)decoder; - dataBufferDecoder.setMaxInMemorySize(maxInMemorySize); - } - } - } + MessageReaderFactory.initMaxInMemorySize(exchangeStrategies); return exchangeStrategies; } diff --git a/sop-website/sop-website-server/src/main/java/com/gitee/sop/websiteserver/exception/LoginFailureException.java b/sop-website/sop-website-server/src/main/java/com/gitee/sop/websiteserver/exception/LoginFailureException.java index d69a1c57..6ef7506e 100644 --- a/sop-website/sop-website-server/src/main/java/com/gitee/sop/websiteserver/exception/LoginFailureException.java +++ b/sop-website/sop-website-server/src/main/java/com/gitee/sop/websiteserver/exception/LoginFailureException.java @@ -3,7 +3,7 @@ package com.gitee.sop.websiteserver.exception; /** * @author tanghc */ -public class LoginFailureException extends RuntimeException implements ExceptionCode{ +public class LoginFailureException extends RuntimeException implements ExceptionCode { @Override public ErrorCode getCode() { return ErrorCode.LOGIN_FAIL;