zoukankan      html  css  js  c++  java
  • 【jmeter】dubbo 枚举数据类型

    在使用jmeter编写dubbo压测接口时,发现参数是枚举类型时出现错误
    代码中com.lluozh.api.UserProperty,是一个自定义的枚举类,该枚举有3个值:PHONE、SMS、EMAIl

    2020-03-03 20:01:55,635 ERROR i.g.n.j.p.d.s.DubboSample: Exception:
    org.apache.dubbo.rpc.RpcException: Failfast invoke providers
    dubbo://172.30.178.7:20880/com.xxx.xxx.api.service.xxxxApiService
    

    枚举类型数据比较特殊,是否因为请求参数的格式问题导致,修改请求参数格式如下
    在这里插入图片描述
    报错误

    2020-03-03 20:23:26,913 ERROR i.g.n.j.p.u.JsonUtils: json to class[sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl] is error!
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    

    那paramValue不能为string类型,那应该什么样的格式呢?查找网上解决方式,发现有提到说枚举不是一个类,需要格式为:

    {
    	"UserProperty""PHONE"
    }
    

    仍然失败

    看看git上issue是否有其他人提及这个问题,在issue中给出了两种不同的方式 github issues在这里插入图片描述

    并且在1.3.8或者2.7.5版本中已经解决了这个问题
    在这里插入图片描述
    好吧。升级jar的版本吧。在git中下载对应版本的jar包,成功替换后,发现并没有给出具体的使用例子 github issues,OMG!!!
    在这里插入图片描述
    尝试原来的{"UserProperty":"PHONE"},发现依然失败,这次应该是请求的参数格式有问题
    想通过服务端请求日志或调试模式下查看数据格式问题在哪里,发现请求并未到达服务端

    那通过源码吧,看看dubbo中的invoke源码: InvokeTelnetHandler
    在这里插入图片描述

    跟踪源码到 :PojoUtils

    在这里插入图片描述

    ok,格式应该是{"name":"value"},param的格式如下
    在这里插入图片描述
    调试请求ok,解决问题!

  • 相关阅读:
    VirtualBox中的网络连接方式详解
    DRUID连接池的实用 配置详解
    redis之如何配置jedisPool参数
    怎么把myeclipse项目导入IDEA中
    最新Hadoop大数据开发学习路线图
    编程能力七段论(下)
    编程能力七段论(上)
    移动无线测试技能树
    WebView加载网页不显示图片解决办法
    编程能力七段论
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533560.html
Copyright © 2011-2022 走看看