当前位置: 首页 > news >正文

大理州住房和城乡建设局网站深圳品牌女装前十名

大理州住房和城乡建设局网站,深圳品牌女装前十名,网站后台显示不了,简述营销型网站开发流程图润普挂卷失败之老卷宗对接NP无法获取案件信息问题排查 写在最前面 根因#xff1a;NP的dzjzzzfw与老卷宗dzjz服务用的zookeeper不是同一个#xff0c;且老卷宗指向的zookeeper没有任何一个匹配的dzjzzzfw。仅有消费者#xff0c;没有任何生产者#xff0c;导致老卷宗通过…润普挂卷失败之老卷宗对接NP无法获取案件信息问题排查 写在最前面 根因NP的dzjzzzfw与老卷宗dzjz服务用的zookeeper不是同一个且老卷宗指向的zookeeper没有任何一个匹配的dzjzzzfw。仅有消费者没有任何生产者导致老卷宗通过dubbo获取案件信息失败。 非以下情况本文基本不具有参考价值可不继续观看 润普通过老卷宗挂卷且堆栈错误明确指向获取案件信息空指针老卷宗刷新卷宗失败且堆栈错误明确指向获取案件信息空指针非卷宗服务但使用了zookeeper、dubbo组件且堆栈错误明确指向获取服务提供者空指针 问题现象 现场反馈润普所有案件均挂卷失败从润普提供的信息来看润普调用多个案件多个接口老卷宗均返回了{“code”:201,“compressData”:false,“message”:“接口调用不成功action【fileXXXAndDirectoryInfoSharedStorage】”反复重试很多次结果都一样已经持续几天了客户着急了卷宗的研发还在忙别的正好我在现场之前也有卷宗问题处理经验我就先自己上手排查一下吧。 初步排查 根据之前的经验按照润普提供的接口路径在老卷宗代码里面找到了对应的接口但接口中没有润普提供的错误信息后来在接口的父类com.t.s.c.httpapi.AbstractHttpApi#execute中找到了对应代码 Overridepublic ApiResult execute(String action, MapString, String headers,MapString, Object params) {if (action.indexOf(.) 0) {action action.substring(action.indexOf(.) 1);}try {Method method this.getClass().getDeclaredMethod(action,Map.class, Map.class);method.setAccessible(true);return (ApiResult) method.invoke(this, headers, params);} catch (Exception e) {logger.error(e.getMessage(), e);}return new ApiResult(ApiResultCodeConsts.API_NOT_FOUND这里是201,接口调用不成功action【 action 】);}不过这里是通用的报错并不能直接定位具体问题。还好这里有输出堆栈信息根据代码路径去logback.xml中找到对应logger确认日志输出到了 KaTeX parse error: Expected group after _ at position 29: …lassifiBusiness_̲{ip}_${port}.log 文件中。 !-- 忽略不相关内容 --appender namerpClassifiBusiness classch.qos.logback.core.rolling.RollingFileAppenderFile${baseHome}/${appname}_rpClassifiBusiness_${ip}_${port}.log/Fileencoderpattern%d{yyyy-MM-dd HH:mm:ss:SSS , GMT8} [%-5level] [%-5thread] [%logger{20}:%line] - %msg%n/patterncharsetUTF-8/charset/encoderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelinfo/level/filterappendtrue/appendrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${baseHome}/${appname}_rpClassifiBusiness_${ip}_${port}.%d{yyyy-MM-dd}.log.zip/fileNamePattern/rollingPolicy/appender!-- 忽略不相关内容 --logger namecom.thunisoft.fy.dzjz.httpapi.ZnfzbaxtHttpApi levelinfo additivityfalseappender-ref refrpClassifiBusiness //logger跟现场要来了对应日志并使用调用参数搜索定位到获取案件信息空指针 2023-02-08 08:39:52:340 [INFO ] [qtp970538683-19221] [c.t.f.d.h.ZnfzbaxtHttpApi:2312] - 从np获取案件信息 2023-02-08 08:39:52:341 [ERROR] [qtp970538683-19221] [c.t.f.d.h.ZnfzbaxtHttpApi:53] - null java.lang.reflect.InvocationTargetException: nullat sun.reflect.GeneratedMethodAccessor888.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at com.thunisoft.summer.component.httpapi.AbstractHttpApi.execute(AbstractHttpApi.java:51)at com.thunisoft.fy.dzjz.httpapi.DzjzHttpApiServlet.doPost(DzjzHttpApiServlet.java:83)at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)... 去掉不相关内容at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException: nullat com.thunisoft.fy.dzjz.httpapi.ZnfzbaxtHttpApi.getAjxx(ZnfzbaxtHttpApi.java:1637)at com.thunisoft.fy.dzjz.httpapi.ZnfzbaxtHttpApi.getSpAjxx(ZnfzbaxtHttpApi.java:2313)at com.thunisoft.fy.dzjz.httpapi.ZnfzbaxtHttpApi.fileClassificationInfoAndDirectoryInfoSharedStorage(ZnfzbaxtHttpApi.java:1879)... 58 common frames omitted而对应业务代码长下面这样 private CaseInfoBean getAjxx(Long NAjlbs, Integer NFyDm, Integer NAjlb) {BaseInfoBean req new BaseInfoBean();req.setNAjbs(NAjlbs);req.setNAjlb(NAjlb);req.setNFyid(NFyDm);if (ajxxDubboService null) {ajxxDubboService (IAjxxDubboService) ArteryUtil.getBean(ajxxDubboService);}CaseInfoBean ajxx ajxxDubboService.getAjxx(req); // 这一行报错了。ajxxDubboService类型为com.thunisoft.dzjz.dubbo.ywxtProvider.IAjxxDubboServiceif (ajxx null) {return null;}return ajxx;}从上面代码来看NPE的话只可能是 ajxxDubboService 这个对象未实例化而这个对象是使用一个dubbo组件注册到spring里面的这个逻辑已经用了好多年了结合以上情况分析是老卷宗服务和审判系统之间的通道哪儿出问题了。 到这里根据经验让现场检查dzjzzzfw是否正常现场说NP研发已经检查过了服务正常的。然后又想起来之前好像谁说过老卷宗是有启动顺序要求的没按照顺序启动可能会导致无法正常调用dzjzzzfw但我TSTC、ADC、既往卷宗相关文档扒了一圈都没找到哪儿有这个说明现场也不知道。还好来回换了好几个关键字一页页扒最终在TSTC中找到了徐海明明哥的一篇帖子电子卷宗启动方法及FAQ2.2版里面描述了老卷宗的启动步骤让现场按照帖子顺序验证说好像好了但润普下班了需要明天验证。 zookeeper…有些跟本文无关的省略了dzjzzzfw dzjz老卷宗服务 第二天一验证凉凉问题依旧报错相同这船到桥头自然沉呀不科学… 再次定位 第二天现场反馈问题依旧客户又催了得抓紧搞定了。 既然还不行那就跟启动顺序没关系了下一步干啥呢网上看了下zookeeper、dubbo的一些使用教程了解到zookeeper是一个服务注册中心生产者和消费者都是跟注册中心交互dubbo是一个分布式服务框架卷宗使用dubbo框架的组件去跟注册中心交互实现RPC调用。既然消费者初始化失败了那么我们去注册中心里面看看生产者是否正常吧在本文中dzjzzzfw就是生产者dzjz就是消费者。 记得之前搜过有个zkcli工具可以查看zookeeper服务情况所以下载这个工具解压到磁盘结合网上的教程连上注册中心并使用zkcli的ls命令观察服务情况 # 连接注册中心 E:\xxx\apache-zookeeper-3.8.1-bin\bin\zkCli.cmd -server 131.16.xx.xx:2181 # 查看根路径都有哪些节点 [zk:131.16.xx.xx:2181CONNECTED x]ls / # 输出 [dubbo, zookeeper] # zookeeper中基本没什么东西着重看dubbo [zk:131.16.xx.xx:2181CONNECTED x]ls /dubbo # 这里输出一堆节点[com.thunisoft.clfx.ajxx.provider.IAjDataDubboService, com.thunisoft.clfx.ajxx.provider.IAjSaveDubboService ... com.thunisoft.summer.component.approve.service.IProcessService] # 然后查看报错代码类型定义的那个接口是否存在 [zk:131.16.xx.xx:2181CONNECTED x]ls /dubbo/com.thunisoft.dzjz.dubbo.ywxtProvider.IAjxxDubboService # 输出 [configurators, consumers, providers, routers] # 继续查看消费者 [zk:131.16.xx.xx:2181CONNECTED x]ls /dubbo/com.thunisoft.dzjz.dubbo.ywxtProvider.IAjxxDubboService/consumers # 输出 [consumer%3A%2F%2F131.16.xx.xx%2F...] 代表已经有消费者注册进来了 # 查看生产者 [zk:131.16.xx.xx:2181CONNECTED x]ls /dubbo/com.thunisoft.dzjz.dubbo.ywxtProvider.IAjxxDubboService/providers # 输出 [] 空从这里分析应该是生产者没成功注册到zookeeper中用另一家正常的单位重新走了一遍以上zkCli命令确认正常的单位中providers列表也是有数据的所以更加明确当前问题就是生产者没注册成功那就看看两边zookeeper配置有没有不同。 要来dzjzzzfw和dzjz两个服务的远程查看两个服务的配置发现dzjz/bin/StartTAS.sh的export ZOOKEEPER_URL参数及dzjzzzfw/webapp/WEB-INF/classes/props/config.properties的zookeeper.dzjz.address参数的zookeeper用的不是同一个。 再次用zkCli连上dzjzzzfw指向的zookeeper使用 ls /dubbo/com.thunisoft.dzjz.dubbo.ywxtProvider.IAjxxDubboService/providers命令确认列表不为空让现场调整后重启验证确认相关功能正常功能恢复。 现场为啥这么配置什么时候改的不好追溯不过好在问题最终解决了。整理到这里后续有类似问题直接来复制代码检查加快问题处理效率。不过还是希望以后不会遇到这个问题不然搞了一半天就是这么一个简单配置问题还是有点儿浪费资源的。 参考资料 zkCli 下载 https://dlcdn.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz Zookeeper之zkCli.sh客户端的使用https://blog.51cto.com/u_12564104/2896709
http://www.hkea.cn/news/14562152/

