Nếu bạn đang cố gắng để ngăn chặn một yêu cầu từ chạy quá lâu, sau đó thiết lập một thời gian chờ trong Tomcat sẽ không giúp bạn. Như Chris nói, bạn có thể đặt giá trị thời gian chờ toàn cầu cho Tomcat. Tuy nhiên, từ The Apache Tomcat Connector - Generic HowTo Timeouts, hãy xem phần Thời gian chờ trả lời:
JK cũng có thể sử dụng hết thời gian chờ trả lời yêu cầu. Thời gian chờ này không đo thời gian xử lý đầy đủ của phản hồi. Thay vào đó nó kiểm soát, cần bao nhiêu thời gian giữa các gói phản hồi liên tiếp.
Trong hầu hết các trường hợp, đây thực sự là điều bạn thực sự muốn. Hãy xem xét ví dụ: tải xuống đang chạy dài. Bạn sẽ không thể đặt hiệu lực thời gian trả lời toàn cầu là vì tải xuống có thể kéo dài trong nhiều phút. Hầu hết các ứng dụng mặc dù có thời gian xử lý giới hạn trước khi bắt đầu để trả lại phản hồi. Đối với những ứng dụng đó, bạn có thể đặt thời gian chờ trả lời rõ ràng là . Các ứng dụng không hài hòa với trả lời thời gian chờ là các ứng dụng loại hàng loạt, kho dữ liệu và báo cáo ứng dụng được dự kiến sẽ quan sát thời gian xử lý dài.
Nếu JK hủy chờ phản hồi, vì thời gian chờ trả lời được kích hoạt, không có cách nào để dừng xử lý trên chương trình phụ trợ. Mặc dù bạn miễn phí tài nguyên xử lý trong máy chủ web của mình, yêu cầu sẽ tiếp tục đến chạy trên chương trình phụ trợ - mà không có cách nào để gửi lại kết quả sau khi hết thời gian chờ trả lời .
Vì vậy, Tomcat sẽ phát hiện rằng servlet đã không trả lời trong thời gian chờ và sẽ gửi lại một phản ứng cho người dùng, nhưng sẽ không dừng lại thread chạy. Tôi không nghĩ rằng bạn có thể đạt được những gì bạn muốn làm.
Nguồn
2011-09-14 15:26:12
Bạn đang sử dụng 'Socket' và 'ServerSocket'? bởi vì nếu bạn đang có, bạn có thể đặt thời gian chờ ở đó bằng phương thức 'SetSoTimeout'. –
Chỉ cần đồng bằng tomcat –
@Eran, anh ấy đang phát triển ứng dụng web. Anh ta không thể acess socket máy chủ được mở bởi Tomcat. – AlexR