ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tammo van Lessen <tvanles...@gmail.com>
Subject Re: TimeOut-Problem?
Date Fri, 20 Aug 2010 12:07:56 GMT
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, Frutz@gmx.net 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 org.apache.ode.bpel.epr.WSAEndpoint@7dabd5.Vereinen(...)
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 org.apache.ode.bpel.epr.WSAEndpoint@7dabd5.Vereinen(...)
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 org.apache.ode.bpel.epr.WSAEndpoint@7dabd5.Vereinen(...) 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$ResponseFuture@119461d
timed out(120000 ms) when waiting for a response!
> java.util.concurrent.TimeoutException: Message exchange org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl$ResponseFuture@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

Mime
View raw message