diff --git a/README.md b/README.md index 13c0e0c..d099bd5 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ Already Implemented functions - Multi-module project base on SBT - Pressure measurement base on JMH - Configuration injection base on typesafe Config +- Services can be configured and configuration file can be configured + - loading diff --git a/build.sbt b/build.sbt index ee00767..9bc2366 100644 --- a/build.sbt +++ b/build.sbt @@ -3,7 +3,7 @@ import Dependencies.Versions //工程通用配置 lazy val commonSettings = Seq( organization := "io.growing", - version := "1.0.13", + version := "1.1.0", scalaVersion := Versions.scala212, Dependencies.commons ) diff --git "a/dls-benchmark/src/main/java/io/growing/dlsrpc/benchmark/\350\257\264\346\230\216.md" "b/dls-benchmark/src/main/java/io/growing/dlsrpc/benchmark/\350\257\264\346\230\216.md" index f920f34..765a8be 100644 --- "a/dls-benchmark/src/main/java/io/growing/dlsrpc/benchmark/\350\257\264\346\230\216.md" +++ "b/dls-benchmark/src/main/java/io/growing/dlsrpc/benchmark/\350\257\264\346\230\216.md" @@ -7,45 +7,84 @@ * 需要压测就安装 IDEA 的 JMH插件 * 不要使用我核心包的models,那是测试用的! * 基于JDK代理的RPC,接口和实现需要同包或者实现类在子包! -* 在哪启动哪个 dlsRPC.conf 文件就生效,若在 core 启动开发时的测试类,那么生效的配置是 core 模块下的 dlsRPC.conf +* dlsRPC.conf 可配置consul是否开启,默认开! * 服务端启动后马上停止且状态码 0 ,一般是端口通道打开失败! * 如果不会使用 sbt publish 那就使用 resources 下的jar +* 必须将 dlsrpc.consul.registry.package-service 属性设置为自己项目的顶级包名! + + +下面是最小配置项 + +``` +//使用此RPC的项目需要提供dlsRpc.conf文件,否则使用默认配置。 +//调用Configuration.config(filePath),可以使用其他config文件夹下的配置文件 +//这配置文件给本测试用的,也是本地测试时最少配置 + +//默认注册的包下的service,需要改为自己项目的顶级包 +dlsrpc.consul.registry.package-service = "io.growing.dlsrpc.test" + +//若忘记配dlsrpc.consul.server.address或未开启consul,则认为是本地调用,将使用本地服务地址 +//需要与服务端启动时的端口相同 +dlsrpc.server.address.default = "127.0.0.1:8080" +``` 下面 是 benchmark 模块的一个可用的 dlsRPC.conf 配置文件,直接放到自己项目的 resources 下面即可 ``` -//consul ip,本地不用改 +//这是默认的 +//使用此RPC的项目需要提供dlsRpc.conf文件,否则使用默认配置。 +//调用Configuration.config(filePath),可以使用其他config文件夹下的配置文件 + +//consul ip,需要抽出去为用户配置 dlsrpc.consul.host = "127.0.0.1" -//consul 端口,本地不用改 +//consul 端口,需要抽出去为用户配置 dlsrpc.consul.port = 8500 -//服务器端所有可用ip,用于负载均衡,本地不需要改 +//consul 服务健康检查间隔时间 1秒 +dlsrpc.consul.interval = 1s + +//默认开启服务注册 +dlsrpc.consul.enable = true + +//服务器端所有可用ip,用于负载均衡,需要抽出去为用户配置 //此配置不能完全决定服务地址的选取,但是在此配置的ip将被负载均衡优先选择 dlsrpc.consul.server.address = ["127.0.0.1"] -//默认注册的包下的service,需要改为自己项目的顶级包 -dlsrpc.consul.registry.package-service = "io.growing.dlsrpc.benchmark" +//ip:port验证 +dlsrpc.consul.adress-pattern = "(?:(?:[0,1]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}(?:[0,1]?\\d?\\d|2[0-4]\\d|25[0-5]):\\d{0,5}" + +//仅ip验证 +dlsrpc.consul.ip-pattern = "(?:(?:[0,1]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}(?:[0,1]?\\d?\\d|2[0-4]\\d|25[0-5])" -//客户端超时时间 +//默认注册的包下的service,需要抽出去为用户配置 +dlsrpc.consul.registry.package-service = "io.growing.dlsrpc" + +//客户端超时时间,需要抽出去为用户配置 dlsrpc.client.timeout = 30000 -//若忘记配dlsrpc.consul.server.address,则认为是本地调用,将使用本地服务地址 -dlsrpc.server.address.default = "127.0.0.1:8080" +//请求id,一般从 0 开始自增 +dlsrpc.client.request-start-value = 0 + +//HTTP 消息长度,TCP解码用 +dlsrpc.http.message-length = 4 + +//默认是服务调用地址就是本地,需要抽出去为用户配置或改为缓存地址到本地 +dlsrpc.server.address.default = "localhost:8080" -//(调用方会根据此地址建立连接) -//web服务默认端口 -dlsrpc.server.port = 9998 +//web服务默认端口,需要抽出去为用户配置 +//需要与服务启动时的端口相同 +dlsrpc.server.port = 8080 -//默认WEB服务在本地,本不应该配置在此,但是本地测试都是在单机上,服务实际地址也是本地 +//默认WEB服务在本地,需要抽出去为用户配置 dlsrpc.server.ip = "127.0.0.1" -//负载均衡默认权值,建议[1,10],不可小于0 +//负载均衡默认权值 dlsrpc.server.balancer-weight = 5 -//默认启用cglib,但是会根据是否有接口进一步确定 +//默认启用cglib dlsrpc.proxy.mode.cglib-proxy = true -//是否强制启用CGLIB,若是final修饰的类或方法将抛出代理异常 +//是否强制 dlsrpc.proxy.mode.force-cglib-proxy = false ``` \ No newline at end of file diff --git a/dls-benchmark/src/main/resources/dlsRpc.conf b/dls-benchmark/src/main/resources/dlsRpc.conf deleted file mode 100644 index 8d15989..0000000 --- a/dls-benchmark/src/main/resources/dlsRpc.conf +++ /dev/null @@ -1,35 +0,0 @@ -//以下是提供给用户端可以修改的配置项,使用此RPC的项目需要提供dlsRpc.conf文件,否则使用默认配置(全是本地,就像如此) -//consul ip,本地不用改 -dlsrpc.consul.host = "127.0.0.1" - -//consul 端口,本地不用改 -dlsrpc.consul.port = 8500 - -//服务器端所有可用ip,用于负载均衡,本地不需要改 -//此配置不能完全决定服务地址的选取,但是在此配置的ip将被负载均衡优先选择 -dlsrpc.consul.server.address = ["127.0.0.1"] - -//默认注册的包下的service,需要改为自己项目的顶级包 -dlsrpc.consul.registry.package-service = "io.growing.dlsrpc.benchmark" - -//客户端超时时间 -dlsrpc.client.timeout = 30000 - -//若忘记配dlsrpc.consul.server.address,则认为是本地调用,将使用本地服务地址 -dlsrpc.server.address.default = "127.0.0.1:8080" - -//(调用方会根据此地址建立连接) -//web服务默认端口 -dlsrpc.server.port = 9998 - -//默认WEB服务在本地,本不应该配置在此,但是本地测试都是在单机上,服务实际地址也是本地 -dlsrpc.server.ip = "127.0.0.1" - -//负载均衡默认权值,建议[1,10],不可小于0 -dlsrpc.server.balancer-weight = 5 - -//默认启用cglib,但是会根据是否有接口进一步确定 -dlsrpc.proxy.mode.cglib-proxy = true - -//是否强制启用CGLIB,若是final修饰的类或方法将抛出代理异常 -dlsrpc.proxy.mode.force-cglib-proxy = false \ No newline at end of file diff --git a/dls-benchmark/src/main/resources/dlsrpc-common_2.12-1.0.13.jar b/dls-benchmark/src/main/resources/dlsrpc-common_2.12-1.0.13.jar deleted file mode 100644 index 3183f6f..0000000 Binary files a/dls-benchmark/src/main/resources/dlsrpc-common_2.12-1.0.13.jar and /dev/null differ diff --git a/dls-benchmark/src/main/resources/dlsrpc-common_2.12-1.1.0.jar b/dls-benchmark/src/main/resources/dlsrpc-common_2.12-1.1.0.jar new file mode 100644 index 0000000..3142f3a Binary files /dev/null and b/dls-benchmark/src/main/resources/dlsrpc-common_2.12-1.1.0.jar differ diff --git a/dls-benchmark/src/main/resources/dlsrpc-consul_2.12-1.0.13.jar b/dls-benchmark/src/main/resources/dlsrpc-consul_2.12-1.0.13.jar deleted file mode 100644 index ebbfe41..0000000 Binary files a/dls-benchmark/src/main/resources/dlsrpc-consul_2.12-1.0.13.jar and /dev/null differ diff --git a/dls-benchmark/src/main/resources/dlsrpc-consul_2.12-1.1.0.jar b/dls-benchmark/src/main/resources/dlsrpc-consul_2.12-1.1.0.jar new file mode 100644 index 0000000..ff13d16 Binary files /dev/null and b/dls-benchmark/src/main/resources/dlsrpc-consul_2.12-1.1.0.jar differ diff --git a/dls-benchmark/src/main/resources/dlsrpc-core_2.12-1.0.13.jar b/dls-benchmark/src/main/resources/dlsrpc-core_2.12-1.0.13.jar deleted file mode 100644 index a3b8ae2..0000000 Binary files a/dls-benchmark/src/main/resources/dlsrpc-core_2.12-1.0.13.jar and /dev/null differ diff --git a/dls-benchmark/src/main/resources/dlsrpc-core_2.12-1.1.0.jar b/dls-benchmark/src/main/resources/dlsrpc-core_2.12-1.1.0.jar new file mode 100644 index 0000000..80d8f25 Binary files /dev/null and b/dls-benchmark/src/main/resources/dlsrpc-core_2.12-1.1.0.jar differ diff --git a/dlsRpc-common/src/main/resources/dlsRpc.conf b/dlsRpc-common/src/main/resources/dlsRpc.conf index a9f64ff..ec9c993 100644 --- a/dlsRpc-common/src/main/resources/dlsRpc.conf +++ b/dlsRpc-common/src/main/resources/dlsRpc.conf @@ -1,4 +1,7 @@ -//默这是默认的 +//这是默认的 +//使用此RPC的项目需要提供dlsRpc.conf文件,否则使用默认配置。 +//调用Configuration.config(filePath),可以使用其他config文件夹下的配置文件 + //consul ip,需要抽出去为用户配置 dlsrpc.consul.host = "127.0.0.1" @@ -8,6 +11,9 @@ dlsrpc.consul.port = 8500 //consul 服务健康检查间隔时间 1秒 dlsrpc.consul.interval = 1s +//默认开启服务注册 +dlsrpc.consul.enable = true + //服务器端所有可用ip,用于负载均衡,需要抽出去为用户配置 //此配置不能完全决定服务地址的选取,但是在此配置的ip将被负载均衡优先选择 dlsrpc.consul.server.address = ["127.0.0.1"] @@ -34,6 +40,7 @@ dlsrpc.http.message-length = 4 dlsrpc.server.address.default = "localhost:8080" //web服务默认端口,需要抽出去为用户配置 +//需要与服务启动时的端口相同 dlsrpc.server.port = 8080 //默认WEB服务在本地,需要抽出去为用户配置 diff --git a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/config/Configuration.scala b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/config/Configuration.scala index 2063da4..9f323d7 100644 --- a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/config/Configuration.scala +++ b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/config/Configuration.scala @@ -4,39 +4,57 @@ import java.util import java.util.{List => JList} import com.typesafe.config.{Config, ConfigFactory} +import io.growing.dlsrpc.common.exception.RpcException import scala.util.Try /** * 加载配置 * - * TODO 后续应当检测,若有配置文件则应该覆盖dlsRpc.conf + * TODO 后续应当检测,若有配置文件则应该覆盖dlsRpc.conf,Config组件默认支持 * * @author 梦境迷离 - * @version 1.0, 2019-06-13 + * @version 1.1, 2019-06-13 */ object Configuration { //去掉 extends App 不然拿不到值 + private final var config: Config = _ + + /** + * 若调用过该方法,则使用此配置 + * + * @param userConfigName 配置必须在config目录下,若有子目录需要加/folder/userConfigName.conf + */ + def config(userConfigName: String) { + if (userConfigName == null || "".equals(userConfigName)) { + throw RpcException("Config name can't be null") + } + config = ConfigFactory.load(userConfigName) + } + + if (config == null) { + config = ConfigFactory.load("dlsRpc.conf") + } //TODO 路径处理 - var config: Config = ConfigFactory.load("dlsRpc.conf") //读取配置文件 - final val CONSUL_ADDRESS_IP: String = Try(config.getString("dlsrpc.consul.host")).getOrElse(Constants.CONSUL_ADDRESS_IP) - final val CONSUL_ADDRESS_PORT: Int = Try(config.getInt("dlsrpc.consul.port")).getOrElse(Constants.CONSUL_ADDRESS_PORT) - final val TIME_AWAIT: Int = Try(config.getInt("dlsrpc.client.timeout")).getOrElse(Constants.TIME_AWAIT) - final val REQUEST_START_VALUE: Int = Try(config.getInt("dlsrpc.client.request-start-value")).getOrElse(Constants.REQUEST_START_VALUE) - final val MESSAGE_LENGTH: Int = Try(config.getInt(" dlsrpc.http.message-length")).getOrElse(Constants.MESSAGE_LENGTH) - final val PATTERN: String = Try(config.getString("dlsrpc.consul.adress-pattern")).getOrElse(Constants.PATTERN) - final val IP_PATTERN: String = Try(config.getString("dlsrpc.consul.ip-pattern")).getOrElse(Constants.IP_PATTERN) - final val PACKAGE_SERVICE: String = Try(config.getString("dlsrpc.consul.registry.package-service")).getOrElse(Constants.PACKAGE_SERVICE) - final val DEFAULT_DISCOVER_ADDRESS: String = Try(config.getString("dlsrpc.server.address.default")).getOrElse(Constants.DEFAULT_DISCOVER_ADDRESS) - final val CGLIB_PROXY: Boolean = Try(config.getBoolean("dlsrpc.proxy.mode.cglib-proxy")).getOrElse(Constants.CGLIB_PROXY) - final val TO_CGLIB_PROXY: Boolean = Try(config.getBoolean("dlsrpc.proxy.mode.force-cglib-proxy")).getOrElse(Constants.TO_CGLIB_PROXY) - final val WEB_SERVER_PORT: Int = Try(config.getInt("dlsrpc.server.port")).getOrElse(Constants.WEB_SERVER_PORT) - final val WEB_SERVER_IP: String = Try(config.getString("dlsrpc.server.ip")).getOrElse(Constants.WEB_SERVER_IP) - final val DEFAULT_WEIGHT: Int = Try(config.getInt("dlsrpc.server.balancer-weight")).getOrElse(Constants.DEFAULT_WEIGHT) - final val CONSUL_INTERVAL: String = Try(config.getString("dlsrpc.consul.interval")).getOrElse(Constants.CONSUL_INTERVAL) + final val CONSUL_ADDRESS_IP: String = Try(config.getString("dlsrpc.consul.host")).getOrElse(DefaultConstants.CONSUL_ADDRESS_IP) + final val CONSUL_ADDRESS_PORT: Int = Try(config.getInt("dlsrpc.consul.port")).getOrElse(DefaultConstants.CONSUL_ADDRESS_PORT) + final val CONSUL_ENABLE: Boolean = Try(config.getBoolean("dlsrpc.consul.enable")).getOrElse(DefaultConstants.CONSUL_ENABLE) + final val TIME_WAIT: Int = Try(config.getInt("dlsrpc.client.timeout")).getOrElse(DefaultConstants.TIME_WAIT) + final val REQUEST_START_VALUE: Int = Try(config.getInt("dlsrpc.client.request-start-value")).getOrElse(DefaultConstants.REQUEST_START_VALUE) + final val MESSAGE_LENGTH: Int = Try(config.getInt(" dlsrpc.http.message-length")).getOrElse(DefaultConstants.MESSAGE_LENGTH) + final val PATTERN: String = Try(config.getString("dlsrpc.consul.adress-pattern")).getOrElse(DefaultConstants.PATTERN) + final val IP_PATTERN: String = Try(config.getString("dlsrpc.consul.ip-pattern")).getOrElse(DefaultConstants.IP_PATTERN) + final val PACKAGE_SERVICE: String = Try(config.getString("dlsrpc.consul.registry.package-service")).getOrElse(DefaultConstants.PACKAGE_SERVICE) + final val DEFAULT_DISCOVER_ADDRESS: String = Try(config.getString("dlsrpc.server.address.default")).getOrElse(DefaultConstants.DEFAULT_DISCOVER_ADDRESS) + final val CGLIB_PROXY: Boolean = Try(config.getBoolean("dlsrpc.proxy.mode.cglib-proxy")).getOrElse(DefaultConstants.CGLIB_PROXY) + final val FORCE_CGLIB_PROXY: Boolean = Try(config.getBoolean("dlsrpc.proxy.mode.force-cglib-proxy")).getOrElse(DefaultConstants.FORCE_CGLIB_PROXY) + final val WEB_SERVER_PORT: Int = Try(config.getInt("dlsrpc.server.port")).getOrElse(DefaultConstants.WEB_SERVER_PORT) + final val WEB_SERVER_IP: String = Try(config.getString("dlsrpc.server.ip")).getOrElse(DefaultConstants.WEB_SERVER_IP) + final val DEFAULT_WEIGHT: Int = Try(config.getInt("dlsrpc.server.balancer-weight")).getOrElse(DefaultConstants.DEFAULT_WEIGHT) + final val CONSUL_INTERVAL: String = Try(config.getString("dlsrpc.consul.interval")).getOrElse(DefaultConstants.CONSUL_INTERVAL) private final lazy val default: JList[String] = new util.ArrayList[String]() default.add(DEFAULT_DISCOVER_ADDRESS) @@ -44,14 +62,14 @@ object Configuration { final val SERVICE_IP_LIST: JList[String] = Try(config.getStringList("dlsrpc.consul.server.address")).getOrElse(default) //默认配置,外界不可访问 - private object Constants { + private object DefaultConstants { final val CONSUL_INTERVAL = "1s" final val DEFAULT_WEIGHT = 5 //客户端超时时间 - final val TIME_AWAIT = 30 * 1000 + final val TIME_WAIT = 30 * 1000 //请求id,一般从 0 开始自增 final val REQUEST_START_VALUE = 0 @@ -65,26 +83,29 @@ object Configuration { //默认注册的包下的service final val PACKAGE_SERVICE = "io.growing.dlsrpc" - //服务发现与注册中心,默认ip + //服务发现与注册中心,默认ip是本地consul final val CONSUL_ADDRESS_IP = "127.0.0.1" - //默认端口 + //consul默认端口 final val CONSUL_ADDRESS_PORT = 8500 - //默认是服务调用地址就是本地,暂时不用 + //是否开启服务注册 + final val CONSUL_ENABLE = true + + //默认是服务调用地址就是本地,当不开启consul时,使用此地址作为服务提供者的暴露地址 final val DEFAULT_DISCOVER_ADDRESS = "localhost:8080" - //默认服务调用端口 + //服务提供者暴露的端口 final val WEB_SERVER_PORT = 8080 - //默认服务都在本机,使用本地,且暴露8080端口 + //服务提供者所在的地址 final val WEB_SERVER_IP = "127.0.0.1" //默认启用cglib final val CGLIB_PROXY = true //是否强制 - final val TO_CGLIB_PROXY = false + final val FORCE_CGLIB_PROXY = false } } diff --git a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/metadata/NormalServiceAddress.scala b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/metadata/NormalServiceAddress.scala index 6a4c672..980425d 100644 --- a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/metadata/NormalServiceAddress.scala +++ b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/metadata/NormalServiceAddress.scala @@ -13,4 +13,13 @@ case class NormalServiceAddress(ip: String, port: Int) extends ServiceAddress(ip override def getPort: Int = port override def toString: String = s"$ip:$port" + + /** + * 直接将tcp参数映射为可用的服务端调用地址 + * + * @param tcp localhost:8080 + */ + def this(tcp: String) = { + this(tcp.split(":")(0), tcp.split(":")(1).toInt) + } } \ No newline at end of file diff --git a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/IsCondition.scala b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/CheckCondition.scala similarity index 96% rename from dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/IsCondition.scala rename to dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/CheckCondition.scala index c4eb548..2515e56 100644 --- a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/IsCondition.scala +++ b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/CheckCondition.scala @@ -9,7 +9,7 @@ import io.growing.dlsrpc.common.exception.RpcException * @author 梦境迷离 * @version 1.0, 2019-06-07 */ -object IsCondition extends LazyLogging { +object CheckCondition extends LazyLogging { /** * 满足判断条件就打印出警告 diff --git a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SubClassUtils.scala b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SubClassUtils.scala index f99a3d1..0047f7c 100644 --- a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SubClassUtils.scala +++ b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SubClassUtils.scala @@ -10,7 +10,8 @@ import java.util.{List => JList} * @author 梦境迷离 * @version 1.0, 2019-06-18 */ -object SubClassUtils extends App { +@deprecated +object SubClassUtils { /** * 获取接口的实现类的类名 @@ -21,9 +22,9 @@ object SubClassUtils extends App { */ def getSubClassName[T](clazz: Class[T]): String = { val ret: JList[Class[_]] = ClassUtil.getSubClassByInterface(clazz) - IsCondition.conditionException(ret == null, "this interface don't have any subClass") + CheckCondition.conditionException(ret == null, "this interface don't have any subClass") //TODO 多类通过显示指定类名 - IsCondition.conditionException(ret.size() > 1, "this interface have multiple implementation classes") + CheckCondition.conditionException(ret.size() > 1, "this interface have multiple implementation classes") ret.get(0).getSimpleName } @@ -36,9 +37,9 @@ object SubClassUtils extends App { */ def getSubClass[T](clazz: Class[T]) = { val ret: JList[Class[_]] = ClassUtil.getSubClassByInterface(clazz) - IsCondition.conditionException(ret == null || ret.size() == 0, "this interface don't have any subClass") + CheckCondition.conditionException(ret == null || ret.size() == 0, "this interface don't have any subClass") //TODO 多类通过显示指定类名 - IsCondition.conditionException(ret.size() > 1, "this interface have multiple implementation classes") + CheckCondition.conditionException(ret.size() > 1, "this interface have multiple implementation classes") ret.get(0) } } diff --git a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SuperClassUtils.scala b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SuperClassUtils.scala index e529f32..20badaa 100644 --- a/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SuperClassUtils.scala +++ b/dlsRpc-common/src/main/scala/io/growing/dlsrpc/common/utils/SuperClassUtils.scala @@ -36,7 +36,7 @@ object SuperClassUtils { * @tparam B * @return */ - def CheckSuperInterfaces[S, B](clazz: Class[S], interface: Class[B]): Class[_] = { + def checkSuperInterfaces[S, B](clazz: Class[S], interface: Class[B]): Class[_] = { val names = clazz.getInterfaces if (names.contains(interface)) { clazz @@ -85,7 +85,7 @@ object SuperClassUtils { //不是接口,有实现接口,使用jdk;是接口使用jdk if (clazz.isInterface || !clazz.isInterface && (getVaildSuperInterface[T](clazz) != null && getVaildSuperInterface[T](clazz).nonEmpty)) { if (!clazz.isInterface) { - if (CGLIB_PROXY && TO_CGLIB_PROXY) { + if (CGLIB_PROXY && FORCE_CGLIB_PROXY) { return ProxyType.CGLIB } } else { diff --git a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/commons/ConsulBuilder.scala b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/commons/ConsulBuilder.scala index b878808..3a1e827 100644 --- a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/commons/ConsulBuilder.scala +++ b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/commons/ConsulBuilder.scala @@ -7,7 +7,7 @@ import com.google.common.collect.Maps import io.growing.dlsrpc.common.config.Configuration._ import io.growing.dlsrpc.common.exception.RpcException import io.growing.dlsrpc.common.metadata.{NormalServiceAddress, ServiceAddress} -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.consul.loadbalancer.RandomLoadBalancer /** @@ -26,8 +26,8 @@ object ConsulBuilder { */ @deprecated def buildDiscover(consulAddress: ServiceAddress): (ConsulClient, ConcurrentMap[String, RandomLoadBalancer[ServiceAddress]]) = { - IsCondition.conditionException(!consulAddress.toString.matches(PATTERN), "not an valid format like ip:port") - IsCondition.conditionException(consulAddress.getPort < 0, "port can't less 0") + CheckCondition.conditionException(!consulAddress.toString.matches(PATTERN), "not an valid format like ip:port") + CheckCondition.conditionException(consulAddress.getPort < 0, "port can't less 0") val rawClient = new ConsulRawClient(consulAddress.getIp, consulAddress.getPort) val consulClient = new ConsulClient(rawClient) val loadBalancerMap = Maps.newConcurrentMap[String, RandomLoadBalancer[ServiceAddress]] @@ -42,8 +42,8 @@ object ConsulBuilder { */ @deprecated def buildRegistry(consulAddress: ServiceAddress): ConsulClient = { - IsCondition.conditionException(!consulAddress.toString.matches(PATTERN), "not an valid format like ip:port") - IsCondition.conditionException(consulAddress.getPort < 0, "port can't less 0") + CheckCondition.conditionException(!consulAddress.toString.matches(PATTERN), "not an valid format like ip:port") + CheckCondition.conditionException(consulAddress.getPort < 0, "port can't less 0") val rawClient = new ConsulRawClient(consulAddress.getIp, consulAddress.getPort) val consulClient = new ConsulClient(rawClient) consulClient @@ -58,8 +58,8 @@ object ConsulBuilder { def checkAndBuild(consulAddress: ServiceAddress): ConsulClient = { consulAddress match { case s: NormalServiceAddress => { - IsCondition.conditionException(!s.toString.matches(PATTERN), "not an valid format like ip:port") - IsCondition.conditionException(s.getPort < 0, "port can't less 0") + CheckCondition.conditionException(!s.toString.matches(PATTERN), "not an valid format like ip:port") + CheckCondition.conditionException(s.getPort < 0, "port can't less 0") lazy val rawClient = new ConsulRawClient(s.getIp, s.getPort) new ConsulClient(rawClient) } diff --git a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/discovery/ConsulServiceDiscovery.scala b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/discovery/ConsulServiceDiscovery.scala index d89366d..9ddbda4 100644 --- a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/discovery/ConsulServiceDiscovery.scala +++ b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/discovery/ConsulServiceDiscovery.scala @@ -10,8 +10,8 @@ import com.typesafe.scalalogging.LazyLogging import io.growing.dlsrpc.common.enums.BalancerType import io.growing.dlsrpc.common.enums.BalancerType.BalancerType import io.growing.dlsrpc.common.metadata.{NormalServiceAddress, ServiceAddress, WeightServiceAddress} +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.common.utils.ImplicitUtils._ -import io.growing.dlsrpc.common.utils.IsCondition import io.growing.dlsrpc.consul.commons.ConsulBuilder import io.growing.dlsrpc.consul.loadbalancer.{Loadbalancer, RandomLoadBalancer, WeightLoadBalancer} @@ -33,7 +33,7 @@ class ConsulServiceDiscovery(consulAddress: ServiceAddress) extends ServiceDisco //传进来的是service的类名 override def discover(serviceName: String): ServiceAddress = { - IsCondition.conditionException(serviceName == null, "service name can't be null") + CheckCondition.conditionException(serviceName == null, "service name can't be null") if (!loadBalancerMap.containsKey(serviceName)) { //TODO因为本地没有使用HTTP,无法提供健康检查接口,或者把注册的检查端口改为8500(滑稽) val request: HealthServicesRequest = HealthServicesRequest. @@ -49,7 +49,7 @@ class ConsulServiceDiscovery(consulAddress: ServiceAddress) extends ServiceDisco //返回真实服务的地址(ip:port)可能是null //val sd = loadBalancerMap.get(serviceName).next("127.0.0.1") //加权后hash 请求ip val sd = loadBalancerMap.get(serviceName).next - IsCondition.conditionException(sd.getPort < 0, "port can't less 0") + CheckCondition.conditionException(sd.getPort < 0, "port can't less 0") logger.info("Real address is {}", sd) sd } diff --git a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/RandomLoadBalancer.scala b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/RandomLoadBalancer.scala index 52c701b..1b82b62 100644 --- a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/RandomLoadBalancer.scala +++ b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/RandomLoadBalancer.scala @@ -3,7 +3,7 @@ package io.growing.dlsrpc.consul.loadbalancer import java.util.concurrent.ThreadLocalRandom import java.util.{List => JList} -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition /** * 负载均衡 @@ -20,7 +20,7 @@ class RandomLoadBalancer[T](serviceAddresses: JList[T]) extends Loadbalancer[T] * @return */ def next: T = { - IsCondition.conditionException(serviceAddresses.size() == 0, "can't find any serviceAddresses") + CheckCondition.conditionException(serviceAddresses.size() == 0, "can't find any serviceAddresses") serviceAddresses.get(ThreadLocalRandom.current.nextInt(serviceAddresses.size)) } } diff --git a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/WeightLoadBalancer.scala b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/WeightLoadBalancer.scala index bd07b77..6919ca1 100644 --- a/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/WeightLoadBalancer.scala +++ b/dlsRpc-consul/src/main/scala/io/growing/dlsrpc/consul/loadbalancer/WeightLoadBalancer.scala @@ -8,8 +8,8 @@ import com.google.common.collect.Maps import com.typesafe.scalalogging.LazyLogging import io.growing.dlsrpc.common.config.Configuration._ import io.growing.dlsrpc.common.metadata.WeightServiceAddress +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.common.utils.ImplicitUtils._ -import io.growing.dlsrpc.common.utils.IsCondition /** * 加权随机法+加权Hash @@ -61,7 +61,7 @@ class WeightLoadBalancer[T](val weightServiceAddresses: JList[T]) extends Loadba } override def next: T = { - IsCondition.conditionException(SERVICE_IP_LIST.size() == 0, "can't use default ip and set error in dlsRpc.conf") + CheckCondition.conditionException(SERVICE_IP_LIST.size() == 0, "can't use default ip and set error in dlsRpc.conf") //给它设置相等的权值 val serverMap: JMap[WeightServiceAddress, Int] = serviceIps //獲取ip列表list @@ -80,7 +80,7 @@ class WeightLoadBalancer[T](val weightServiceAddresses: JList[T]) extends Loadba } override def next(remoteIp: String): T = { - IsCondition.conditionException(SERVICE_IP_LIST.size() == 0, "can't use default ip because param error in dlsRpc.conf") + CheckCondition.conditionException(SERVICE_IP_LIST.size() == 0, "can't use default ip because param error in dlsRpc.conf") val serverMap: JMap[WeightServiceAddress, Int] = serviceIps val it: util.Iterator[WeightServiceAddress] = serverMap.keySet().iterator() val serverList = new JArrayList[WeightServiceAddress] @@ -120,7 +120,7 @@ object WeightLoadBalancer { //默认的服务列表,从配置文件读取,表示启用的服务列表,隐式去重 private final lazy val defaultWeightServiceAddress: JMap[WeightServiceAddress, Int] = Maps.newConcurrentMap() SERVICE_IP_LIST.forEach(x => defaultWeightServiceAddress.put(new WeightServiceAddress(x, port, high_weight), high_weight)) - SERVICE_IP_LIST.forEach(x => IsCondition.conditionException(!x.toString.matches(IP_PATTERN), "not an valid format like ip")) + SERVICE_IP_LIST.forEach(x => CheckCondition.conditionException(!x.toString.matches(IP_PATTERN), "not an valid format like ip")) //Test data // val s = new util.ArrayList[WeightServiceAddress]() diff --git a/dlsRpc-core/src/main/resources/dlsRpc.conf b/dlsRpc-core/src/main/resources/dlsRpc.conf deleted file mode 100644 index 7edbc88..0000000 --- a/dlsRpc-core/src/main/resources/dlsRpc.conf +++ /dev/null @@ -1,36 +0,0 @@ -//以下是提供给用户端可以修改的配置项,使用此RPC的项目需要提供dlsRpc.conf文件,否则使用默认配置(全是本地,就像如此) -//这配置文件给本模块用的 -//consul ip,本地不用改 -dlsrpc.consul.host = "127.0.0.1" - -//consul 端口,本地不用改 -dlsrpc.consul.port = 8500 - -//服务器端所有可用ip,用于负载均衡,本地不需要改 -//此配置不能完全决定服务地址的选取,但是在此配置的ip将被负载均衡优先选择 -dlsrpc.consul.server.address = ["127.0.0.1"] - -//默认注册的包下的service,需要改为自己项目的顶级包 -dlsrpc.consul.registry.package-service = "io.growing.dlsrpc.core.rpctest" - -//客户端超时时间,需要抽出去为用户配置 -dlsrpc.client.timeout = 30000 - -//若忘记配dlsrpc.consul.server.address,则认为是本地调用,将使用本地服务地址 -dlsrpc.server.address.default = "127.0.0.1:8081" - -//(调用方会根据此地址建立连接) -//web服务默认端口 -dlsrpc.server.port = 9998 - -//默认WEB服务在本地,本不应该配置在此,但是本地测试都是在单机上,服务实际地址也是本地 -dlsrpc.server.ip = "127.0.0.1" - -//负载均衡默认权值,建议[1,10],不可小于0 -dlsrpc.server.balancer-weight = 5 - -//默认启用cglib,但是会根据是否有接口进一步确定 -dlsrpc.proxy.mode.cglib-proxy = true - -//是否强制启用CGLIB,若是final修饰的类或方法将抛出代理异常 -dlsrpc.proxy.mode.force-cglib-proxy = false \ No newline at end of file diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/Client.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/Client.scala index 1b5c7ed..6a55504 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/Client.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/Client.scala @@ -8,9 +8,9 @@ import java.util.concurrent.atomic.AtomicLong import com.typesafe.scalalogging.LazyLogging import io.growing.dlsrpc.common.config.Configuration._ import io.growing.dlsrpc.common.metadata.{RpcRequest, ServiceAddress} -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.api.Protocol -import io.growing.dlsrpc.core.rpc.RpcDiscoveryService +import io.growing.dlsrpc.core.consul.RpcDiscoveryService import io.growing.dlsrpc.core.utils.ServiceLoadUtil import net.sf.cglib.proxy.{Enhancer, MethodInterceptor, MethodProxy} @@ -56,8 +56,8 @@ class Client[Builder <: Client[_, _], T] protected(clientClass: Class[T]) extend } def linkToAddress(host: String, port: Int): Builder = { - IsCondition.conditionException(host == null, "host can't be empty") - IsCondition.conditionException(port < 1, "port can't less than 1") + CheckCondition.conditionException(host == null, "host can't be empty") + CheckCondition.conditionException(port < 1, "port can't less than 1") //服务发现 this.socketAddress = InetSocketAddress.createUnresolved(host, port) @@ -68,7 +68,7 @@ class Client[Builder <: Client[_, _], T] protected(clientClass: Class[T]) extend def linkToCenter: Builder = { //服务发现 val serviceAddress: ServiceAddress = rpc.obtainServiceAddress(clientClass.getSimpleName) - IsCondition.conditionException(serviceAddress == null, "can't find any service address") + CheckCondition.conditionException(serviceAddress == null, "can't find any service address") this.socketAddress = InetSocketAddress.createUnresolved(serviceAddress.getIp, serviceAddress.getPort) this.asInstanceOf[Builder] } @@ -83,7 +83,7 @@ class Client[Builder <: Client[_, _], T] protected(clientClass: Class[T]) extend //创建动态代理并发送请求,获取服务端的结果。 @throws[Exception] private[client] def proxy[T]: T = { - IsCondition.conditionException(clientClass == null, "param error") + CheckCondition.conditionException(clientClass == null, "param error") val clientInvocationHandler: InvocationHandler = (proxy, method, args) => { //执行方法时被调用 def invoke(proxy: Any, method: Method, args: Array[_ <: Any]) = { @@ -122,7 +122,7 @@ class Client[Builder <: Client[_, _], T] protected(clientClass: Class[T]) extend //cglib代理构造代理对象 @throws[Exception] private[client] def cglibProxy[T]: T = { - IsCondition.conditionException(clientClass == null, "param error") + CheckCondition.conditionException(clientClass == null, "param error") val daoProxy = new ClientCglibProxy val enhancer = new Enhancer enhancer.setCallback(daoProxy) diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/ClientMessageHandlerImpl.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/ClientMessageHandlerImpl.scala index 1b89dd5..2fe77e7 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/ClientMessageHandlerImpl.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/client/ClientMessageHandlerImpl.scala @@ -7,7 +7,7 @@ import com.google.inject.Singleton import com.typesafe.scalalogging.LazyLogging import io.growing.dlsrpc.common.config.Configuration._ import io.growing.dlsrpc.common.metadata.{RpcRequest, RpcResponse} -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.api.Serializer import javax.inject.Inject @@ -32,7 +32,7 @@ class ClientMessageHandlerImpl @Inject()(serializer: Serializer, channel: Client override def receiveProcessor(request: Array[Byte]): Unit = { //反序列化收到的消息 val rpcResponse = serializer.deserializer(request, classOf[RpcResponse]) - IsCondition.conditionWarn(rpcResponse == null || rpcResponse.getRequestId < 1, + CheckCondition.conditionWarn(rpcResponse == null || rpcResponse.getRequestId < 1, s"ReceiveAndProcessor not found data getRequestId : {${rpcResponse.getRequestId}}") match { case false => { try { @@ -67,14 +67,14 @@ class ClientMessageHandlerImpl @Inject()(serializer: Serializer, channel: Client //发送消息 channel.sendMessage(requestMsg) //取出返回信息 30S超时时间 - response = queue.poll(TIME_AWAIT, TimeUnit.MILLISECONDS) + response = queue.poll(TIME_WAIT, TimeUnit.MILLISECONDS) } catch { case e: Exception => { logger.error("Client send message fail {} ", e.getMessage) } } - IsCondition.conditionException(response == null, "Request wait response time await") - IsCondition.conditionException(response.getError != null, cause = response.getError) + CheckCondition.conditionException(response == null, "Request wait response time await") + CheckCondition.conditionException(response.getError != null, cause = response.getError) response.getResult } } diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpc/RpcDiscoveryService.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/consul/RpcDiscoveryService.scala similarity index 58% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpc/RpcDiscoveryService.scala rename to dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/consul/RpcDiscoveryService.scala index 2b138d6..12a78cb 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpc/RpcDiscoveryService.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/consul/RpcDiscoveryService.scala @@ -1,7 +1,8 @@ -package io.growing.dlsrpc.core.rpc +package io.growing.dlsrpc.core.consul import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.metadata.ServiceAddress +import io.growing.dlsrpc.common.config.Configuration +import io.growing.dlsrpc.common.metadata.{NormalServiceAddress, ServiceAddress} import io.growing.dlsrpc.consul.discovery.ServiceDiscovery import javax.inject.Inject @@ -23,6 +24,11 @@ class RpcDiscoveryService extends LazyLogging { * @return */ def obtainServiceAddress(serviceName: String): ServiceAddress = { - serviceDiscovery.discover(serviceName) + if (Configuration.CONSUL_ENABLE) { + serviceDiscovery.discover(serviceName) + } else { + //没有开启consul只能使用默认的本机,即未有集群 + new NormalServiceAddress(Configuration.DEFAULT_DISCOVER_ADDRESS) + } } } diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpc/RpcRegisterService.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/consul/RpcRegisterService.scala similarity index 56% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpc/RpcRegisterService.scala rename to dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/consul/RpcRegisterService.scala index e7dfe1d..21d6383 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpc/RpcRegisterService.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/consul/RpcRegisterService.scala @@ -1,12 +1,14 @@ -package io.growing.dlsrpc.core.rpc +package io.growing.dlsrpc.core.consul import java.util.{List => JList} import com.typesafe.scalalogging.LazyLogging +import io.growing.dlsrpc.common.config.Configuration import io.growing.dlsrpc.common.config.Configuration._ +import io.growing.dlsrpc.common.exception.RpcException import io.growing.dlsrpc.common.metadata.ServiceAddress -import io.growing.dlsrpc.common.utils.ClassUtil import io.growing.dlsrpc.common.utils.ImplicitUtils.jIteratorToSIterator +import io.growing.dlsrpc.common.utils.{CheckCondition, ClassUtil} import io.growing.dlsrpc.consul.registry.{RPCService, ServiceRegistry} import javax.inject.Inject @@ -14,7 +16,7 @@ import javax.inject.Inject * RPC服务注册,由其它包使用 * * @author 梦境迷离 - * @version 1.0, 2019-06-09 + * @version 1.1, 2019-06-09 */ class RpcRegisterService extends LazyLogging { @@ -32,22 +34,34 @@ class RpcRegisterService extends LazyLogging { /** * 服务初始化时根据类名注册服务到consul * + * 未开启consul时,服务内部初始化时只需要打印出警告信息 + * * @param serviceAddress 注册地址 */ def initRegisterService(serviceAddress: ServiceAddress): Unit = { - for (serviceName <- getServiceNames.iterator()) { - serviceRegistry.register(serviceName, serviceAddress) + if (Configuration.CONSUL_ENABLE) { + for (serviceName <- getServiceNames.iterator()) { + serviceRegistry.register(serviceName, serviceAddress) + } + } else { + CheckCondition.conditionWarn(!Configuration.CONSUL_ENABLE, "you have not enable the consul") } } /** * 启动后单个注册 * - * @param serviceName + * 尝试在未开启consul时调用注册接口应当抛出异常 + * + * @param serviceName 服务注册的名称 如果注解用在接口,则使用接口名, 如果用在类中则使用类名 * @param serviceAddress */ def registerService(serviceName: String, serviceAddress: ServiceAddress) = { - serviceRegistry.register(serviceName, serviceAddress) + if (Configuration.CONSUL_ENABLE) { + serviceRegistry.register(serviceName, serviceAddress) + } else { + throw RpcException("Unable to register because you have not enable the consul") + } } } \ No newline at end of file diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/modules/ProviderModule.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/modules/ProviderModule.scala index 4f7d670..a05592f 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/modules/ProviderModule.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/modules/ProviderModule.scala @@ -7,8 +7,8 @@ import io.growing.dlsrpc.consul.discovery.{ConsulServiceDiscovery, ServiceDiscov import io.growing.dlsrpc.consul.registry.{ConsulServiceRegistry, ServiceRegistry} import io.growing.dlsrpc.core.api.{Protocol, Serializer} import io.growing.dlsrpc.core.client.ClientChannel +import io.growing.dlsrpc.core.consul.{RpcDiscoveryService, RpcRegisterService} import io.growing.dlsrpc.core.protocol.Http2Protocol -import io.growing.dlsrpc.core.rpc.{RpcDiscoveryService, RpcRegisterService} import io.growing.dlsrpc.core.serialize.ProtostuffSerializer import io.growing.dlsrpc.core.server.ServerChannel import io.growing.dlsrpc.core.transport.client.NettyClientChannel diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/Server.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/Server.scala index 6a042f2..eea11ee 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/Server.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/Server.scala @@ -6,9 +6,9 @@ import com.google.inject.Singleton import com.typesafe.scalalogging.LazyLogging import io.growing.dlsrpc.common.config.Configuration import io.growing.dlsrpc.common.metadata.NormalServiceAddress -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.api.{Protocol, Serializer} -import io.growing.dlsrpc.core.rpc.RpcRegisterService +import io.growing.dlsrpc.core.consul.RpcRegisterService import io.growing.dlsrpc.core.utils.ExecutorBuilder import javax.inject.Inject @@ -55,7 +55,7 @@ class Server @Inject()(serializer: Serializer, serverChannel: ServerChannel, mes //对于通道错误不予捕获,任务服务没有进行下去的必要 def start(): Unit = { - IsCondition.conditionException(serviceBeans == null || !port.isValidInt || port < 0, "params error") + CheckCondition.conditionException(serviceBeans == null || !port.isValidInt || port < 0, "params error") //注入进的消息处理器并不知发布哪个服务 messageHandler.setProcessBeans(serviceBeans) serverChannel.openServerChannel(port, executor, protocol, messageHandler) diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerBuilder.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerBuilder.scala index 4517cd7..17c91ea 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerBuilder.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerBuilder.scala @@ -2,7 +2,7 @@ package io.growing.dlsrpc.core.server import java.util.{List => JList} -import io.growing.dlsrpc.common.utils.{ImplicitUtils, IsCondition} +import io.growing.dlsrpc.common.utils.{CheckCondition, ImplicitUtils} import io.growing.dlsrpc.core.api.Protocol import io.growing.dlsrpc.core.utils.ServiceLoadUtil @@ -55,7 +55,7 @@ class ServerBuilder private() { //这里主要是设置端口并发布服务,之所以需要改为注入是为了后面拓展发布多服务 //build后不能再修改端口 def build: Server = { - IsCondition.conditionException(serviceBeans == null || !port.isValidInt || port < 0, "params error") + CheckCondition.conditionException(serviceBeans == null || !port.isValidInt || port < 0, "params error") server.setBeans(serviceBeans) server.setPort(port) server diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerMessageHandlerImpl.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerMessageHandlerImpl.scala index abe5b8b..0392e3d 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerMessageHandlerImpl.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/server/ServerMessageHandlerImpl.scala @@ -6,7 +6,7 @@ import com.google.inject.Singleton import com.typesafe.scalalogging.LazyLogging import io.growing.dlsrpc.common.enums.ProxyType import io.growing.dlsrpc.common.metadata.{RpcRequest, RpcResponse} -import io.growing.dlsrpc.common.utils.{IsCondition, SuperClassUtils} +import io.growing.dlsrpc.common.utils.{CheckCondition, SuperClassUtils} import io.growing.dlsrpc.core.api.{SendMessage, Serializer} import javax.inject.Inject import net.sf.cglib.reflect.FastClass @@ -32,7 +32,7 @@ class ServerMessageHandlerImpl @Inject()(serializer: Serializer, channel: Server @throws[Exception] override def processor(request: Array[Byte], receiveMessage: SendMessage): Unit = { var processorBean: Any = null - IsCondition.conditionException(this.serviceBeans == null, "bean can't be null") + CheckCondition.conditionException(this.serviceBeans == null, "bean can't be null") //接口消息并反序列化解码拿到真正的请求 val rpcRequest: RpcRequest = serializer.deserializer(request, classOf[RpcRequest]) //根据请求的类获取真实调用的bean @@ -43,14 +43,14 @@ class ServerMessageHandlerImpl @Inject()(serializer: Serializer, channel: Server processorBean = bean } else if (className.isInterface) { //是接口时请求传过来的是接口名,获取该接口是否与某个bean所实现的接口匹配 - val subClass = SuperClassUtils.CheckSuperInterfaces(bean.getClass, className) + val subClass = SuperClassUtils.checkSuperInterfaces(bean.getClass, className) //是接口时,先获取bean的实现接口 if (subClass != null) { processorBean = bean } } } - IsCondition.conditionException(processorBean == null, "bean can't be found") + CheckCondition.conditionException(processorBean == null, "bean can't be found") val rpcResponse = new RpcResponse rpcResponse.setRequestId(rpcRequest.getRequestId) //切换调用方式 diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/ClientChannelInitializer.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/ClientChannelInitializer.scala index a169310..78b3d5d 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/ClientChannelInitializer.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/ClientChannelInitializer.scala @@ -2,7 +2,7 @@ package io.growing.dlsrpc.core.transport.client import com.google.inject.Singleton import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.transport.MessageCodec import io.netty.channel.ChannelInitializer import io.netty.channel.socket.SocketChannel @@ -21,7 +21,7 @@ class ClientChannelInitializer @Inject()(nettyClientMessageHandler: NettyClientM @throws[Exception] override protected def initChannel(ch: SocketChannel): Unit = { - IsCondition.conditionException(ch == null, "ClientChannel can't be null") + CheckCondition.conditionException(ch == null, "ClientChannel can't be null") ch.pipeline.addLast("log", new LoggingHandler(LogLevel.INFO)) ch.pipeline.addLast("messageCodec", new MessageCodec) ch.pipeline.addLast("clientMessageHandlerImpl", nettyClientMessageHandler) //使用注入bean diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientChannel.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientChannel.scala index 4f7959e..a96640e 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientChannel.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientChannel.scala @@ -3,7 +3,7 @@ package io.growing.dlsrpc.core.transport.client import java.net.SocketAddress import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.api.Protocol import io.growing.dlsrpc.core.client.{ClientChannel, ClientMessageHandler} import io.growing.dlsrpc.core.utils.ChannelWriteMessageUtil @@ -37,7 +37,7 @@ class NettyClientChannel @Inject()(clientChannelInitializer: ClientChannelInitia } override def shutdown(): Unit = { - if (IsCondition.conditionWarn(channel == null || !channel.isOpen, "channel is already closed")) return + if (CheckCondition.conditionWarn(channel == null || !channel.isOpen, "channel is already closed")) return try { channel.close } catch { diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientMessageHandler.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientMessageHandler.scala index a85aa35..65502fa 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientMessageHandler.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/client/NettyClientMessageHandler.scala @@ -1,7 +1,7 @@ package io.growing.dlsrpc.core.transport.client import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.client.ClientMessageHandler import io.netty.buffer.Unpooled import io.netty.channel.{Channel, ChannelFutureListener, ChannelHandlerContext, ChannelInboundHandlerAdapter} @@ -29,7 +29,7 @@ class NettyClientMessageHandler @Inject()(messageHandler: ClientMessageHandler) override def channelRead(ctx: ChannelHandlerContext, msg: Any): Unit = { logger.debug("Client read msg : {}", msg) - IsCondition.conditionWarn(!msg.isInstanceOf[Array[Byte]], "failure of type matching") match { + CheckCondition.conditionWarn(!msg.isInstanceOf[Array[Byte]], "failure of type matching") match { case true => { //TODO } diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerChannel.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerChannel.scala index 2dc4d49..2e817f2 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerChannel.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerChannel.scala @@ -3,7 +3,7 @@ package io.growing.dlsrpc.core.transport.server import java.util.concurrent.Executor import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.api.Protocol import io.growing.dlsrpc.core.server.{ServerChannel, ServerMessageHandler} import io.netty.channel.nio.NioEventLoopGroup @@ -37,7 +37,7 @@ class NettyServerChannel @Inject()(serverChannelInitializer: ServerChannelInitia } override def shutdown(): Unit = { - if (IsCondition.conditionWarn(channel == null || !channel.isOpen)) return + if (CheckCondition.conditionWarn(channel == null || !channel.isOpen)) return try { channel.close() } catch { diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerMessageHandler.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerMessageHandler.scala index 456bb39..b2afb97 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerMessageHandler.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/NettyServerMessageHandler.scala @@ -3,7 +3,7 @@ package io.growing.dlsrpc.core.transport.server import java.util.concurrent.Executor import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.api.SendMessage import io.growing.dlsrpc.core.server.ServerMessageHandler import io.growing.dlsrpc.core.utils.{ChannelWriteMessageUtil, ServiceLoadUtil} @@ -36,7 +36,7 @@ class NettyServerMessageHandler(executor: Executor) override def channelRead(ctx: ChannelHandlerContext, msg: Any): Unit = { logger.debug("Service read msg : {} ", msg) //接收客户端发送的数据 - if (IsCondition.conditionWarn(!msg.isInstanceOf[Array[Byte]], "failure of type matching")) { + if (CheckCondition.conditionWarn(!msg.isInstanceOf[Array[Byte]], "failure of type matching")) { ReferenceCountUtil.release(msg) return } diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/ServerChannelInitializer.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/ServerChannelInitializer.scala index 3dce6c4..7dc5fae 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/ServerChannelInitializer.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/transport/server/ServerChannelInitializer.scala @@ -4,7 +4,7 @@ import java.util.concurrent.Executor import com.google.inject.Singleton import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.transport.MessageCodec import io.netty.channel.ChannelInitializer import io.netty.channel.socket.SocketChannel @@ -29,7 +29,7 @@ class ServerChannelInitializer } override def initChannel(c: SocketChannel): Unit = { - IsCondition.conditionException(c == null, "SocketChannel can't be null") + CheckCondition.conditionException(c == null, "SocketChannel can't be null") c.pipeline.addLast("log", new LoggingHandler(LogLevel.INFO)) c.pipeline.addLast("messageCodec", new MessageCodec) c.pipeline.addLast("server-message-handler", new NettyServerMessageHandler(executor)) diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ChannelWriteMessageUtil.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ChannelWriteMessageUtil.scala index 0750274..4bca9a5 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ChannelWriteMessageUtil.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ChannelWriteMessageUtil.scala @@ -1,7 +1,7 @@ package io.growing.dlsrpc.core.utils import com.typesafe.scalalogging.LazyLogging -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.netty.channel.{Channel, ChannelFuture} /** @@ -12,7 +12,7 @@ object ChannelWriteMessageUtil extends LazyLogging { def sendMsg(outboundChannel: Channel, obj: Any): Unit = { outboundChannel.writeAndFlush(obj).addListener((future: ChannelFuture) => { - if (!IsCondition.conditionWarn(!future.isSuccess, + if (!CheckCondition.conditionWarn(!future.isSuccess, s"OutboundChannel : {$outboundChannel}, sendMsg : {$obj} because {${future.cause}")) outboundChannel.read }) diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ServiceLoadUtil.scala b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ServiceLoadUtil.scala index 0029ec7..a6a3c6c 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ServiceLoadUtil.scala +++ b/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/utils/ServiceLoadUtil.scala @@ -1,7 +1,7 @@ package io.growing.dlsrpc.core.utils import com.google.inject.Guice -import io.growing.dlsrpc.common.utils.IsCondition +import io.growing.dlsrpc.common.utils.CheckCondition import io.growing.dlsrpc.core.modules.ProviderModule /** @@ -16,7 +16,7 @@ object ServiceLoadUtil { def getProvider[T](`type`: Class[T]): T = { val instance = inject.getInstance(`type`) - IsCondition.conditionException(instance == null, `type`.getSimpleName + " not be found") + CheckCondition.conditionException(instance == null, `type`.getSimpleName + " not be found") instance } } \ No newline at end of file diff --git a/dlsRpc-core/src/test/resources/dlsRpc.conf b/dlsRpc-core/src/test/resources/dlsRpc.conf new file mode 100644 index 0000000..0972777 --- /dev/null +++ b/dlsRpc-core/src/test/resources/dlsRpc.conf @@ -0,0 +1,10 @@ +//使用此RPC的项目需要提供dlsRpc.conf文件,否则使用默认配置。 +//调用Configuration.config(filePath),可以使用其他config文件夹下的配置文件 +//这配置文件给本测试用的,也是本地测试时最少配置 + +//默认注册的包下的service,需要改为自己项目的顶级包 +dlsrpc.consul.registry.package-service = "io.growing.dlsrpc.test" + +//若忘记配dlsrpc.consul.server.address或未开启consul,则认为是本地调用,将使用本地服务地址 +//需要与服务端启动时的端口相同 +dlsrpc.server.address.default = "127.0.0.1:8080" \ No newline at end of file diff --git a/dlsRpc-core/src/test/resources/log4j2.xml b/dlsRpc-core/src/test/resources/log4j2.xml new file mode 100644 index 0000000..cb8a9e6 --- /dev/null +++ b/dlsRpc-core/src/test/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/ClientBuilderTest.java b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/ClientBuilderTest.java similarity index 93% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/ClientBuilderTest.java rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/ClientBuilderTest.java index 983582c..7f61eb9 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/ClientBuilderTest.java +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/ClientBuilderTest.java @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest; +package io.growing.dlsrpc.test; import io.growing.dlsrpc.core.DlsRpc; diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/Hello.java b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/Hello.java similarity index 76% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/Hello.java rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/Hello.java index d90e672..103f628 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/Hello.java +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/Hello.java @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest; +package io.growing.dlsrpc.test; import io.growing.dlsrpc.consul.registry.RPCService; diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/HelloImpl.java b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/HelloImpl.java similarity index 85% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/HelloImpl.java rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/HelloImpl.java index 3342b25..c7cc8aa 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/HelloImpl.java +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/HelloImpl.java @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest; +package io.growing.dlsrpc.test; import com.google.inject.Singleton; diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/HelloWorld.java b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/HelloWorld.java similarity index 86% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/HelloWorld.java rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/HelloWorld.java index 33700cf..cc9b852 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/HelloWorld.java +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/HelloWorld.java @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest; +package io.growing.dlsrpc.test; import io.growing.dlsrpc.consul.registry.RPCService; diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/ServerBuilderTest.java b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/ServerBuilderTest.java similarity index 68% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/ServerBuilderTest.java rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/ServerBuilderTest.java index d8d1e98..429d275 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/ServerBuilderTest.java +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/ServerBuilderTest.java @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest; +package io.growing.dlsrpc.test; import io.growing.dlsrpc.common.config.Configuration; @@ -24,9 +24,8 @@ public static void main(String[] args) { tmpList1.add(new HelloWorld()); tmpList1.add(new HelloImpl()); tmpList1.add(new WorldImpl()); - //默认从consul获得的服务地址是8080,配置 dlsrpc.server.address.default = "127.0.0.1:8080" - //也就是客户端获取服务实际地址后会向127.0.0.1:8081发起请求 - //服务启动端口也是8081,Server start port : 8081 如果启动马上结束一般是端口被占用 + //服务端如果启动马上结束一般是端口被占用 + //不开启consul,则使用默认地址localhost:8080 ,此端口与8080需要相同。否则需要开启consul,并配置dlsrpc.server.port、dlsrpc.server.ip ServerBuilder server = DlsRpc.getServerBuilder(Configuration.WEB_SERVER_PORT(), tmpList1); server.build().start(); } diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/TestConsulService.scala b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/TestConsulService.scala similarity index 91% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/TestConsulService.scala rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/TestConsulService.scala index 5a7e3f9..9048b40 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/TestConsulService.scala +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/TestConsulService.scala @@ -1,7 +1,7 @@ -package io.growing.dlsrpc.core.rpctest +package io.growing.dlsrpc.test import io.growing.dlsrpc.common.metadata.WeightServiceAddress -import io.growing.dlsrpc.core.rpc.{RpcDiscoveryService, RpcRegisterService} +import io.growing.dlsrpc.core.consul.{RpcDiscoveryService, RpcRegisterService} import io.growing.dlsrpc.core.utils.ServiceLoadUtil /** diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/TestRpc.scala b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/TestRpc.scala similarity index 98% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/TestRpc.scala rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/TestRpc.scala index e4e9df5..107d238 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/TestRpc.scala +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/TestRpc.scala @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest +package io.growing.dlsrpc.test import io.growing.dlsrpc.common.config.Configuration import io.growing.dlsrpc.core.DlsRpc diff --git a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/WorldImpl.java b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/WorldImpl.java similarity index 87% rename from dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/WorldImpl.java rename to dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/WorldImpl.java index fffa618..fe499c9 100644 --- a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/WorldImpl.java +++ b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/WorldImpl.java @@ -1,4 +1,4 @@ -package io.growing.dlsrpc.core.rpctest; +package io.growing.dlsrpc.test; import io.growing.dlsrpc.consul.registry.RPCService; diff --git "a/dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/\350\257\264\346\230\216.md" "b/dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/\350\257\264\346\230\216.md" similarity index 100% rename from "dlsRpc-core/src/main/scala/io/growing/dlsrpc/core/rpctest/\350\257\264\346\230\216.md" rename to "dlsRpc-core/src/test/scala/io/growing/dlsrpc/test/\350\257\264\346\230\216.md"