On 7/8/11 6:34 PM, xuhb wrote:
Recently I always encounter a "Unexpected end of file from server" Exception at
CXF client side. it seems this exception is caused by the CXF Serverside has unexcepted
release the http connection ;
I tried some effort to to use a simple test case to regenerate such a
exception; Following is a simple test case which will cause such a exception.
keypoint of the test case:
1)MTOM enabled;
2)Using Jetty-Transport at serverside, and using SUN JDK's http client at
client side;
3)the service logical is simple: first consume all attachment and close it;
then wait for a long time (about 10 miniutes);
In practice, there is no such a service which will block for so long time, but
in the simple test case, I must use such a long time to force such a exception
occurs;
What kinds of response does your client expect?
4)set the client side 's receiveTime to a infinite time(almost) to avoid receive time out
exception. then the client will block to wait service , but after about 7 minutes a
""Unexpected end of file from server" Exception will raised at client side;
Other key points I have tried:
1)At first I guess maybe this is the jetty-server's problem: I guess it will
release connection silently while the servlet-handler execute too long time;
But unfortunately it 's not so .
Because I tried another simple test case, which doesnt generate such a
exception . The only difference is: there is no attachment in xml data; Also
the service will wait a very long time( 10minutes, 20minutes I have tried) .
And the client will blocking util service returned;
Did you have a chance to catch the under layer TCP transport between the
server and client. It's easy to tell the difference of your two test
case if you catch the packages between the client and server.
Ps: the stack of the Exception is :
org.apache.cxf.interceptor.Fault: Could not send Message.
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
...
Caused by: java.net.SocketException: SocketException invoking
http://localhost:9000/service/moreattachmentsrpcliteral: Unexpected end of file
from server
...
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1385)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1370)
...
Caused by: java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:763)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:626)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:760)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:626)
at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:983)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:367)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1490)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1448)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1356)
... 35 more
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang