微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【Dubbo】dubbo-compatible项目说明

概述

  dubbo版本:2.7.8

  项目名称dubbo-compatible

  目的:在dubbo包名从"com.alibaba.dubbo"变为"org.apache.dubbo"后,用于升级dubbo版本后提供一定的兼容性

  主要包含以下接口或类

com.alibaba.dubbo.rpc.Filter / Invocation / Invoker / Result / RpcContext / RpcException
 
com.alibaba.dubbo.config.annotation.Reference / Service
 
com.alibaba.dubbo.config.spring.context.annotation.Enabledubbo
 
com.alibaba.dubbo.common.Constants / URL
 
com.alibaba.dubbo.common.extension.ExtensionFactory
 
com.alibaba.dubbo.common.serialize.Serialization / ObjectInput / ObjectOutput
 
com.alibaba.dubbo.cache.CacheFactory / Cache
 
com.alibaba.dubbo.rpc.service.EchoService / GenericService

 

说明

  1. 这些兼容类或接口都会标记为@Deprecated

  2. 这些兼容类或接口主要继承于对应的"org.apache.dubbo"包下的接口或类,一般无多余代码,都是使用父类代码

   比如:

package com.alibaba.dubbo.config;
  
import org.apache.dubbo.config.annotation.Service;
 
 
@Deprecated
 
public class ServiceConfig<T> extends org.apache.dubbo.config.ServiceConfig<T> {

 
public ServiceConfig() {
 
}

public ServiceConfig(Service service) {
 
super(service);
 
}
 
}
  1. 3. 这些兼容类或接口后续版本可能会删除,所以除非用于版本升级兼容,否则不建议用

 

代码

1. ServiceConfig

package com.alibaba.dubbo.config;
 
import org.apache.dubbo.config.annotation.Service;
 
@Deprecated
 
public class ServiceConfig<T> extends org.apache.dubbo.config.ServiceConfig<T> {
 
 
public ServiceConfig() {
}
  
public ServiceConfig(Service service) {
 
super(service);
}
 
}

 

2. ReferenceConfig

package com.alibaba.dubbo.config;
 
import org.apache.dubbo.config.annotation.Reference;
 
 
@Deprecated
 
public class ReferenceConfig<T> extends org.apache.dubbo.config.ReferenceConfig<T> {
 
public ReferenceConfig() {
 
}
public ReferenceConfig(Reference reference) { super(reference); } }

 

3. Invoker

package com.alibaba.dubbo.rpc;
 
import com.alibaba.dubbo.common.URL;
 
@Deprecated
 
public interface Invoker<T> extends org.apache.dubbo.rpc.Invoker<T> {
 
Result invoke(Invocation invocation) throws RpcException;
 
@Override
 
URL getUrl();
 
default org.apache.dubbo.rpc.Invoker<T> getoriginal() {
 
return null;
 
}
 
// This method will never be called for a legacy invoker.
 
@Override
 
default org.apache.dubbo.rpc.Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws org.apache.dubbo.rpc.RpcException {
 
return null;
 
}
 
class CompatibleInvoker<T> implements Invoker<T> {
 
private org.apache.dubbo.rpc.Invoker<T> invoker;
 
public CompatibleInvoker(org.apache.dubbo.rpc.Invoker<T> invoker) {
 
this.invoker = invoker;
 
}
 
 
@Override
 
public Class<T> getInterface() {
 
return invoker.getInterface();
 
}
 
@Override
public Result invoke(Invocation invocation) throws RpcException {
 
return new Result.CompatibleResult(invoker.invoke(invocation.getoriginal()));
 
}
 
@Override
 
public URL getUrl() {
 
return new URL(invoker.getUrl());
 
}
 
@Override
public boolean isAvailable() {
 
return invoker.isAvailable();
 
}
 
@Override
public void destroy() {
 
invoker.destroy();
 
}
 
@Override
public org.apache.dubbo.rpc.Invoker<T> getoriginal() {
 
return invoker;
 
}
}
 
}

 

4. Exporter

package com.alibaba.dubbo.rpc;
 
@Deprecated
 
public interface Exporter<T> extends org.apache.dubbo.rpc.Exporter<T> {
 
 
@Override
 
Invoker<T> getInvoker();
 
 
class CompatibleExporter<T> implements Exporter<T> {
 
private org.apache.dubbo.rpc.Exporter<T> delegate;
 
public CompatibleExporter(org.apache.dubbo.rpc.Exporter<T> delegate) {
 
this.delegate = delegate;
 
}
 
@Override
public Invoker<T> getInvoker() {
 
return new Invoker.CompatibleInvoker<>(delegate.getInvoker());
 
}
 
@Override
public void unexport() {
 
delegate.unexport();
}
 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