Bonjour,

voici mon problème:
j'obtiens une erreur de type "java.net.SocketException: Broken pipe" sur une application serveur client.(stacktrace ci après)

Le serveur renvoie au client des objets plus ou moins volumineux (quelques 100aines de Ko jusqu'a 10Mo).
Le truc c'est que cela fonctionne sans problème lorsque l'application tourne sur le réseau local de l'entreprise.
Ca fonctionne également lorsqu'on contacte le serveur via un VPN.

Par contre j'obtiens l'erreur des que le serveur applicatif est déployé chez notre hébergeur ET que la taille des données dépasse les 6Mo !!!

L'application utilise le framework hibernate, C3P0 pour le pool de connexion et le serveur applicatif est un Tomcat 5.5
La configuration du tomcat est identique en locale et sur le serveur distant ainsi que la configuration du C3P0 (même timeout, max_size etc)
La seule différence est que, sur le serveur distant, un apache se trouve en frontal du tomcat (mod_jk) et qu'en local le serveur tourne sous Windows alors qu'en distant c'est un serveur linux (debian)


J'ai Googlé pas mal le sujet et les causes énumérées sont :
fermeture de la connexion par le client (mais j'aurai le problème à chaque fois non ?)
problème due au mod_jk
configuration du timeout du c3p0 (mais à configuration identique je n'ai pas le problème en local)

donc je ne sais plus trop où chercher : si vous avez des suggestions elles seront les bienvenues

merci

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
ClientAbortException:  java.net.SocketException: Broken pipe
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
	at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:161)
	at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:118)
	at java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:72)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
	at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1685)
	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1594)
	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1173)
	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1127)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
	at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1398)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:305)
	at com.aureus_pharma.aurquest.profiler.ProfilerServlet.doPost(ProfilerServlet.java)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at com.aureus_pharma.aurquest.SecurityFilter.doFilter(SecurityFilter.java)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:531)
	at org.apache.jk.common.JkInputStream.doWrite(JkInputStream.java:147)
	at org.apache.coyote.Response.doWrite(Response.java:559)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
	... 39 more
Sep 22, 2008 12:09:42 PM org.apache.jk.core.MsgContext action
WARNING: Error sending end packet
java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:531)
	at org.apache.jk.common.JkInputStream.endMessage(JkInputStream.java:112)
	at org.apache.jk.core.MsgContext.action(MsgContext.java:293)
	at org.apache.coyote.Response.action(Response.java:182)
	at org.apache.coyote.Response.finish(Response.java:304)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:204)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Sep 22, 2008 12:09:42 PM org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2