jsonrpc4j
jsonrpc4j copied to clipboard
StreamServer connection reset exception when client closes
I use StreamServer with JsonRpcServer at server side. When the client closes the connection, I got unnecessary errors at server side:
18:02:21.148 [pool-1-thread-5] ERROR c.googlecode.jsonrpc4j.StreamServer - Exception while handling request
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210) ~[na:1.8.0_141]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_141]
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_141]
at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_141]
at com.googlecode.jsonrpc4j.NoCloseInputStream.read(NoCloseInputStream.java:21) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.ReadContext.assertReadable(ReadContext.java:31) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:238) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.StreamServer$Server.run(StreamServer.java:247) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_141]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
18:02:21.149 [pool-1-thread-5] ERROR c.googlecode.jsonrpc4j.StreamServer - Exception while handling request
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:154) ~[na:1.8.0_141]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_141]
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_141]
at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_141]
at com.googlecode.jsonrpc4j.NoCloseInputStream.read(NoCloseInputStream.java:21) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.ReadContext.assertReadable(ReadContext.java:31) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:238) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.StreamServer$Server.run(StreamServer.java:247) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_141]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
18:02:21.149 [pool-1-thread-5] ERROR c.googlecode.jsonrpc4j.StreamServer - Exception while handling request
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:154) ~[na:1.8.0_141]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_141]
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_141]
at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_141]
at com.googlecode.jsonrpc4j.NoCloseInputStream.read(NoCloseInputStream.java:21) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.ReadContext.assertReadable(ReadContext.java:31) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:238) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.StreamServer$Server.run(StreamServer.java:247) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_141]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
18:02:21.149 [pool-1-thread-5] ERROR c.googlecode.jsonrpc4j.StreamServer - Exception while handling request
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:154) ~[na:1.8.0_141]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_141]
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_141]
at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_141]
at com.googlecode.jsonrpc4j.NoCloseInputStream.read(NoCloseInputStream.java:21) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.ReadContext.assertReadable(ReadContext.java:31) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:238) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.StreamServer$Server.run(StreamServer.java:247) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_141]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
18:02:21.149 [pool-1-thread-5] ERROR c.googlecode.jsonrpc4j.StreamServer - Closing client connection due to repeated errors
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:154) ~[na:1.8.0_141]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_141]
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_141]
at java.io.BufferedInputStream.read(BufferedInputStream.java:265) ~[na:1.8.0_141]
at com.googlecode.jsonrpc4j.NoCloseInputStream.read(NoCloseInputStream.java:21) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.ReadContext.assertReadable(ReadContext.java:31) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:238) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at com.googlecode.jsonrpc4j.StreamServer$Server.run(StreamServer.java:247) ~[jsonrpc4j-1.5.3.jar:1.5.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_141]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_141]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_141]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_141]
This is how the client side uses/closes the RPC service:
JsonRpcClient client=new JsonRpcClient();
try (Socket socket = new Socket(server,port))
{
MyService remoteService=ProxyUtil.createClientProxy(getClass().getClassLoader(), MyService.class,
client,socket);
return remoteService.someMethod();
}
Is there anything wrong with it?