If you're only seeing 3 requests, then you have a firewall or network blocking some of them. You may find this FAQ helpful:
@shred While I've been bugging you on the forum anyway, can you give a hand here with how to get the error message from the ACME server when the challenge fails?
You can use challenge.getError() to get the problem message from the server (if there is one). Its toString() method should then give all the necessary details as a String in a logable fashion.
If you catch an AcmeServerException, you can also invoke getProblem() there and see the details of the problem.