hmm, sorry, I see. You can use a filter as you're already using, maybe even add a separate ResponseFilter capturing all actual responses (see for instance Logging request and response in one place with JAX-RS) sent from your side which could be said to prove exactly that. Proving they actually recieve your responses is quite different; if the customer is accessing your API programmatically, there is no other way then getting grips on their transport logging, or, make a customer visit and help them set it up : you do have the common interest of solving this, right? It they just browse your API then.. I dunno, the former is your only option?
- just some more comments, following your comment:
yep, as I said, the filter, even if working, will not say anything regarding the actual delivery of your responses. for example, I'm currently sometimes thrown into this thing now and then where we have über restricted point-to-point access over VPN with SSL-verification both ways, heavy firewalling on both sides and then, on the way in, there are a number of proxies between us and our destination. in most cases, we act as clients and it has happened many times that our fw has had some kind of problem or some of our proxies have been misconfigured or down or the SSL-certs are out of date or just.. network issues on our side. in these cases the remote server has no way of telling anything went wrong, they just respond - it is you, the client, who has the problems and it is on your side errors will popup whenever you cannot read responses. so.. there is not really any point avoiding the obvious here I guess, first thing you do is ask them well, "how did you notice there was no response"? timeouts/socket closed? different type of errors usually indicate the domain from where it arose. then you just follow the trace and you will find the point of termination. however, in your case it seems to happen.. "sometimes" rather then your network toggling "off" - then I would, if the error logs they sent me didn't tell me exactly what was going on, ask the customer what their client is actually doing. would it be possible that they connect single-thread and another request is issued before the current response is read? stranger things (and more horrid code) has been seen to execute, right? I think I'm just saying that you should focus not on your API, it probably works, focus on the actual client which, in contrast to your server, should do two things instead of just one.