Bonjour,

J'utilise l'API "SAP BusinessObjects Business Intelligence platform" qui me permet d'interroger un serveur Business Object afin de récupérer des rapports PDF.

J'ai une erreur de timeout, au bout de 30 secondes, lorsque j'essaye de charger un rapport un peu lourd :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
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 com.businessobjects.dsws.reportengine.ReportEngine.getDocumentInformation(Unknown Source)
   at fr.laposte.intra.dsicorp.mars.controller.InviteController.chargerRapport(InviteController.java:434)
   at fr.laposte.intra.dsicorp.mars.controller.InviteController.getReportFileFromReport(InviteController.java:662)
   at fr.laposte.intra.dsicorp.mars.controller.InviteController.doPost(InviteController.java:540)
   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:103)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
   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:77)
   at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
   at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
   at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1373)
   at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
   at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
   at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
   at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
   at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
   at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
   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)
   ... 25 more
Après avoir chercher longtemps, j'ai dajà trouvé plusieurs paramètres lié au timeout côté serveur (BO), dans le fichier Axis2.xml. J'ai donc augmenté leur valeur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<parameter name="SO_TIMEOUT" locked="false">300000</parameter>
 
<parameter name="requestTimeout">300000</parameter>
Malheureusement cela ne résout pas mon problème. J'ai une piste de paramétrage côté client, mais à chaque fois je tombe sur ce bout de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
_monStubClient.getOptions().setTimeOutInMilliSeconds(timeOutInSecond * 1000)
Le souci c'est que je ne sais pas ce qu'est "_monStubClient". Passant par l'API Business Intelligence, la couche Axis est masquée.

Quelqu'un a-t-il une solution ?

Merci d'avance

Dany