【发布时间】:2011-01-29 17:07:54
【问题描述】:
我有一个具有客户端服务器架构的应用程序。客户端 使用 Java Web Start 和 Java Swing / AWT 并且 sert 使用 HTTP 服务器 / Servlet 雄猫。 通信是通过对象的序列化进行的,创建一个 ObjectOutput 序列化一个字节数组并发送到服务器 分别调用 ObjectInputStream 和反序列化。
应用程序遵循正确通信到某个 开始显示错误的并发时间 “SocketException 读取超时”。服务器调用方法时发生错误 ObjectInputStream.getObject() 在我的 servlet doPost 方法中。
tomcat 会变慢并且错误开始减少服务器响应时间,直到崩溃时间我必须重新启动服务器并且一切正常之后。
有人遇到过这个问题吗?
客户代码
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
ObjectOutputStream oss = new ObjectOutputStream(os);
oss.writeUTF("protocol header sample");
oss.writeObject(_parameters);
oss.flush();
oss.close();
服务器代码
ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();
parameters = input.readObject();
input.readObject() 是错误所在
【问题讨论】:
-
在 SocketException 之前经过的时间量是 20 分钟还是更长? (如果我记得如果没有连接活动,tcp/ip 套接字将在超时之前等待的标准时间)?毕竟异常告诉你“读取超时”也可能与网络的异步性质有关?
-
是tcp linux参数?像缓冲区内存大小、最大打开文件或其他?
标签: java tomcat sockets socketexception objectinputstream