Java 性能测试期间CXF中的ConcurrentModificationException

Java 性能测试期间CXF中的ConcurrentModificationException,java,cxf,Java,Cxf,性能测试期间发现以下异常 CXF v3.0.0 jdkv1.8.92 policyinterceptor.java:74是以下代码: Policy p = (Policy)msg.getContextualProperty(PolicyConstants.POLICY_OVERRIDE); 看来拦截器试图操纵Hashmap数据(使用交换?) 我们已经在使用此选项: getRequestContext().put("thread.local.request.context", "true");

性能测试期间发现以下异常

CXF v3.0.0

jdkv1.8.92

policyinterceptor.java:74是以下代码:

Policy p = (Policy)msg.getContextualProperty(PolicyConstants.POLICY_OVERRIDE);
看来拦截器试图操纵Hashmap数据(使用交换?)

我们已经在使用此选项:

 getRequestContext().put("thread.local.request.context", "true");
从这里开始,但stacktrace中没有任何更改

检查中的问题列表。没有发现类似的东西

有什么建议吗

javax.xml.ws.soap.SOAPFaultException: Fault string, and possibly fault code, not set 
   at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:159)
   at com.sun.proxy.$Proxy281.reqVirtualAcct(Unknown Source) 
   at com.mycompanyname.vc.vpp.VService.requestCFP(VService.java:240)
   at com.mycompanyname.vc.vpp.VService.requestC(VService.java:216)
   at com.mycompanyname.vc.vpp.VService.requestC(VService.java:105) 
   at com.mycompanyname.payment.PaymentSI.requestAndPopulateVC(PaymentSI.java:959) 
   at com.mycompanyname.payment.PaymentSI.createPayment(PaymentSI.java:669)
   at com.mycompanyname.payment.PaymentSI.createPayment(PaymentSI.java:2099)
   at sun.reflect.GeneratedMethodAccessor641.invoke(Unknown Source) 
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498) 
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) 
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
   at com.sun.proxy.$Proxy228.createPayment(Unknown Source)
   at com.mycompanyname.paymentws.PSaaSOrderPortTypeV3Impl.createP(PSaaSOrderPortTypeV3Impl.java:148)
   at sun.reflect.GeneratedMethodAccessor880.invoke(Unknown Source) 
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
   at com.sun.proxy.$Proxy260.createPayable(Unknown Source) 
   at sun.reflect.GeneratedMethodAccessor880.invoke(Unknown Source) 
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:181) 
   at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97) 
   at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.invoke(AbstractJAXWSMethodInvoker.java:237) 
   at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:69)
   at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) 
   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
   at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126) 
   at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 
   at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) 
   at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
   at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:243)
   at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) 
   at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:197)
   at org.apache.cxf.transport.servlet.ServletController.filter(ServletController.java:146) 
   at org.apache.cxf.transport.servlet.CXFNonSpringServlet.doFilter(CXFNonSpringServlet.java:144) 
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
   at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:220) 
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 
   at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190) 
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
   at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.ConcurrentModificationException
   at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
   at java.util.HashMap$EntryIterator.next(HashMap.java:1476) 
   at java.util.HashMap$EntryIterator.next(HashMap.java:1474) 
   at java.util.HashMap.putMapEntries(HashMap.java:512) 
   at java.util.HashMap.putAll(HashMap.java:785) 
   at org.apache.cxf.message.MessageImpl$1.putAll(MessageImpl.java:188)
   at org.apache.cxf.message.MessageImpl.calcContextCache(MessageImpl.java:212) 
   at org.apache.cxf.message.MessageImpl.getContextualProperty(MessageImpl.java:174)
   at org.apache.cxf.ws.policy.PolicyInInterceptor.handle(PolicyInInterceptor.java:74)
   at org.apache.cxf.ws.policy.AbstractPolicyInterceptor.handleMessage(AbstractPolicyInterceptor.java:44)
   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
   at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798) 
   at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1636)
   at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1525)
   at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1330) 
   at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:56) 
   at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:215) 
   at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) 
   at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:638)
   at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
   at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514) 
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326) 
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279)
   at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
   at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:137) 
 ... 59 more

更新

此问题已移至“暂停”:

寻求调试帮助的问题(“为什么此代码不起作用?”) 必须包括所需的行为、特定的问题或错误以及 在问题本身中复制它所需的最短代码。 没有明确问题陈述的问题对其他人没有用处 读者。请参阅:如何创建一个最小的、可复制的示例。”

这个问题不是“为什么这个代码不工作?”。这个问题是“为什么这段代码不能在非常特定的情况下工作,在依赖项的某个地方出现异常?”特定的情况是性能测试。在所有其他情况下,该代码工作正常

“复制所需的最短代码”是一个问题,因为性能测试是在真实系统上进行的测试,所以没有任何代码可以复制。无论如何,我试图复制它,但没有运气

所以我仍然认为原始问题有足够的上下文和描述。
顺便说一句,尽管周末有人问我这个问题,我还是得到了两张赞成票

我的猜测是,由于性能测试中的消息对其进行了猛烈攻击,导致它仍然试图在处理第一条消息时,在处理第二条消息时重新加载缓存。也许可以尝试修改您的性能测试,在释放torrent之前缓慢地触发前六条消息(并在发布过程中执行类似操作)@racraman这是有道理的。我们会检查这个案子。谢谢