2013-02-14 26 views
60

Tôi đang sử dụng ứng dụng quản lý trong tomcat 7, và tôi không thể hủy hoàn toàn ứng dụng.Không thể hoàn tác ứng dụng web hoàn toàn trong Tomcat 7

Nó nói FAIL - Unable to delete [F:\apache-tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems.

Tôi đọc ở đâu đó của mình vì một số hiện tượng được gọi là bộ nhớ bị rò rỉ, và nếu chúng ta sửa chữa nó vấn đề này sẽ được giải quyết.

Bất cứ ai có thể cho tôi biết rò rỉ bộ nhớ này trong tomcat 7 là gì và chúng tôi có thể khắc phục nó như thế nào ?? Tôi đang sử dụng hệ điều hành Windows 7. Nếu tôi có thể khắc phục nó, quy trình triển khai và triển khai lại của tôi có chạy trơn tru không?

Trả lời

110

này là rất phổ biến trong môi trường Windows nhưng có một giải pháp:

mở context.xml từ/tomcat/conf thư mục và thay đổi bối cảnh để phù hợp với điều này:

<Context antiResourceLocking="true"> 

Chỉnh sửa: Đã cập nhật các thuộc tính sau @JanM nhận xét. Trước đây, nó cũng chứa 'antiJARLocking'

+0

Cảm ơn giải pháp, Hoạt động tốt ..! – bali208

+0

Nó chỉ xảy ra trong Windows? Tomcat dựa trên Java, và tôi thấy các vấn đề tương tự trên Ubuntu với Tomcat. – icedwater

+1

Tôi chỉ nói điều đó là phổ biến đối với Windows, ít nhất đó là trường hợp của tôi và những người tôi biết. Nó rất có thể là trường hợp tương tự cho Ubuntu. – mvlupan

13

Đây là một trong những vấn đề phổ biến với tomcat. Tomcat server bắt giữ các tài nguyên khi khởi động và triển khai nó. Trong khi không triển khai, một số tài nguyên vẫn sẽ được sử dụng bởi tomcat. Nó sẽ chưa được phát hành tài nguyên, nhưng đồng thời, một thread trong tomcat sẽ cố gắng dọn dẹp các tài nguyên tương tự. Do đó, việc xóa các tài nguyên đó sẽ thất bại. Cách tốt nhất là dọn sạch thư mục gốc của ứng dụng trong webapps theo cách thủ công.

+1

Điều này không phải lúc nào cũng hoạt động. Nếu tệp jar bị khóa, bạn không thể xóa (các) thư mục gốc. Dừng ứng dụng không phải lúc nào cũng miễn phí cái bình đó. Buộc khởi động lại Tomcat. – cbmeeks

0

Tôi đã gặp vấn đề tương tự trong Apache Tomcat/8.0.5. Tôi đã làm các bước sau bằng cách sử dụng ứng dụng quản lý và nó đã làm việc cho tôi.

  • Đóng trình duyệt bao gồm tất cả các tab (để xóa bộ nhớ cache).
  • Mở lại 'Ứng dụng quản lý' và trước tiên hãy đảm bảo rằng ứng dụng bị dừng (nút khởi động phải được bật).
  • Bây giờ hãy nhấp vào undeploy.

Tôi nghĩ khi chúng tôi trực tiếp bấm vào undeploy, đầu tiên nó khóa các lọ, dừng ứng dụng và cố gắng để undeploy nhưng không thành công với thông báo FAIL - Unable to delete.

Nếu bạn thực sự nhầm lẫn với trạng thái, hãy đóng trình duyệt, khởi động lại tomcat, mở 'Trình quản lý ứng dụng', nhấp vào dừng và sau đó hủy triển khai.

0

antiResourceLocking:
Nếu đúng, Tomcat sẽ ngăn chặn mọi tệp bị khóa. Điều này sẽ ảnh hưởng đáng kể đến thời gian khởi động của các ứng dụng, nhưng cho phép triển khai đầy đủ ứng dụng webapp và undeploy trên nền tảng hoặc cấu hình nơi khóa tập tin có thể xảy ra. Nếu không được chỉ định, giá trị mặc định là sai.

Xin lưu ý rằng thiết lập này là true có một số tác dụng phụ, trong đó có việc vô hiệu hoá JSP tải lại trong một máy chủ đang chạy: xem Bugzilla 37668.

Xin lưu ý rằng thiết lập cờ này là true trong các ứng dụng nằm ngoài appBase đối với Máy chủ (thư mục webapps theo mặc định) sẽ khiến ứng dụng bị xóa khi tắt Tomcat.Bạn có thể không muốn làm điều này, vì vậy hãy suy nghĩ kỹ trước khi thiết lập antiResourceLocking = true trên một ứng dụng web nằm ngoài appBase cho Máy chủ của nó.

Các vấn đề liên quan