RestTemplate interface does not allow RequestBody with DELETE request.
To achieve this functionality, I am using exchange method but it does not work.
Can someone help me? I have tried with same with PUT action and it works fine.

Here's what I doing:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON) ;
headers.set("Accept", "application/json");
Object obj = new DemoObject();
HttpEntity<Object> entity = new HttpEntity<Object>(obj, headers);
ResponseEntity<?> response = exchange(URL, HttpMethod.DELETE, entity , null);


On the server side, using Spring MVC, method signature is following:

@RequestMapping(method = RequestMethod.DELETE , value = "/api/system/{id}")
public void removeSystem(@PathVariable("id") String id, @RequestBody DemoObject obj)
{
...
}


On the server side, it throws the exception:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.coyote.http11.InternalInputBuffer.fill( InternalInputBuffer.java:528)
at org.apache.coyote.http11.InternalInputBuffer.fill( InternalInputBuffer.java:497)
at org.apache.coyote.http11.InternalInputBuffer$Input StreamInputBuffer.doRead(InternalInputBuffer.java: 559)
at org.apache.coyote.http11.filters.IdentityInputFilt er.doRead(IdentityInputFilter.java:118)
at org.apache.coyote.http11.AbstractInputBuffer.doRea d(AbstractInputBuffer.java:326)
at org.apache.coyote.Request.doRead(Request.java:422)
at org.apache.catalina.connector.InputBuffer.realRead Bytes(InputBuffer.java:287)
at org.apache.tomcat.util.buf.ByteChunk.substract(Byt eChunk.java:407)
at org.apache.catalina.connector.InputBuffer.read(Inp utBuffer.java:310)
at org.apache.catalina.connector.CoyoteInputStream.re ad(CoyoteInputStream.java:202)
at org.codehaus.jackson.impl.ByteSourceBootstrapper.e nsureLoaded(ByteSourceBootstrapper.java:499)
at org.codehaus.jackson.impl.ByteSourceBootstrapper.d etectEncoding(ByteSourceBootstrapper.java:129)
at org.codehaus.jackson.impl.ByteSourceBootstrapper.c onstructParser(ByteSourceBootstrapper.java:216)
at org.codehaus.jackson.JsonFactory._createJsonParser (JsonFactory.java:785)
at org.codehaus.jackson.JsonFactory.createJsonParser( JsonFactory.java:561)
at org.codehaus.jackson.map.ObjectMapper.readValue(Ob jectMapper.java:1651)
at org.springframework.http.converter.json.MappingJac ksonHttpMessageConverter.readInternal(MappingJacks onHttpMessageConverter.java:136)
at org.springframework.http.converter.AbstractHttpMes sageConverter.read(AbstractHttpMessageConverter.ja va:154)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.readWithMessageConverters(Handl erMethodInvoker.java:633)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.resolveRequestBody(HandlerMetho dInvoker.java:597)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.resolveHandlerArguments(Handler MethodInvoker.java:346)
at org.springframework.web.bind.annotation.support.Ha ndlerMethodInvoker.invokeHandlerMethod(HandlerMeth odInvoker.java:171)
at org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter.invokeHandlerMethod(An notationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter.handle(AnnotationMetho dHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:863)
at org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:792)
at org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.d oDelete(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:722)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(A ccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.p rocess(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnect ionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProce ssor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.run Task(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (Unknown Source)
at java.lang.Thread.run(Unknown Source)