diff --git a/pom.xml b/pom.xml
index 4c6e50a..a2362e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
org.apache.dubbo
dubbo
- ${dubbo.version}
+ 2.7.2
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/Filter.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/Filter.java
deleted file mode 100644
index 061197e..0000000
--- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/Filter.java
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-package cn.ecpark.service.usergw.biz;
-
-/**
- * Filter
- */
-public class Filter {
-
-
-}
\ No newline at end of file
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/DubboFilter.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/DubboFilter.java
new file mode 100644
index 0000000..1d6b4df
--- /dev/null
+++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/DubboFilter.java
@@ -0,0 +1,42 @@
+package cn.ecpark.service.usergw.biz.filters;
+
+import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.ReferenceConfig;
+import org.apache.dubbo.config.RegistryConfig;
+import org.apache.dubbo.rpc.service.GenericService;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+
+import reactor.core.publisher.Mono;
+
+@Component
+public class DubboFilter implements GlobalFilter, Ordered {
+
+ @Override
+ public int getOrder() {
+ return Ordered.LOWEST_PRECEDENCE;
+ }
+
+ @Override
+ public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+ exchange.getRequest();
+ ReferenceConfig reference = new
+ ReferenceConfig(); // 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存
+
+ reference.setApplication(new ApplicationConfig("dubbo-exchange"));
+ // reference.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
+ reference.setInterface("ocean.demo.api.IExchange"); // 弱类型接口名
+ reference.setVersion("1.0.0");
+ reference.setGeneric(true); // 声明为泛化接口
+ GenericService gs = reference.get();
+
+
+ Object result = gs.$invoke("Hello", new String[]{}, new Object[]{});
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java
new file mode 100644
index 0000000..c512bd1
--- /dev/null
+++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/VerifyFilter.java
@@ -0,0 +1,68 @@
+package cn.ecpark.service.usergw.biz.filters;
+
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.annotation.Order;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+
+import lombok.extern.slf4j.Slf4j;
+import reactor.core.publisher.Mono;
+
+@Slf4j
+@Component
+@SpringBootConfiguration
+@Order(-200)
+public class VerifyFilter implements GlobalFilter {
+
+ @Override
+ public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+
+ if(true) return chain.filter(exchange);
+
+ ServerHttpRequest request = exchange.getRequest();
+ HttpHeaders header = request.getHeaders();
+
+ ServerHttpResponse response = exchange.getResponse();
+ HttpHeaders respHeader = response.getHeaders();
+ respHeader.add("token-expire", String.valueOf(System.currentTimeMillis() / 1000));
+ respHeader.add("version", "v0.0.1");
+
+ String token = header.getFirst("token");
+ if (token != null) {
+ //
+ if (VerifyToken(token)) {
+ log.info("request token is Verify Successed: {}", token);
+ return chain.filter(exchange);
+ }
+ log.info("request token is Verify Fail: {} != {}", token, TEST_TOKEN);
+ } else {
+ log.warn("request token is empty: {}", request.getURI());
+ }
+
+ if (!response.setStatusCode(HttpStatus.UNAUTHORIZED)) {
+ log.error("if the status code has not been set because the HTTP response is already committed");
+ }
+
+ return response.setComplete();
+ }
+
+ public static final String TEST_TOKEN = "yame";
+
+ public boolean VerifyToken(String token) {
+ if (token.equals(TEST_TOKEN)) {
+ return true;
+ }
+ return false;
+ }
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/Route.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java
similarity index 84%
rename from usergw-service/src/main/java/cn/ecpark/service/usergw/biz/Route.java
rename to usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java
index a120301..137bdab 100644
--- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/Route.java
+++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/routes/Route.java
@@ -1,5 +1,5 @@
-package cn.ecpark.service.usergw.biz;
+package cn.ecpark.service.usergw.biz.routes;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
@@ -29,10 +29,7 @@ public class Route {
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
- return builder.routes()
- .route("path_route", r -> r.path("/about")
- .uri("http://ityouknow.com"))
- .build();
+ return builder.routes().build();
}
}
\ No newline at end of file
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java
index 1912550..274beb5 100644
--- a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java
+++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java
@@ -1,7 +1,6 @@
package cn.ecpark.service.usergw.config;
import java.io.InputStream;
-import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URI;
import java.util.ArrayList;
@@ -10,24 +9,16 @@ import java.util.List;
import java.util.Map;
import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.rpc.service.GenericService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.cloud.gateway.filter.FilterDefinition;
-import org.springframework.cloud.gateway.filter.NettyWriteResponseFilter;
-import org.springframework.cloud.gateway.handler.RoutePredicateHandlerMapping;
import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.cloud.gateway.route.RouteDefinitionLocator;
import org.springframework.context.ApplicationContext;
-import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
-import org.springframework.util.ReflectionUtils;
import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.reactive.config.WebFluxConfigurationSupport;
-import org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping;
import org.springframework.web.reactive.result.method.RequestMappingInfo;
import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping;
import org.yaml.snakeyaml.Yaml;
@@ -36,8 +27,6 @@ import cn.ecpark.service.usergw.impl.http.Http2Dubbo;
import cn.ecpark.service.usergw.utils.Convert;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Flux;
-import reactor.netty.http.server.HttpServerRequest;
-import reactor.netty.http.server.HttpServerResponse;
/**
* ConfigGateway
@@ -89,14 +78,23 @@ public class ConfigGateway implements RouteDefinitionLocator {
Map configDefault = (Map) configYaml.get("default");
Map configDubbo = (Map) configYaml.get("dubbo");
- this.createHttp2Dubbo(configDubbo);
- return Flux.fromIterable(this.getConfigDefault(configDefault));
+ if ( configDubbo != null && !configDubbo.isEmpty()) {
+ this.createHttp2Dubbo(configDubbo);
+ }
+
+ if( configDefault != null && !configDefault.isEmpty()) {
+ List result = this.getConfigDefault(configDefault);
+ if (result != null ) {
+ return Flux.fromIterable(result);
+ }
+ }
}
}
- return null;
+ return Flux.empty();
// return Flux.fromIterable(it);
}
+ @SuppressWarnings("unchecked")
private List getConfigDefault(Map configDefault) {
if (configDefault != null) {
List RDList = new ArrayList<>();
@@ -171,14 +169,11 @@ public class ConfigGateway implements RouteDefinitionLocator {
try {
- // RequestMappingHandlerMapping requestMapping = (RequestMappingHandlerMapping) applicationContext
- // .getBean("requestMappingHandlerMapping");
+ RequestMappingHandlerMapping requestMapping = (RequestMappingHandlerMapping) applicationContext
+ .getBean("requestMappingHandlerMapping");
- // // Method targetMethod = ReflectionUtils.findMethod(Http2Dubbo.class, "H2DTest",
- // // HttpServerRequest.class, HttpServerResponse.class); // 找到处理该路由的方法
-
- // requestMapping.registerMapping(RequestMappingInfo.paths("/test/xixi").methods(RequestMethod.POST).build(),
- // http2Dubbo, Http2Dubbo.class.getDeclaredMethod("H2DTest"));
+ requestMapping.registerMapping(RequestMappingInfo.paths("/test/xixi").methods(RequestMethod.POST).build(),
+ http2Dubbo, Http2Dubbo.class.getDeclaredMethod("H2DTest"));
// 引用远程服务
// try {
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/http/Http2Dubbo.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/http/Http2Dubbo.java
index 9f5b93c..46eb643 100644
--- a/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/http/Http2Dubbo.java
+++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/http/Http2Dubbo.java
@@ -1,7 +1,5 @@
package cn.ecpark.service.usergw.impl.http;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@@ -24,8 +22,8 @@ public class Http2Dubbo {
}
- @RequestMapping("/test/fuck")
+ @RequestMapping("/test/request")
public String fuck() {
- return "fuck";
+ return "request";
}
}
\ No newline at end of file
diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/rpc/DemoHello.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/rpc/DemoHello.java
index 2b32a97..eafc119 100644
--- a/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/rpc/DemoHello.java
+++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/impl/rpc/DemoHello.java
@@ -5,8 +5,8 @@ import org.springframework.stereotype.Component;
import cn.ecpark.service.usergw.api.IDemo;
-@Service(interfaceClass = IDemo.class)
-@Component
+// @Service(interfaceClass = IDemo.class)
+// @Component
public class DemoHello implements IDemo {
@Override
diff --git a/usergw-service/src/main/resources/application.properties b/usergw-service/src/main/resources/application.properties
index a306709..a574dd0 100644
--- a/usergw-service/src/main/resources/application.properties
+++ b/usergw-service/src/main/resources/application.properties
@@ -2,6 +2,6 @@
spring.application.name=gateway
dubbo.scan.base-packages=cn.ecpark.service.usergw.impl
dubbo.protocol.name=dubbo
-dubbo.protocol.port=20080
+dubbo.protocol.port=20999
dubbo.registry.address=zookeeper://127.0.0.1:2181
server.port=8888
diff --git a/usergw-service/src/main/resources/gateway.yaml b/usergw-service/src/main/resources/gateway.yaml
index 4eef7c2..54d6615 100644
--- a/usergw-service/src/main/resources/gateway.yaml
+++ b/usergw-service/src/main/resources/gateway.yaml
@@ -5,10 +5,15 @@ default:
- id: path_route
uri: http://httpbin.org:80/get
- order: 12
+ order: 10
predicates:
- # - Path=/get
+ - Path=/get
- Header=XX, \d+
+ # - id: redirect_to
+ # uri: http://localhost/test/**
+ # order: 11
+ # filters:
+ # - RedirectTo=302, http://httpbin.org:80/get
dubbo:
routes:
- id: test