mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
4.2.0
This commit is contained in:
@@ -2,8 +2,11 @@ package com.gitee.sop.gatewaycommon.gateway.codec;
|
|||||||
|
|
||||||
import com.gitee.sop.gatewaycommon.manager.EnvironmentKeys;
|
import com.gitee.sop.gatewaycommon.manager.EnvironmentKeys;
|
||||||
import org.springframework.core.codec.AbstractDataBufferDecoder;
|
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.http.codec.HttpMessageReader;
|
||||||
import org.springframework.util.ReflectionUtils;
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
import org.springframework.web.reactive.function.client.ExchangeStrategies;
|
||||||
import org.springframework.web.reactive.function.server.HandlerStrategies;
|
import org.springframework.web.reactive.function.server.HandlerStrategies;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
@@ -43,4 +46,23 @@ public class MessageReaderFactory {
|
|||||||
}
|
}
|
||||||
return messageReaders;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,10 +2,10 @@ package com.gitee.sop.gatewaycommon.gateway.filter;
|
|||||||
|
|
||||||
import com.gitee.sop.gatewaycommon.bean.ApiContext;
|
import com.gitee.sop.gatewaycommon.bean.ApiContext;
|
||||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||||
|
import com.gitee.sop.gatewaycommon.gateway.codec.MessageReaderFactory;
|
||||||
import com.gitee.sop.gatewaycommon.result.ResultExecutor;
|
import com.gitee.sop.gatewaycommon.result.ResultExecutor;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.reactivestreams.Publisher;
|
import org.reactivestreams.Publisher;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
||||||
import org.springframework.cloud.gateway.filter.GlobalFilter;
|
import org.springframework.cloud.gateway.filter.GlobalFilter;
|
||||||
import org.springframework.cloud.gateway.filter.NettyWriteResponseFilter;
|
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.BodyInserterContext;
|
||||||
import org.springframework.cloud.gateway.support.DefaultClientResponse;
|
import org.springframework.cloud.gateway.support.DefaultClientResponse;
|
||||||
import org.springframework.core.Ordered;
|
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.core.io.buffer.DataBuffer;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseCookie;
|
import org.springframework.http.ResponseCookie;
|
||||||
import org.springframework.http.client.reactive.ClientHttpResponse;
|
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.http.server.reactive.ServerHttpResponseDecorator;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.reactive.function.BodyInserter;
|
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 {
|
public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered {
|
||||||
|
|
||||||
@Value("${spring.codec.max-in-memory-size:262144}")
|
|
||||||
private int maxInMemorySize;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
||||||
@@ -107,16 +100,7 @@ public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered
|
|||||||
private ExchangeStrategies getExchangeStrategies() {
|
private ExchangeStrategies getExchangeStrategies() {
|
||||||
ExchangeStrategies exchangeStrategies = ExchangeStrategies.withDefaults();
|
ExchangeStrategies exchangeStrategies = ExchangeStrategies.withDefaults();
|
||||||
// 修复返回大文本数据报org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
|
// 修复返回大文本数据报org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
|
||||||
for (HttpMessageReader<?> messageReader : exchangeStrategies.messageReaders()) {
|
MessageReaderFactory.initMaxInMemorySize(exchangeStrategies);
|
||||||
if (messageReader instanceof DecoderHttpMessageReader) {
|
|
||||||
DecoderHttpMessageReader reader = (DecoderHttpMessageReader) messageReader;
|
|
||||||
Decoder decoder = reader.getDecoder();
|
|
||||||
if (decoder instanceof AbstractDataBufferDecoder) {
|
|
||||||
AbstractDataBufferDecoder dataBufferDecoder = (AbstractDataBufferDecoder)decoder;
|
|
||||||
dataBufferDecoder.setMaxInMemorySize(maxInMemorySize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return exchangeStrategies;
|
return exchangeStrategies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,7 +3,7 @@ package com.gitee.sop.websiteserver.exception;
|
|||||||
/**
|
/**
|
||||||
* @author tanghc
|
* @author tanghc
|
||||||
*/
|
*/
|
||||||
public class LoginFailureException extends RuntimeException implements ExceptionCode{
|
public class LoginFailureException extends RuntimeException implements ExceptionCode {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode getCode() {
|
public ErrorCode getCode() {
|
||||||
return ErrorCode.LOGIN_FAIL;
|
return ErrorCode.LOGIN_FAIL;
|
||||||
|
Reference in New Issue
Block a user