I have written the following, which does the trick and consistently generate at least one broken pipe exception when it hits the passed URL.
private static void pipeBreaker(final URL url) {
for (int i = 0; i < 50; i++) {
try {
final HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
connection.setReadTimeout(1);
connection.setDoOutput(false);
connection.setDoInput(true);
connection.setRequestMethod("GET");
connection.connect();
connection.getInputStream().read();
} catch (final Exception e) {
// ignore
}
}
}
All this code does is give the server the impression it is going to drain the response, but times out very quickly and does this in a repeated manner.
That is how I break my pipes. Now, how do you break yours? Do you have a better way?