相关文章:

  • seo网站的优化流程佛山市官网网站建设多少钱
  • 商城网站源码dede做教程网站资源放哪里
  • 天河门户网站建设廊坊网站建设制作电话
  • 商超网站网站续费管理系统
  • 网站开发简答题家居装修设计
  • 在一个空间建两个网站注册城乡规划师难度
  • 企业做网站公司怎么做三维制图培训班在哪里
  • 徐州网站建设市场分析wordpress采集1024
  • 加强网站集约化建设怎么推广游戏叫别人玩
  • 投诉举报网站 建设方案把wordpress动静分离
  • 网站开发说明wordpress文章自动更新
  • 自己做网站 最好的软件下载河南网站建设的公司
  • 我被钓鱼网站骗了骗取建设信用卡建设银行会怎么处理钱会还回吗wordpress微博同步
  • 国外做珠宝的网站有哪些公司的 SEO与网站建设
  • 地产网站建设方案wordpress调用多媒体
  • 镇平建设局网站企业网站如何上存
  • 廊坊设计网站公司网站建设去哪里找客户
  • 网站开发的源代码怎么算侵权黄页推广2021
  • 国内炫酷的网站设计请人做个网站多少钱
  • 国外做鞋子的网站吗天津个人做网站
  • 合肥市建设工程合同备案网站生成论坛网站
  • 网站建设与维护 计算机平顶山市网站建设
  • 社区app网站模板下载南宁网站推广优化
  • 中国舆情观察网搜索引擎优化的对比
  • 青岛英文建站公司西安网站价格
  • 天津环保网站建设概念tp5网站开发模板
  • 郑州设计师网广州seo排名
  • 怎么做五合一网站国家开发投资集团
  • 北京永安市政建设投资有限公司网站静态网站需要数据库吗
  • 网站建设拾金手指下拉二十网站开发保障合同