Are you sure the server is not closing the socket?
We only close the socket after a receipt if single-use="true", but it's false in your config.
How long is the socket_timeout property? In this configuration we don't assume a command/response scenario; the two adapters are independent users of the connection. The timeout will apply on the receiver, regardless of whether something is writing to the socket; it's not like we start a clock when you send a message on the outbound adapter. We will close the socket after a timeout so you need to set the timeout large enough to span the expected time between requests.
Take a look at a debug log, you should see who's closing the socket.
Gary P. Russell
Spring Integration Team
SpringSource, a division of VMware