Hi André, I have no clue what a GML or a WFS is, but it looks like you are facing a common conceptual problem with BPEL/Web services.
One of the basic assumptions of web services is, that you are exchanging messages. These messages can be combined to an operation with a certain message exchange pattern. In most of the cases this is request-response to emulate a method invocation that takes an input parameter and returns an output parameter. This is defined in the abstract part of WSDL. In the concrete part these interfaces (aka portTypes) are bound to a transport protocol. And that's the crux of the matter. If you have a rather long-running operation, you can easily bind it to an asynchronous transport protocol like JMS, XMPP, etc. But if you bind it to a synchronous protocol like HTTP, chances are very high that you run into timeouts. Of course you could increase the timeout setting of the transports, but this is actually against the paradigm, because a synchronous protocol is synchronous for a good reason. Long story short: The conceptually sound way would be either using an asynchronous transport or remodelling your webservice make the invocation asynchronous at the implementation level, i.e. implementing a one-way operation to receive the request and then calling back the bpel process that again provides a one-way operation to receive the result of the computation. You can use BPEL correlation to address the response to the correct process instance. If you, for whatever reason, still want to relax the http timeout setting, please see here: http://ode.apache.org/endpoint-configuration.html. HTTP sessions are a different concept. HTH, Tammo On 19.08.2010 17:11, [email protected] wrote: > Hello, > > I'm not really sure if this is the right forum for my question but maybe > someone knows the answer. > > I orchestrated a service chain in which I download two GML from two different > WFS transform them and put them with another transformation together so I get > as a final result one GML which is saved on a Server. > > My problem is, that the two transformed GML are quite huge (11 and 12 MB) and > before I put them together I also do some work on it. All in all the complete > chain could last about two minutes and a bit. > > To generate the SOAP request for the chain I use AltovaXMLSpy (and I also > tried it with an PHP script) but both of them are not able to handle it > correct and stop. > > But the chain gets fully completed after the two minutes and I got my final > GML. So I suppose it is a problem with the "Client" but I'm not really sure > because I got an error in the log-File. > > At the end I post the whole log file. I hope that's OK. > > In the log there is a line which says: "Read timed out". So I think it is > really a time out problem. > > In the web.xml my Time Parameter is: > <session-config> > <session-timeout>60</session-timeout> > </session-config> > I think 60 minutes are enough. > > At the Conector-Settings in the server.xml I tried > connectionTimeout="80000" which was "20000" before, so I hope this is enough > also. > > Is it a time problem? Or is there another fault? I hope someone could give me > a hint. > > > > Thanks in advance, > Regards, > André > > Th Log-File: > > [LOG] > 17:02:23,395 ERROR [ExternalService] Error sending message > (mex={PartnerRoleMex#hqejbhcnphr5ixxlppu5g5 [PID > {DK_Trafo0819}DK_Trafo0819_Process-10] calling > [email protected](...) Status ASYNC}): Read > timed out > org.apache.axis2.AxisFault: Read timed out > at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417) > at > org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:195) > at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77) > at > org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327) > at > org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396) > at > org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374) > at > org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211) > at > org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) > at > org.apache.ode.axis2.SoapExternalService$1$1.call(SoapExternalService.java:206) > at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) > at java.util.concurrent.FutureTask.run(Unknown Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown > Source) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > at java.lang.Thread.run(Unknown Source) > Caused by: java.net.SocketTimeoutException: Read timed out > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(Unknown Source) > at java.io.BufferedInputStream.fill(Unknown Source) > at java.io.BufferedInputStream.read(Unknown Source) > at > org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) > at > org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106) > at > org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116) > at > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413) > at > org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973) > at > org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735) > at > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098) > at > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) > at > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) > at > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) > at > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) > at > org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:520) > at > org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:191) > ... 13 more > 17:02:23,426 ERROR [INVOKE] Failure during invoke: Error sending message > (mex={PartnerRoleMex#hqejbhcnphr5ixxlppu5g5 [PID > {DK_Trafo0819}DK_Trafo0819_Process-10] calling > [email protected](...) Status ASYNC}): Read > timed out > 17:02:23,426 INFO [BpelRuntimeContextImpl] ActivityRecovery: Registering > activity 41, failure reason: Error sending message > (mex={PartnerRoleMex#hqejbhcnphr5ixxlppu5g5 [PID > {DK_Trafo0819}DK_Trafo0819_Process-10] calling > [email protected](...) Status ASYNC}): Read > timed out on channel 74 > 17:03:15,831 ERROR [ODEService] Timeout or execution error when waiting for > response to MEX {MyRoleMex#hqejbhcnphr5ixxlppu5fi [Client > hqejbhcnphr5ixxlppu5fh] calling {DK_Trafo0819}DK_Trafo0819.process(...)} > java.util.concurrent.TimeoutException: Message exchange > org.apache.ode.bpel.engine.myrolemessageexchangeimpl$responsefut...@119461d > timed out(120000 ms) when waiting for a response! > java.util.concurrent.TimeoutException: Message exchange > org.apache.ode.bpel.engine.myrolemessageexchangeimpl$responsefut...@119461d > timed out(120000 ms) when waiting for a response! > at > org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl$ResponseFuture.get(MyRoleMessageExchangeImpl.java:245) > at > org.apache.ode.axis2.ODEService.onAxisMessageExchange(ODEService.java:161) > at > org.apache.ode.axis2.hooks.ODEMessageReceiver.invokeBusinessLogic(ODEMessageReceiver.java:69) > at > org.apache.ode.axis2.hooks.ODEMessageReceiver.invokeBusinessLogic(ODEMessageReceiver.java:52) > at > org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145) > at > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) > at > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) > at java.lang.Thread.run(Unknown Source) > [LOG] > -- Tammo van Lessen - http://www.taval.de
