2011-11-02 2 views
28

Tôi có một ứng dụng đơn giản xin chào thế giới, tôi chỉ đang chơi xung quanh, và đẩy nó ra máy chủ tomcat của tôi trên VPS.Làm thế nào để dọn bộ nhớ cache của tomcat khi triển khai một tệp .war mới? Có cài đặt cấu hình không?

Khi tôi thực hiện thay đổi mã của mình và triển khai mã, tomcat không phục vụ mã mới được xuất bản (ngay cả sau khi bắt đầu lại dịch vụ).

Tôi ngừng dịch vụ, sau đó đẩy tệp chiến tranh mới vào/webapps/và tôi đảm bảo xóa thư mục đã phát hiện cũ.

Khi tôi khởi động lại máy chủ, máy chủ vẫn phục vụ mã cơ sở cũ hơn.

Có cài đặt trong cấu hình để dừng hành vi này không?

Ngoài ra, tôi sẽ phải xóa những thư mục nào? Xin được cụ thể (thư mục và đường dẫn) như tôi đã cố gắng xóa một số và havent 'nhận được bất cứ nơi nào.

+0

là tomcat trỏ đến cùng thư mục đến nơi bạn xuất bản tệp chiến tranh? Nếu bạn đã xóa các phiên bản phát nổ (tôi giả định thư mục công việc) và khởi động lại máy chủ, tôi không thể nghĩ làm thế nào tomcat sẽ nhận được quyền truy cập vào mã cũ. Vui lòng xem lại tệp server.xml của bạn chặt chẽ. – aishwarya

Trả lời

12

Bạn có thể xóa thư mục "cơ quan".

Bạn có chắc chắn đây không phải là vấn đề về bộ nhớ đệm của trình duyệt?

+0

vâng tôi chắc chắn, thậm chí tôi đã xóa thư mục công việc/catalini/localhost (hoặc một số thư mục như thế), nó đã gặp lại một vài lần để không phải tình cờ :) – Blankman

+0

Xóa nội dung trong thư mục tomcat sẽ không nhất thiết ảnh hưởng đến bộ nhớ cache của trình duyệt. –

+0

cũng là phiên bản mới đã được viết nhật ký cho một tập tin, và tôi đã thử firefox (đã sử dụng chome đầu tiên) – Blankman

0

Có vẻ như trình tải lớp của bạn không tải các lớp servlet sau khi chúng được cập nhật. Điều này có thể được khắc phục nếu bạn thay đổi tệp web.xml của bạn nên nhắc máy chủ/vùng chứa triển khai lại và tải lại các lớp servlet. Tôi đoán thêm một dòng trống ở cuối tệp web.xml của bạn và lưu nó rồi xem có khắc phục được không. Như tôi đã nói điều này có thể sửa chữa nó hoặc có thể không.

Chúc may mắn!

+0

Tuy nhiên, không nên tồn tại quá trình khởi động lại sau khi loại bỏ hoàn toàn phiên bản cũ hơn. –

+0

Hmm, vâng. Nó thường không nên nhưng giá trị một thử. – Mechkov

1

Dường như có vấn đề về dấu thời gian. Theo tài liệu tomcat, nếu có một jsp hoặc servlet mới, điều này sẽ tạo một tệp _java mới trong thư mục công việc, trừ khi các tệp _java.class mới hơn jsp hoặc servlet.

1

Tomcat cũng tạo một thư mục ROOT ở cùng cấp với work/. ROOT/ cũng lưu trữ nội dung cũ. xóa ROOT cùng với thư mục Catalina trong work.

4

Tôi muốn thêm rằng trong trường hợp hành vi thực sự kỳ lạ - nơi bạn dành một vài giờ để nói WTF - hãy thử thủ công xóa thư mục /webapps/yourwebapp/WEB-INF/classes. Tệp nguồn java đã được chuyển sang gói khác sẽ không bị xóa tệp lớp đã biên dịch của nó - ít nhất là trong trường hợp một ứng dụng web đã phát nổ trên TC. Điều này nghiêm trọng có thể khiến bạn phát điên với hành vi không thể đoán trước, đặc biệt là với một servlet được chú thích.

2

Một chút trễ cho đảng, dưới đây là cách tôi làm điều đó

  1. undeploy ứng dụng của huấn
  2. Shutdown tomcat sử dụng ./shutdown.sh
  3. Xóa bộ nhớ cache của trình duyệt
  4. Xóa các ứng dụng từ ứng dụng web, và từ /work/Catalina/...
  5. Khởi động tomcat sử dụng ./startup.sh
  6. Sao chép phiên bản mới của ứng dụng vào /webapps và bắt đầu.
0

Tôi có một thời gian tồi khi đặt tệp chiến tranh của mình tại /etc/tomcat7/webapps nhưng đường dẫn thực tế là /var/lib/tomcat7/webapps. Bạn có thể muốn sử dụng sudo find/-type f -name "my-war-file.war" để biết nó ở đâu.

Và xóa thư mục này /tmp/hsperfdata_*/tmp/tomcat7-tomcat7-tmp.

2

tôi gặp phải một số hành vi kỳ lạ mà không phản ánh cơ sở mã thực tế nên sau một thời gian cố gắng một số giải pháp, vấn đề của tôi đã được giải quyết bằng cách thủ công xóa tất cả mọi thứ dưới /var/cache/tomcat8/

+0

Trong trường hợp của tôi classloader đã tìm thấy một lớp không tồn tại mà, sau đó, nó đã không tải. Vấn đề là một tập tin .class cũ được lưu trữ trong/var/cache/tomcat6/... –

0

tôi đã cùng một vấn đề hai lần, nhưng trong lần thứ hai thời gian tôi nhận ra nó không phải là một vấn đề trên Tomcat ở tất cả .. Cố gắng xóa bộ nhớ cache của trình duyệt của bạn, làm mới trang và xem nếu phiên bản mới của trang trên máy chủ của bạn đang được hiển thị. Nó làm việc với tôi.

0

Tôi mới làm quen với tomcat và vấn đề này đã khiến tôi phát điên ngay hôm nay. Đó là lẻ tẻ. Tôi yêu cầu một đồng nghiệp giúp đỡ, và WAR mở rộng và nó đã được thực hiện. 3 triển khai vào cuối ngày hôm đó, nó quay trở lại phiên bản gốc.

Trong trường hợp của tôi, MySite.WAR đã được mở rộng thành cả ROOT AND MySite. MySite thường được phục vụ. Nhưng đôi khi tomcat quyết định nó thích ROOT tốt hơn và mọi thay đổi của tôi biến mất.

"Giải pháp" là xóa trang web ROOT với mọi triển khai chiến tranh.