Tôi có một ứng dụng có kiến trúc máy chủ khách. Máy khách sử dụng Java Web Start với Java Swing/AWT và sert sử dụng máy chủ HTTP/Servlet với Tomcat. Giao tiếp được thực hiện từ việc tuần tự hóa các đối tượng, tạo một đối tượng ObjectOutput tuần tự hóa một mảng byte và gửi đến máy chủ tương ứng được gọi là ObjectInputStream và deserializes.java.net.SocketTimeoutException: Đọc hết thời gian
Ứng dụng sau giao tiếp chính xác với một số thời gian nhất định khi bắt đầu hiển thị lỗi "SocketException read timeout". Các erro xảy ra khi máy chủ gọi phương thức ObjectInputStream.getObject() trong phương thức doPost servlet của tôi.
Tomcat sẽ chạy chậm và các lỗi bắt đầu giảm thời gian phản hồi của máy chủ cho đến thời gian xảy ra sự cố khi tôi phải khởi động lại máy chủ và sau khi mọi thứ hoạt động.
Ai đó đã gặp phải vấn đề này?
Mã khách hàng
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();
Máy chủ Mã
ObjectInputStream input = new ObjectInputStream(_request.getInputStream());
String method = input.readUTF();
parameters = input.readObject();
input.readObject() là nơi mà các lỗi là
Bạn có thể đăng một số mã không? – Enrique
Đó là tham số linux tcp? Giống như kích thước bộ nhớ đệm, tệp mở tối đa hoặc tệp khác? –
Lượng thời gian trôi qua trước SocketException 20 phút hoặc lâu hơn? (nếu tôi nhớ lại khoảng thời gian tiêu chuẩn, một ổ cắm tcp/ip sẽ đợi trước khi hết thời gian nếu không có hoạt động kết nối)? Sau khi tất cả các ngoại lệ là nói cho bạn "read timeout" cũng có thể điều này có cái gì để làm với bản chất không đồng bộ của web? – Wintermut3