残りのサービスで負荷テストを実行すると、各リクエストにランダムな xml コンテンツが含まれ、次の例外が発生することがあります。負荷が高いほど発生しやすいようです。
xml を java オブジェクトに非整列化するための Spring の現在の実装は、スレッドセーフではないようです?
13:23:38,314 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/fault-code-translation].[SpringApplication]] (http-/0.0.0.0: 14080-36) JBWEB000236: サーブレット SpringApplication の Servlet.service() が例外をスローしました: java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) [rt.jar:1.8.0_31] at java .util.ArrayList$Itr.next(ArrayList.java:851) [rt.jar:1.8.0_31] 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.com.sun.xml の com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:340) の sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593)。 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) at org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter.writeToResult(Jaxb2RootElementHttpMessageConverter.java:181) [spring-web-4.1.7.RELEASE.jar:4.1.7. RELEASE] at org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java:66) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] at 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] at 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] at 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] at 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 コード内で発生します。