前言:2019年09月23日临下班,产品的一个变更需求临近尾声阶段。本地测试OK,兴致冲冲的想着发布到测试环境,验证一下没有问题,五分钟结束战斗,明天就开始下个需求了。随在CE(公司的devOps系统)上切换到hotfix/xxx分支,部署上线。部署没有问题,跑了一通单测,呃呃呃呃呃。莫名的一堆错误。怎么可能,再deploy ,再重启,还是这个错误,难道是公司的CE有问题(以前会莫名其妙的出问题),释放掉重新申请服务器部署。忙了一通还是不行。绝望,后悔。公司的什么烂逼环境。本地明明没有问题,怎么部署一下就这样了(程序员通病,嘻嘻)。得,沙箱环境坏了,解决不了别想走了,明天ISV还要用。

查问题:入口肯定先根据日志确定问题呗,单测错误日志如下:

2019-09-24 19:19:57.899 ERROR --- [io-12345-exec-1] c.y.p.g.facade.ParkingBizOpenApiImpl     : (ParkingBizOpenApiImpl.java:90) : 参数校验或转换出错javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.String'. Check configuration for 'auth_code',输入参数为:PrePayPTO(pay_type=ALIPAY, mch_id=2099190827010164, sub_mchid=20190827151134481925, auth_code=11111, total_amount=1, out_trade_no=ISV1569323953935, subject=测试订单, goods_detail=[{"goods_id":"goods_id123","goods_name":"停车缴费","quantity":1,"price":1}], goods_tag=, attach=, extend_params={"industry_reflux_info":{"parking_id":"PI1509464128728884840","car_number":"京XX1234","einlass":"2019-08-15 17:30:26","parking_hours":"1.5","parking_name":"测试停车场"}}, service_name=PKTEST01)

看日志大概意思就是说@NotBlank注解不能用在属性auth_code上,第一:我的代码这块没有改过,以前明明可以运行,第二:我的auth_code就是String类型的,并且@NotBlank就是使用在String类型上 ,然后网上找了一堆的blog,随发现有一个博客说springboot2.0 ,hibernate-validator版本冲突 也可能报这个错,删除本地所有引入的第三方包,然后重新import , 查看本地项目依赖,果然:

hibernate-validator 两个版本号,6.0.16.Final 是我自己的, 5.2.4.Final 是哪里来的,随查阅自己的show depencies  , 查找hibernate-validator 的引入如图:

根据两个版本点进去,最后发现5.2.4.Final 是引入别人的dubbo依赖带进来了,以前他们没有,后加的(所以先前没有暴露过问题,上图中的密密麻麻的依赖图也是引入他们的一个依赖后变成这样不忍直视的样子),然后从他们的依赖中排除掉hibernate-validator ,问题解决。

后记:

1:通过躺过的这个坑,我认为这虽然是编码者导致的问题,也算是使用dubbo的一个弊端吧。

2:现在编码的时候基本上都是一个project ,多个moduel的架构,所以很多时候暴露的dubbo接口的服务只是project的一个moudel ,而父pom中一般都会引入一下常用的依赖。这样无形中被服务消费者强制依赖。所以建议dubbo 对外api,尽量不要继承父pom,且以最少依赖发布接口。

3:以一个正常的心态,平心静气的分析问题,别什么问题都推脱给环境。

花絮:上面说的解决过程虽然很简单,但是由于实际中操作中各种原因,折腾了三四个小时。

首先:始终坚信是环境问题,我写的代码肯定没有问题;我压根就没有改过这里的代码,而且已经稳定运行了很久。

其次:线上环境服务器不给开权限,下载不了jar包,本地刚开始没有删除本地所有第三方依赖,因为上面那个依赖图太大,电脑死机,确认不了是哪个第三方依赖引入的依赖,且本地打包没有问题,本地复现不了,线上的jar包看不到。

最后:因为别人的依赖坑了我,然后赶快看看我对外提供的dubbo接口pom:

​​

还好,老子果然明智,没有继承父pom,独立出去的。然后看看依赖:

啊,咋回事。。。。哎,没办法,产品要个性化提示校验信息,要不就是好几十行的if/else ,算了,就这样吧,互坑互坑吧。。回家,睡觉。。。。。。。程序员不就是这样,被别人坑人再坑别人嘛。。。。

