my first GWT app is in production phase! :)
Everything seems to work perfectly except for old browsers (like IE5)
but we decided to go on anyway.
However, being running for a couple of days (20k visits/day) I am
noticing these two strange exceptions:
Exception while dispatching incoming RPC call
javax.servlet.ServletException: Client did not send 125 bytes as
expected
and:
Exception while dispatching incoming RPC call
java.net.SocketTimeoutException: Read timed out
they happen every hour or so, it seems they are not related to each
other and unfortunately I can't see a way to debug since they never
happened in testing machines.
Is there a way to understand what is rising these exceptions?
Any help appreciated
Thanks
Edoardo
PS: I can post the full stacklog if needed
IE versions below IE 6 have basically no javascript support. GWT will
never run on it, ever. It's an annoyance, but given GWT's structure,
inevitable. No one has IE 5 except Windows NT users, who cannot run
IE6 (or 7). You can build a (javascript, heh - you'll have to write
IE5 specific gimpy javascript, it can be done) method that will be
called by GWT (I forgot how, though) if no compatible browser is
detected. You could then display something along the lines of: Hey,
this isn't gonna work, but you're in luck: Both Opera and FireFox are
free and -do- run on Windows NT, and we do support those browsers.
On Apr 29, 2:38 pm, "Rob Coops" <rco...@gmail.com> wrote:
> It of course always helps to see the full log as that usualy contains a lot
> more info about what is going on and where...
>
> I would guess (and this is no more then that).
> The two errors both mention incomming RPC calls and both mention a lack of
> comunication from the source (one not enough information) the other no
> response... I would start looking in the direction of latency errors,
> packetloss or users leaving the site shortly after initiating a RPC call.
>
> The one thing a lot of test cases in a test environment do not check for is
> how a system reacts when the network is busy, for the simple reason that
> this is not easy to emulate a real world situation. Though I would start
> looking in that direction if I where you.
>
> Regards,
>
> Rob
>
29/04 23:48:07 user Exception while dispatching incoming RPC call
javax.servlet.ServletException: Client did not send 125 bytes as
expected
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.readPayloadAsUtf8(RemoteServiceServlet.java:
582)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:
162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
853)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at
jrunx.util.DynamicClassLoaderFilter.doFilter(DynamicClassLoaderFilter.java:
48)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.StandardSecurityFilter.doFilter(StandardSecurityFilter.java:
103)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.JSecurityCheckFilter.doFilter(JSecurityCheckFilter.java:
70)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:
249)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:
541)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:
204)
at jrunx.scheduler.ThreadPool
$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool
$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool
$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
29/04 15:40:27 user Exception while dispatching incoming RPC call
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:
277)
at
jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:581)
at
jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:573)
at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:
591)
at jrun.servlet.jrpp.JrppInputStream.read(JrppInputStream.java:
79)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:
277)
at jrun.servlet.ServletIn.read(ServletIn.java:49)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.readPayloadAsUtf8(RemoteServiceServlet.java:
580)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:
162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
853)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at
jrunx.util.DynamicClassLoaderFilter.doFilter(DynamicClassLoaderFilter.java:
48)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.StandardSecurityFilter.doFilter(StandardSecurityFilter.java:
103)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at
jrun.servlet.security.JSecurityCheckFilter.doFilter(JSecurityCheckFilter.java:
70)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:
249)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:
541)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:
204)
at jrunx.scheduler.ThreadPool
$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool
$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool
$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
java.lang.NullPointerException
at
jrun.servlet.jrpp.ProxyEndpoint.parseHeaders(ProxyEndpoint.java:855)
at
jrun.servlet.jrpp.ProxyEndpoint.readRequest(ProxyEndpoint.java:274)
at
jrun.servlet.jrpp.JRunProxyService.swapRunnable(JRunProxyService.java:
144)
at jrunx.scheduler.ThreadPool
$DownstreamMetrics.swapRunnable(ThreadPool.java:292)
at jrunx.scheduler.ThreadPool
$ThreadThrottle.swapRunnable(ThreadPool.java:410)
at jrunx.scheduler.ThreadPool
$UpstreamMetrics.swapRunnable(ThreadPool.java:252)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:76)
Congratulations, Eddy! 20k visits a day is no walk in the park!
--Reinier Zwitserloot