rpc
_jan_
这个作者很懒,什么都没留下…
展开
-
alipay-bolt 1.5.3 - ProtocolSwitch
1、用于按《位》检查开关是否打开 import com.alipay.remoting.config.switches.ProtocolSwitch; import lombok.extern.slf4j.Slf4j; /** */ @Slf4j public class ProtocolSwitchTest { /** * com.alipay.remoting.rpc.protocol.RpcCommandDecoderV2#decode(...) * 检查某<原创 2020-12-31 16:25:36 · 147 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码片段 - 获取类实现的版本号
// Dubbo implementation version, usually is jar version. private static final String VERSION = getVersion(Version.class, ""); org.apache.dubbo.common.Version#getVersion(java.lang.Class<?>, java.lang.String) public static String getVersion(Cla...原创 2020-12-30 16:44:30 · 202 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码片段 - lambda & 其他
orElseGet ConfigManager.getInstance().getDefaultProtocols() .filter(CollectionUtils::isNotEmpty) .orElseGet(() -> { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.refresh(); return new ArrayList<>(Arrays.asList(原创 2020-12-30 16:06:01 · 100 阅读 · 0 评论 -
alipay-bolt 1.5.3 - NettyServer
1、优先使用netty的 EpollServer com.alipay.remoting.rpc.RpcServer#doInit @Override protected void doInit() { if (this.addressParser == null) { this.addressParser = new RpcAddressParser(); } if (this.switches().isOn(GlobalSwitch.SERVE..原创 2020-12-30 13:14:28 · 254 阅读 · 2 评论 -
alipay-bolt 1.5.3 - HessianSerializer
import com.alipay.remoting.config.ConfigManager; import com.alipay.remoting.serialization.Serializer; import com.alipay.remoting.serialization.SerializerManager; import lombok.Builder; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java....原创 2020-12-30 12:06:24 · 371 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码 - 读取类的版本
org.apache.dubbo.common.Version#getVersion(java.lang.Class<?>, java.lang.String) public static String getVersion(Class<?> cls, String defaultVersion) { try { // find version info from MANIFEST.MF first Packa...原创 2020-09-06 23:45:13 · 221 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码 - 动态编译
org.apache.dubbo.common.extension.ExtensionLoader#createAdaptiveExtensionClass private Class<?> createAdaptiveExtensionClass() { /* 生成 Adaptive 代码 cachedDefaultName == type上@SPI 注解的值 */ String cod...原创 2020-09-06 01:03:16 · 152 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码 - 扩展机制 - 动态生成Adaptive(适配器)
1、每个扩展有且仅有一个Adaptive类 2、在调用ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension(); 3、获取Adaptive对象的时候: 1、如果获取不到,会动态生成一个,生成的规则是 1、自动实现扩展接口类中的方法 1、方法上的@Adaptive注解的值,最为key 2、获取扩展接口类@SPI注解的值,作为默认参数 ..原创 2020-09-06 01:01:37 · 106 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码 - 扩展机制
扩展类,有3种类型 1、类含有 @Adaptive 注解,那么这个类是 cachedAdaptiveClass 2、类是包装类(含有构造函数&构造函数参数只有一个&参数类型是目标类,如Protocol),那么这个类是 cachedWrapperClasses 3、普通扩展类型 org.apache.dubbo.common.extension.ExtensionLoader#getExtensionLoader 1、一种扩展类型,有且只能有一个类含有 @Ad..原创 2020-09-05 01:13:45 · 256 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码 - 获取绑定监听的地址
org.apache.dubbo.config.ServiceConfig#findConfigedHosts // if bind ip is not found in environment, keep looking up if (StringUtils.isEmpty(hostToBind)) { hostToBind = protocolConfig.getHost(); if (provider != null &&a.原创 2020-09-04 23:52:59 · 189 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码 - 使用 javassist 动态生成类
org.apache.dubbo.common.bytecode.Wrapper#makeWrapper private static Wrapper makeWrapper(Class<?> c) { if (c.isPrimitive()) { throw new IllegalArgumentException("Can not create wrapper for primitive type: " + c); } ...原创 2020-09-04 23:47:00 · 184 阅读 · 0 评论