记一次使用dubbo过程中版本冲突导致的坑的更多相关文章

  1. centos7安装Python3的过程中会和Python2.7版本冲突导致yum版本比对应,致使yum不能使用的问题。

    centos7安装Python3的过程中会和Python2.7版本冲突导致yum版本比对应,致使yum不能使用的问题. 原因:yum调用Python,启动程/usr/bin/yum就是一个python ...

  2. CASE:DB shutdown/open 过程中发生异常导致JOB不能自动执行

    CASE:DB shutdown/open 过程中发生异常导致JOB不能自动执行 现象: 一个DB中的所有JOB在3月25日之后就不再自动运行,查询DBA_JOBS,发现LAST_DATE定格在3月2 ...

  3. VS·调试过程中某个操作导致调试突然退出之解决方案

    阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...

  4. jenkins配置过程中踩过的一些坑

    1,编译通过之后,想要将编译好的war包放到远程服务器上,并解压 unzipBus.sh的脚本如下: #!/bin/bash jar -xvf bus.war 编译后报错:jar:Command no ...

  5. git rebase 过程中遇到冲突该怎么解决?

    在执行git rebase 过程中经常遇到问题,此时有点慌,一般如何解决呢? 1.先将本地的冲突手动解决 2.执行下面命令 git add . git rebase --contine  //继续re ...

  6. 记一次wordpress安装过程中遇到的问题及解决办法

    Q:无法建立目录wp-content/uploads/2017/03.有没有上级目录的写权限?A:执行chmod 777 wp-content/ 提升目录权限 Q:安装主题或安装插件的时候,用到FTP ...

  7. 记一次DG搭建过程中备库ORA-00210,ORA-00202,ORA-27086错误

    ORA-00210: cannot open the specified control file ORA-00202: control file: '/u01/app/oracle/oradata/ ...

  8. 记一次DG搭建过程中ORA-09925: Unable to createaudit trail file 错误

    今天做Oracle DG  编写initorcl的时候,修改完以后,sqlplus就不能再登陆,一直报 ERROR: ORA-09925: Unable to createaudit trail fi ...

  9. RxJava 1升级到RxJava 2过程中踩过的一些“坑”

    RxJava2介绍 RxJava2 发布已经有一段时间了,是对 RxJava 的一次重大的升级,由于我的一个库cv4j使用了 RxJava2 来尝鲜,但是 RxJava2 跟 RxJava1 是不能同 ...

随机推荐

  1. 【工具】rinetd 使用教程(linux 下的端口转发工具 )

    日期:2019-07-30 20:00:36 更新: 作者:Bay0net 介绍:使用 rinetd 来转发某端口的流量. 0x01. 安装 官网 RINETD 安装方法很简单,一条语句就 OK 了. ...

  2. LoadRunner 技巧之 添加事务

    事务(Transaction)用于模拟用户的一个相对完整的.有意义的业务操作过程,例如登录.查询.交易.转账,这些都可以作为事务,而一般不会把每次HTTP请求作为一个事务. 拿笔者所测试的邮箱系统为例 ...

  3. 教师表(TEACHER.DBF)

    20-27题使用的数据如表1和表2所示. 表1 教师表(TEACHER.DBF) 教师号 姓名 性别 籍贯 职称 年龄 工资/元 0001 王吉兵 男 江苏 讲师 27 2003.50 0002 张晓 ...

  4. React-Native中props用法详解

    props就是属性,是为了描述一个组件的特征而存在的.它是父组件传递给子组件的. 使用props 通过上一个页面传递 新建一个 PropsTest.js 文件 1 2 3 4 5 exprot def ...

  5. cocos2dx基础篇(6) 定时器schedule/update

    定时器在大部分游戏中是不可或缺的,即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面.时间.进度.敌人的指令等等.cocos2dx为我们提供了定时器schedule相关的操作.其操作函数的定义 ...

  6. 【VS开发】【图像处理】Pleora推出iPORT CL-U3外置抓帧器

    全球领先的高性能视频接口产品供应商Pleora科技公司近日宣布推出可将Camera Link®摄像头转化为USB3Vision™摄像头的首个产品iPORT CL-U3外置抓帧器,树立了另一个行业里程碑 ...

  7. hive_server2的权限控制

    CDH的core-sit开启: 第一个false表示用系统用户来和hive用户的权限绑定,但经测试并没有生效,所以可以改为true 第二项设置成ALL,表示创建者对其创建的表拥有所有的权限,这样也是比 ...

  8. 牛逼哄洪的 Java 8 Stream,性能也牛逼么?

    那么,Stream API的性能到底如何呢,代码整洁的背后是否意味着性能的损耗呢?本文对Stream API的性能一探究竟. 为保证测试结果真实可信,我们将JVM运行在 -server模式下,测试数据 ...

  9. 20 亿的 URL 集合,如何快速判断其中一个?

    假设遇到这样一个问题:一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M ...

  10. 洛谷 U78696 图书馆馆长的考验 题解

    题面 1. 图书馆馆长的考验(library) 红魔馆的拥有者蕾米莉亚的好友帕秋莉是红魔馆的大图书馆的馆长.擅长操纵五行,名言是“万物都有属性.所谓的属性,和弱点是一样的”. 一天,因为魔理沙看了神之 ...