2012-03-06 31 views
5

Tomcat tài liệu (http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)cập nhật Tomcat context.xml nhưng không nên

Chỉ khi một tập tin bối cảnh không tồn tại cho ứng dụng trong số $ CATALINA_BASE/conf/[enginename]/[tên máy chủ] /, trong một tệp riêng lẻ tại /META-INF/context.xml bên trong tệp ứng dụng. Nếu ứng dụng web được đóng gói như một WAR thì /META-INF/context.xml sẽ là được sao chép sang $ CATALINA_BASE/conf/[enginename]/[tên máy chủ]/và đổi tên thành khớp với đường dẫn ngữ cảnh của ứng dụng. Khi tệp này tồn tại, nó sẽ không được thay thế nếu một WAR mới với /META-INF/context.xml mới hơn là được đặt trong appBase của máy chủ.

Chữ in đậm rõ ràng. Nhưng tôi thông báo là không đúng sự thật. (Tôi cần chính xác hành vi này)

Dưới đây là các bước:

  1. aaa.war với context.xml đưa vào META-INF
  2. bản sao cho webapps. tomcat triển khai. Nộp conf\Catalina\localhost\aaa.xml OK
  3. thay đổi bằng cách thay đổi aaa.war META-INF/context.xml
  4. bản sao cho webapps
  5. file conf\Catalina\localhost\aaa.xml được thay đổi !!!

Điều gì là sai? Nó là một lỗi hoặc một tính năng ẩn?

Bối cảnh - vấn đề tôi muốn giải quyết:

Xây dựng và cài đặt độc lập cấu hình. Tôi trồng tàu chiến. Khách hàng cho mỗi cấu hình Tomcat của mình bằng cách sử dụng các thiết lập của riêng mình. khi tôi phát hành bản phát hành mới, tôi chỉ phân phối chiến tranh mà không cần cấu hình và khi được triển khai, nó sẽ sử dụng cấu hình máy khách cụ thể.

Bằng tài liệu, nơi tốt nhất là context.xml Nhưng nếu ghi đè lên mỗi lần nó không có ý nghĩa gì cả. (Tại sao tôi sẽ sử dụng JNDI và như vậy một điều nếu chuyển giao mới đã để tạo ra thay đổi điều gì đó trong xây dựng thời gian không phải là một lợi thế cấu hình lớn?.)

Môi trường: cửa sổ, tomcat 6.0.33

+0

Vấn đề tương tự: http://stackoverflow.com/questions/4158468/tomcat-context-management – takacsot

+0

Câu trả lời đã được trình bày trong trang web này: http://stackoverflow.com/questions/7142365/how-to-provide-a -context-configuration-for-a-web-ứng dụng-under-tomcat – takacsot

Trả lời

6

Tôi đã chạy vào cùng một vấn đề và tài liệu ít nhất là không đủ, nếu không trực tiếp gây hiểu nhầm.

Vấn đề là, nếu bạn sao chép phiên bản mới của tệp WAR đã triển khai vào thư mục webapps, Tomcat sẽ không triển khai lại ứng dụng hiện có nhưng không triển khai ứng dụng cũ và sau đó triển khai ứng dụng mới. Sự khác biệt có thể lần đầu tiên có vẻ không đáng kể, nhưng vấn đề là trong quá trình thất nghiệp của ứng dụng cũ, mọi tệp ngữ cảnh trong conf/Catalina/localhost đều bị xóa. Sau đó, tệp ngữ cảnh mới từ tệp WAR hiện tại sẽ được sao chép vào conf/Catalina/localhost trong khi triển khai ứng dụng mới.

Giải pháp khả thi duy nhất mà tôi tìm thấy không phải là triển khai ứng dụng mới dưới dạng tệp WAR, nhưng để thay thế hoặc ghi đè thư mục mở rộng, ví dụ: không sao chép aaa.war vào webapps/nhưng để giải nén trực tiếp aaa.war vào webapps/aaa /.

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