`

dubbo相关问题

 
阅读更多

1、异步调用问题:假如A->B->C三个应用调用关系,将A->B的设置为async=true,则B->C自动也是异步。因为RpcContext里面的Attachments是final类型,会传递。

2、hession序列化:Hessian是dubbo的默认序列化协议,它比java的序列化性能要高很多。当hessian序列化一个对象时,默认的序列化类是com.caucho.hessian.io. JavaSerializer。当子类和父类同名字段被覆盖,会发生覆盖,导致最终值出问题。参考一,可通过删除子类相同字段。也可以通过改变序列化方式,参考

public JavaDeserializer(Class cl)
  {
    _type = cl;
    _fieldMap = getFieldMap(cl);
.......

protected HashMap getFieldMap(Class cl)
  {
    HashMap fieldMap = new HashMap();
    
    for (; cl != null; cl = cl.getSuperclass()) {
      Field []fields = cl.getDeclaredFields();
      for (int i = 0; i < fields.length; i++) {
        Field field = fields[i];

        if (Modifier.isTransient(field.getModifiers())
        || Modifier.isStatic(field.getModifiers()))
          continue;
        else if (fieldMap.get(field.getName()) != null)
          continue;
......

private Object readObjectInstance(Class cl, ObjectDefinition def)
    throws IOException
  {
    String type = def.getType();
    String []fieldNames = def.getFieldNames();
......


public Object readObject(AbstractHessianInput in,
               Object obj,
               String []fieldNames)
    throws IOException
  {
    try {
      int ref = in.addRef(obj);

      for (int i = 0; i < fieldNames.length; i++) {
        String name = fieldNames[i];
                //重名的话,取出的都是私有的属性
        FieldDeserializer deser = (FieldDeserializer) _fieldMap.get(name);

        if (deser != null)      // 当in读到父类时,把本类的属性值覆盖掉了
      deser.deserialize(in, obj);
        else
          in.readObject();
      }

      Object resolve = resolve(obj);

      if (obj != resolve)
    in.setRef(ref, resolve);

      return resolve;
    } catch (IOException e) {
      throw e;
    } catch (Exception e) {
      throw new IOExceptionWrapper(obj.getClass().getName() + ":" + e, e);
    }
  }

 

分享到:
评论

相关推荐

    dubbo资源 dubbo-admin dubbo demo

    【标题】"dubbo资源 dubbo-admin dubbo demo" 提供的是关于Apache Dubbo的相关素材,主要包括了Dubbo-admin的管理和示例项目。Dubbo是一个高性能、轻量级的开源Java RPC框架,它提供了丰富的服务治理功能,是阿里...

    当DUBBO遇上Arthas-排查问题的实践.pdf

    ### 当DUBBO遇上Arthas-排查问题的实践 #### 概述 在现代微服务架构中,Dubbo作为一款高性能、轻量级的开源RPC框架,被广泛应用于服务治理领域。...希望本文能对您在实际工作中处理Dubbo相关问题时有所帮助。

    Dubbo相关学习资料

    Dubbo是中国阿里巴巴开源的一款高性能、轻量级的Java RPC框架,它提供了丰富的功能,包括服务注册与发现、负载均衡、容错、监控等,旨在提高微服务架构中的服务治理效率。Dubbo在分布式系统设计中扮演着至关重要的...

    dubbo相关官方文档

    《Dubbo相关官方文档》包含了三个重要的组成部分:《dubbo-user-book》、《dubbo-dev-book》和《dubbo-admin-book》,这些都是深入了解和使用Dubbo框架必不可少的参考资料。接下来,我们将详细探讨这些文档中涉及的...

    dubbo admin jdk1.8

    接着,下载并解压Tomcat服务器,将压缩包中的dubbo-admin相关文件放置到Tomcat的webapps目录下。如果是WAR文件,Tomcat会自动将其展开并部署。然后,启动Tomcat,通过浏览器访问指定的URL(如...

    dubbo框架标签dubbo.xsd

    在Dubbo框架中,`dubbo.xsd`是一个专门定义Dubbo服务配置的XML Schema文件,包含了所有Dubbo相关的标签和属性定义,如服务提供者、消费者、协议、注册中心、监控中心等配置元素。 当我们需要在XML配置文件中使用...

    dubbo2.5.6.zip

    《Dubbo 2.5.6与Java 1.8的兼容性问题解析》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,广泛应用于分布式系统中。而Java,作为服务端开发的基石,其版本选择直接影响到框架的运行效果。本篇文章...

    dubbo-admin的下载

    总的来说,成功下载和运行dubbo-admin需要对Java环境有基本的了解,并能够处理构建和配置相关的问题。遵循上述步骤,你应该能顺利地将dubbo-admin集成到你的开发环境中,从而更好地管理和监控Dubbo服务。

    dubbo xsd的支持

    当我们在项目中使用Dubbo时,可能遇到XML配置文件无法正确解析的问题。这通常是因为缺少了对应的xsd文件,导致XML解析器无法理解配置文件中的标签和属性。例如,如果没有`dubbo.xsd`,XML解析器就无法识别像`&lt;dubbo:...

    dubbo示例+dubbo官方配置文档+dubbo培训ppt

    此外,`d01373f082025aaf111c708cfbedab64034f1a4e.jpg`可能是与Dubbo相关的示例图或者架构图,它能直观地展示Dubbo的组件间交互,帮助我们更好地理解Dubbo的工作流程。 总的来说,掌握Dubbo的关键在于理解其核心...

    dubbo问题汇总控制台例子第二部分

    在本篇中,我们将深入探讨"Dubbo问题汇总控制台例子第二部分"的相关知识点,结合提供的标签和压缩包文件,我们来详细分析与Dubbo、控制台、文档以及WAR和RAR项目构建相关的技术要点。 首先,让我们从"Dubbo问题汇总...

    dubbo使用例子 dubbo使用例子

    9. **监控与管理**:Dubbo提供了一套完整的监控体系,可以实时查看服务的调用情况、性能指标等,帮助开发者进行问题定位和系统优化。 在压缩包中的" dubbo "文件可能包含了示例项目的源代码、配置文件、依赖库等...

    dubbo捕获自定义异常_dubbo异常捕获_dubbo异常_自定义异常_捕捉异常_

    本文将深入探讨如何在 Dubbo 中捕获自定义异常,以及相关的最佳实践。 1. **自定义异常类** 在 Java 中,自定义异常通常继承自 `Exception` 或其子类。例如,你可以创建一个名为 `CustomServiceException` 的异常...

    dubbo入门例子程序

    在例子中,可能简化了这部分内容,但在实际开发中,我们需要配置注册中心的相关信息,以确保服务间的通信畅通。 6. **Dubbo配置**: Dubbo的配置可以通过XML文件或Java注解完成。XML配置通常在`dubbo.properties`...

    dubbo的简单小demo

    dubbo-provider模块是服务提供者部分,它实现了dubbo-api模块中定义的服务接口,并且配置了服务暴露的相关信息,如服务版本、Group、协议、超时时间等。服务提供者在启动时会注册到Zookeeper,等待服务消费者的调用...

    dubbo+dubbo-admin.zip

    在SpringBoot环境中集成Dubbo,我们需要在项目中引入相应的依赖,并配置相关的Bean。首先,在`pom.xml`文件中添加Dubbo和SpringBoot的依赖,如`dubbo-spring-boot-starter`,以及对应的版本号。然后,在`application...

    dubbo源码解析

    dubbo作为一个分布式服务框架,能够在复杂的网络环境下提供高性能和透明化的远程服务调用,是解决这些问题的有效工具。 2. 在阅读源码时,需要先了解源码的阅读路径。dubbo的源码分布较为分散,阅读时需要有一定的...

    dubbo入门demo样例

    同样,在pom.xml中也需要引入Dubbo相关依赖,以及可能的业务库依赖。启动服务提供者后,它会将自己的服务注册到指定的注册中心。 在使用Dubbo时,一个关键的概念是服务注册与发现。通常,我们会使用ZooKeeper作为...

    Dubbo空指针问题测试代码.zip

    本文将深入探讨在使用Dubbo时可能出现的空指针(NullPointerException,简称NPE)问题,以及如何通过测试来理解和解决这些问题。我们主要关注的是Dubbo 2.6.3版本,这个版本包含了XML配置和注解配置两种方式,并且会...

    dubbo服务注册到eureka.zip

    - 在 Dubbo 服务提供者的配置文件中,添加 Eureka 相关配置,如应用名、Eureka 服务器地址等。 - 修改服务提供者的启动类,加入 @EnableEurekaClient 注解,激活 Eureka 客户端功能。 3. **注册 Dubbo 服务到 ...

Global site tag (gtag.js) - Google Analytics