mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 12:56:28 +08:00
4.2.2
This commit is contained in:
14
pom.xml
14
pom.xml
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.3.4.RELEASE</version>
|
||||
<version>2.1.4.RELEASE</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
|
||||
@@ -36,12 +36,12 @@
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
|
||||
<!-- springboot 版本-->
|
||||
<spring-boot.version>2.3.4.RELEASE</spring-boot.version>
|
||||
<spring-boot.version>2.1.8.RELEASE</spring-boot.version>
|
||||
<!-- spring cloud 版本 -->
|
||||
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
|
||||
<spring-cloud.version>Greenwich.SR6</spring-cloud.version>
|
||||
<!-- spring cloud alibaba 版本 -->
|
||||
<!-- 具体版本对应关系见:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E -->
|
||||
<spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version>
|
||||
<spring-cloud-alibaba.version>2.1.2.RELEASE</spring-cloud-alibaba.version>
|
||||
|
||||
|
||||
<!-- Logging -->
|
||||
@@ -135,6 +135,12 @@
|
||||
<version>${easyopen.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>3.14.7</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.oschina.durcframework</groupId>
|
||||
<artifactId>easyopen-spring-boot-starter</artifactId>
|
||||
|
@@ -76,6 +76,14 @@
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
|
@@ -2,18 +2,16 @@ package com.gitee.sop.adminserver;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
public class AccountTest extends TestCase {
|
||||
public class AccountTest extends TestCase {
|
||||
|
||||
/*
|
||||
生成密码
|
||||
*/
|
||||
@Test
|
||||
public void genPwd() {
|
||||
public void testGen() {
|
||||
String username = "admin";
|
||||
String password = "123456";
|
||||
String save_to_db = DigestUtils.md5Hex(username + DigestUtils.md5Hex(password) + username);
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package com.gitee.sop.adminserver;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
@@ -9,8 +8,4 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
@SpringBootTest
|
||||
public class SopAdminServerApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@ package com.gitee.sop.gatewaycommon.bean;
|
||||
import lombok.Data;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.validation.ValidationException;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -24,7 +23,7 @@ public class GatewayPredicateDefinition {
|
||||
public GatewayPredicateDefinition(String text) {
|
||||
int eqIdx = text.indexOf(61);
|
||||
if (eqIdx <= 0) {
|
||||
throw new ValidationException("Unable to parse GatewayPredicateDefinition text '" + text + "', must be of the form name=value");
|
||||
throw new RuntimeException("Unable to parse GatewayPredicateDefinition text '" + text + "', must be of the form name=value");
|
||||
} else {
|
||||
this.setName(text.substring(0, eqIdx));
|
||||
String[] params = StringUtils.tokenizeToStringArray(text.substring(eqIdx + 1), ",");
|
||||
|
@@ -3,7 +3,6 @@ package com.gitee.sop.gatewaycommon.gateway;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.gitee.sop.gatewaycommon.bean.SopConstants;
|
||||
import com.gitee.sop.gatewaycommon.gateway.codec.MessageReaderFactory;
|
||||
import com.gitee.sop.gatewaycommon.gateway.common.FileUploadHttpServletRequest;
|
||||
import com.gitee.sop.gatewaycommon.gateway.common.RequestContentDataExtractor;
|
||||
import com.gitee.sop.gatewaycommon.gateway.common.SopServerHttpRequestDecorator;
|
||||
@@ -23,6 +22,7 @@ import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
||||
import org.springframework.web.reactive.function.server.HandlerStrategies;
|
||||
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
import org.springframework.web.server.WebFilterChain;
|
||||
@@ -47,7 +47,7 @@ public class ServerWebExchangeUtil {
|
||||
|
||||
private static final FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
|
||||
|
||||
private static final List<HttpMessageReader<?>> messageReaders = MessageReaderFactory.build();
|
||||
private static final List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().messageReaders();
|
||||
|
||||
/**
|
||||
* 重定向
|
||||
|
@@ -1,68 +0,0 @@
|
||||
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;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
public class MessageReaderFactory {
|
||||
|
||||
public static final String METHOD_SET_MAX_IN_MEMORY_SIZE = "setMaxInMemorySize";
|
||||
public static final String METHOD_GET_DECODER = "getDecoder";
|
||||
public static final int DEFAULT_SIZE = 256 * 1024;
|
||||
|
||||
public static List<HttpMessageReader<?>> build() {
|
||||
String maxInMemorySizeValueStr = EnvironmentKeys.MAX_IN_MEMORY_SIZE.getValue();
|
||||
int maxInMemorySizeValue = Integer.parseInt(maxInMemorySizeValueStr);
|
||||
List<HttpMessageReader<?>> messageReaders = HandlerStrategies.withDefaults().messageReaders();
|
||||
if (DEFAULT_SIZE == maxInMemorySizeValue) {
|
||||
return messageReaders;
|
||||
}
|
||||
// 设置POST缓存大小
|
||||
for (HttpMessageReader<?> httpMessageReader : messageReaders) {
|
||||
Method[] methods = ReflectionUtils.getDeclaredMethods(httpMessageReader.getClass());
|
||||
for (Method method : methods) {
|
||||
String methodName = method.getName();
|
||||
if (METHOD_SET_MAX_IN_MEMORY_SIZE.equals(methodName)) {
|
||||
ReflectionUtils.invokeMethod(method, httpMessageReader, maxInMemorySizeValue);
|
||||
} else if (METHOD_GET_DECODER.equals(methodName)) {
|
||||
Object decoder = ReflectionUtils.invokeMethod(method, httpMessageReader);
|
||||
if (decoder instanceof AbstractDataBufferDecoder) {
|
||||
AbstractDataBufferDecoder<?> bufferDecoder = (AbstractDataBufferDecoder<?>) decoder;
|
||||
bufferDecoder.setMaxInMemorySize(maxInMemorySizeValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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,7 +2,6 @@ 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;
|
||||
@@ -60,7 +59,7 @@ public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered
|
||||
//this will prevent exception in case of using non-standard media types like "Content-Type: image"
|
||||
httpHeaders.add(HttpHeaders.CONTENT_TYPE, originalResponseContentType);
|
||||
ResponseAdapter responseAdapter = new ResponseAdapter(body, httpHeaders);
|
||||
DefaultClientResponse clientResponse = new DefaultClientResponse(responseAdapter, getExchangeStrategies());
|
||||
DefaultClientResponse clientResponse = new DefaultClientResponse(responseAdapter, ExchangeStrategies.withDefaults());
|
||||
|
||||
//TODO: flux or mono
|
||||
Mono modifiedBody = clientResponse.bodyToMono(inClass)
|
||||
@@ -97,13 +96,6 @@ public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered
|
||||
return chain.filter(exchange.mutate().response(responseDecorator).build());
|
||||
}
|
||||
|
||||
private ExchangeStrategies getExchangeStrategies() {
|
||||
ExchangeStrategies exchangeStrategies = ExchangeStrategies.withDefaults();
|
||||
// 修复返回大文本数据报org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
|
||||
MessageReaderFactory.initMaxInMemorySize(exchangeStrategies);
|
||||
return exchangeStrategies;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return NettyWriteResponseFilter.WRITE_RESPONSE_FILTER_ORDER - 1;
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package com.gitee.sop.servercommon.configuration;
|
||||
|
||||
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
|
||||
import com.alibaba.cloud.nacos.NacosServiceManager;
|
||||
import com.alibaba.cloud.nacos.discovery.NacosWatch;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
@@ -22,7 +21,7 @@ public class ServiceConfiguration extends SpringmvcConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnProperty("spring.cloud.nacos.discovery.server-addr")
|
||||
public NacosWatch nacosWatch(NacosDiscoveryProperties nacosDiscoveryProperties, ObjectProvider<TaskScheduler> taskScheduler, Environment environment, NacosServiceManager nacosServiceManager) {
|
||||
public NacosWatch nacosWatch(NacosDiscoveryProperties nacosDiscoveryProperties, ObjectProvider<TaskScheduler> taskScheduler, Environment environment) {
|
||||
Map<String, String> metadata = nacosDiscoveryProperties.getMetadata();
|
||||
String contextPath = environment.getProperty(METADATA_SERVER_CONTEXT_PATH);
|
||||
// 将context-path信息加入到metadata中
|
||||
@@ -32,7 +31,7 @@ public class ServiceConfiguration extends SpringmvcConfiguration {
|
||||
// 在元数据中新增启动时间,不能修改这个值,不然网关拉取接口会有问题
|
||||
// 如果没有这个值,网关会忽略这个服务
|
||||
metadata.put("server.startup-time", String.valueOf(System.currentTimeMillis()));
|
||||
return new NacosWatch(nacosServiceManager, nacosDiscoveryProperties, taskScheduler);
|
||||
return new NacosWatch(nacosDiscoveryProperties, taskScheduler);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user