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

Reply via email to