我有一个具有客户端服务器体系结构的应用程序。客户端
将Java Web Start与Java Swing / AWT一起使用,而sert将HTTP服务器/ Servlet与
雄猫
通信是通过对象的序列化进行的,创建一个
ObjectOutput序列化字节数组并发送到服务器
分别称为ObjectInputStream并反序列化。
应用程序正确地与某人进行通信
并发时间开始显示错误
“SocketException读取超时”。服务器调用该方法时发生错误
我的servlet doPost方法中的ObjectInputStream.getObject()。
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()是错误所在
最佳答案
您没有给我们提供太多信息,尤其是有关客户端的信息。但是我怀疑客户端是:
神秘。
根据您更新的问题,以上都不是。这还有其他几种可能性:
另一个可能的解释是您存在内存泄漏,并且速度下降是由GC耗尽内存所花费的时间越来越多所引起的。如果启用它们,它将显示在GC日志中。