在 rest 服务上运行负载测试时,每个请求都有随机的 xml 内容,偶尔会发生以下异常。似乎负载越高,它发生的可能性就越大。
Spring 中将 xml 解组为 java 对象的当前实现似乎不是线程安全的?
13:23:38,314 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/fault-code-translation].[SpringApplication]] (http-/0.0.0.0: 14080-36) JBWEB000236:Servlet SpringApplication 的 Servlet.service() 抛出异常:java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) [rt.jar:1.8.0_31] 在 java.util.ConcurrentModificationException .util.ArrayList$Itr.next(ArrayList.java:851) [rt.jar:1.8.0_31] at com.sun.xml.bind.v2.runtime.reflect.Lister$CollectionLister$1.next(Lister.java: 288)在 com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:139) 在 com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java: 159) 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:358) 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593) 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:340) 在 com.sun.xml。 bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494) 在 com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:323) 在 com.sun.xml.bind.v2。 runtime.MarshallerImpl.marshal(MarshallerImpl.java:251) 在 org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter.writeToResult(Jaxb2RootElementHttpMessageConverter.java:181) [spring-web-4.1.7.RELEASE.jar:4.1.7.发布] 在 org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java:66) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] 在 org.springframework.http.converter .AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:208) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor. java:161) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE] 在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:101) [spring -webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]161) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE] 在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:101) [spring-webmvc -4.1.7.RELEASE.jar:4.1.7.RELEASE]161) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE] 在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:101) [spring-webmvc -4.1.7.RELEASE.jar:4.1.7.RELEASE]
执行
import org.springframework.web.bind.annotation.*
APPLICATION_XML_V1 = "application/vnd.nnn.nnn.nnn.v1+xml"
@RequestMapping(
value = "/{language}/batchtranslation",
method = RequestMethod.POST,
consumes = {MediaType.APPLICATION_XML_V1})
public Response translateBatchForLanguage_1_0(@PathVariable("language") String language,
@RequestBody String body){
// Implementation code
}
异常发生在实现代码执行之前,它发生在spring代码内部。