At a customer’s site, we experienced messages being delivered twice; one on every node of the OSB cluster.
This is what we found in the logs:
<Error> <WliSbTransports> <BEA-381304> <Exception in HttpTransportServlet.service: java.io.IOException: java.net.SocketException: Broken pipe java.io.IOException: java.net.SocketException: Broken pipe at com.bea.wli.sb.transports.http.ResourceRequestProcessor.securedInvoke(ResourceRequestProcessor.java:95)
The solution is straightforward: disable the setting “Use Chunked Streaming Mode” on the business service. It’s part of the HTTP Transport Configuration in the Configuration Details.
Note that the Oracle documentation  discourages use of this settings in specific cases, so check if these apply to your configuration:“Note: Do not use chunked streaming with if you use the Follow HTTP Redirects option. Redirection and authentication cannot be handled automatically in chunked mode.”
The reason the message is delivered twice, is probably because the first transaction fails and is rolled back, but the message is already sent.