在测试环境给下游配置测试数据时, 发现应用中提示异常信息:

2025-03-08 16:55:42.965 INFO  [] [XNIO-3 task-23] [SystemAction] 添加系统配置。start...请求数据:{"unit":"字符","creator":"2","code":"CST_ALL_QICHA_FILTER","record":"企查查名称过滤器, rule:过滤方式,end过滤结尾字符, index过滤包含字符,start过滤起始字符.","value":"[{\"rule\":\"end\",\"key\":\"百货店\"}]"}
Exception in thread "XNIO-3 task-23" java.lang.NoClassDefFoundError: io/undertow/server/DefaultResponseListener
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)

使用arthas查询日志

[root@localhost home]# java -jar arthas-boot.jar
[INFO] JAVA_HOME: /usr/local/jdk/jdk1.8.0_401/jre
[INFO] arthas-boot version: 3.7.2
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 23008 /home/xpos-channel-srv/xpos-channel-srv.jar
  [2]: 29063 /home/xpos-api-web-srv/xpos-api-web-srv.jar
  [3]: 10280 /home/pos-core/pos-core.jar
  [4]: 31241 /home/pos-http/pos-http.jar
  [5]: 1674 /home/eureka/eureka.jar
  [6]: 12523 /home/xpos-ams-srv/xpos-ams-srv.jar
  [7]: 8013 /home/xpos-batch-srv/xpos-batch-srv.jar
  [8]: 10382 /home/pos-server-key/pos-server-key.jar
  [9]: 2992 /home/xpos-txn-srv/xpos-txn-srv.jar
  [10]: 28786 /home/xpos-cif-srv/xpos-cif-srv.jar
  [11]: 21715 /home/xpos-mkt-srv/xpos-mkt-srv.jar
  [12]: 19414 /home/xpos-core-srv/xpos-core-srv.jar
  [13]: 3478 /home/pos-server/pos-server.jar
  [14]: 13880 /home/xpos-api-customer-srv/xpos-api-customer-srv.jar
  [15]: 22649 /home/xpos-abiz-srv/xpos-abiz-srv.jar
  [16]: 22394 /home/xpos-oos-web-srv/xpos-oos-web-srv.jar
  [17]: 989 /home/xpos-platform-srv/xpos-platform-srv.jar
16
[INFO] Start download arthas from remote server: https://arthas.aliyun.com/download/4.0.4?mirror=aliyun
[INFO] Download arthas success.
[INFO] arthas home: /root/.arthas/lib/4.0.4/arthas
[INFO] Try to attach process 22394
[INFO] Attach process 22394 success.
[INFO] arthas-client connect 127.0.0.1 3658
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.  
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-' 
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-. 
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----' 

wiki       https://arthas.aliyun.com/doc
tutorials  https://arthas.aliyun.com/doc/arthas-tutorials.html
version    4.0.4
main_class
pid        22394
time       2025-03-08 17:01:52.970

排查方法执行路径和耗时

[arthas@22394]$ trace com.posp.oos.web.srv.service.impl.ConfigServiceImpl addConfig  -n 1
Press Q or Ctrl+C to abort.
Affect(class count: 2 , method count: 2) cost in 563 ms, listenerId: 1
`---ts=2025-03-08 17:03:42.076;thread_name=XNIO-3 task-26;id=148;is_daemon=false;priority=5;TCCL=org.springframework.boot.loader.LaunchedURLClassLoader@63961c42
    `---[1.537211ms] com.posp.oos.web.srv.service.impl.ConfigServiceImpl$$EnhancerBySpringCGLIB$$e8b626cd:addConfig() [throws Exception]
        +---[19.14% 0.29423ms ] org.springframework.cglib.proxy.MethodInterceptor:intercept() [throws Exception]
        `---throw:java.lang.NoClassDefFoundError #275 [org/springframework/transaction/support/CallbackPreferringPlatformTransactionManager]

发现异常信息, 并查看到具体的位置.

查看方法的入参出参和异常

[arthas@22394]$ watch com.posp.oos.web.srv.service.impl.ConfigServiceImpl addConfig '{params,returnObj,throwExp}'  -n 5  -x 3
Press Q or Ctrl+C to abort.
Affect(class count: 2 , method count: 2) cost in 182 ms, listenerId: 7
method=com.posp.oos.web.srv.service.impl.ConfigServiceImpl$$EnhancerBySpringCGLIB$$e8b626cd.addConfig location=AtExceptionExit
ts=2025-03-08 17:22:47.493; [cost=0.492887ms] result=@ArrayList[
    @Object[][
        @JSONObject[
            @String[unit]:@String[字符],
            @String[creator]:@String[2],
            @String[code]:@String[CST_ALL_QICHA_FILTER],
            @String[record]:@String[企查查名称过滤器, rule:过滤方式,end过滤结尾字符, index过滤包含字符,start过滤起始字符.],
            @String[value]:@String[[{"rule":"end","key":"百货店"}]],
        ],
    ],
    null,
    java.lang.NoClassDefFoundError: org/springframework/transaction/support/CallbackPreferringPlatformTransactionManager
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:275)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
        at com.posp.oos.web.srv.service.impl.ConfigServiceImpl$$EnhancerBySpringCGLIB$$e8b626cd.addConfig(<generated>)
        at com.posp.oos.web.srv.controller.SystemAction.addConfig(SystemAction.java:486)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

定位到具体文件的行数

查看包中是有这个架包和具体的class文件的.

突发奇想查看具体的jar包,拉下来看看. 发现没有jar文件.

[root@localhost xpos-oos-web-srv]# ls
arthas-output  backup  log  start.sh  stop.sh  xpos-oos-web-srv

了解到, 有同事通过jenkins发布应用但是失败了. jar删除了. 没停服务新jar包也没传上来.

后续忙其他事情没管了

解决: 重新发布

后续正常了.

文章作者: 刘同学
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 刘同学的小站
后端 Java
喜欢就支持一下吧