My first approach was to have a look at my webservice SU's and see if I use some timeout values in there for the sending. I didn't find something like this, so I switched to DEBUG log level and gave it another try.
Testing gave me some important facts. The timeout always occured after about 60 seconds, so this seems to be some predefined value and at the time when the client returns there was absolute nothing going on inside the bus, so the cause shouldn't be the ServiceMix itself.
The client seems to be the cause of that behaviour. After doing some searching at Google I found other people ran into this problem as well (as expected). This behaviour is the result of a preset 60 seconds timeout inside the http transport of the client (at least I understood it like this). I saw several suggestions how to solve this but I wasn't able to get it running.
So I gave the cxf irc channel a try and found someone who helped me out with that. Dan Kulp pointed me to the right solution.
It's just about to add a HTTPConduit object with a HTTPClientPolicy. Inside that policy you can configure for example the time out behaviour.
Here is my example code:
MyWebService service = new MyWebService(); MyWebServicePortType client = service.MyWebServicePort(); Client cl = ClientProxy.getClient(client); HTTPConduit http = (HTTPConduit) cl.getConduit(); HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); httpClientPolicy.setConnectionTimeout(0); httpClientPolicy.setReceiveTimeout(0); http.setClient(httpClientPolicy); client.doSomething(...);
Setting the connection timeout and the receive timeout to zero means to wait infinitely having no timeout at all.
So finally I got the problem solved and again many thanks to Dan for helping me out that fast.