Tôi muốn thu thập một số thực tiễn tốt nhất về triển khai ứng dụng web cho Tomcat đang chạy. Cách đây không lâu, tôi đã phải mô tả quá trình triển khai ứng dụng web của chúng tôi và quá trình này xuất hiện khá khó hiểu.Triển khai ứng dụng web vào Tomcat đang chạy
Giả sử, chúng tôi có một ứng dụng trong tệp WAR (foo.war) được định cấu hình chính xác và không yêu cầu cấu hình bổ sung. Trong trường hợp này, quy trình triển khai khá dễ dàng:
- Sao chép tệp foo.war vào thư mục $ CATALINA_HOME/webapps. Nếu ứng dụng bắt đầu chính xác, ứng dụng sẽ tự động triển khai vào thư mục $ CATALINA_HOME/webapps/foo.
Để undeploy ứng dụng:
- Hủy bỏ các tập tin foo.war từ $ CATALINA_HOME/webapps. Nếu ứng dụng tải xuống chính xác, ứng dụng sẽ được tải xuống và $ CATALINA_HOME/webapps/foo sẽ bị xóa.
Bây giờ tôi muốn ghi đè một số thông số ngữ cảnh trong ứng dụng đang chạy của mình. Sau khi đọc các docs, tất cả tôi cần phải làm:
- Tạo một tập tin context.xml gọi foo.xml
- Sao chép tập tin đến $ CATALINA_BASE/conf/[enginename]/[hostname]/thư mục.
Thật không may, điều đó không hoạt động: ứng dụng sẽ không khởi động lại. Theo kinh nghiệm, chúng tôi phát hiện ra rằng giải pháp làm việc duy nhất là khi tệp chiến tranh được triển khai đến một vị trí bên ngoài ứng dụng web $ CATALINA_HOME /. Bên cạnh đó, các giá trị mặc định của các tham số ngữ cảnh có thể định cấu hình trong tệp WAR sẽ được chỉ định trong tệp web.xml, vì tệp context.xml trong tệp WAR không được đọc khi có tệp ngữ cảnh bên ngoài.
Dưới đây là một ví dụ đơn giản của foo.xml:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/path-to-deployment-directory/foo.war">
<Parameter name="myparam" value="newvalue" override="false"/>
</Context>
Hãy chắc chắn để xác định ghi đè = false cho tham số nếu bạn muốn 'newvalue' để ghi đè lên giá trị quy định trong web.xml của WAR . Điều này không rõ ràng đối với chúng tôi.
Vì vậy, để triển khai một aplication để một Tomcat chạy:
- Tạo một tập tin context.xml gọi foo.xml
- Sao chép tập tin đến $ CATALINA_BASE/conf/[enginename]/[hostname ]/ danh mục.
- Sao chép foo.war vào vị trí được chỉ định trong docBase của foo.xml; ứng dụng sẽ tự động triển khai.
Để áp dụng các thông số bối cảnh mới:
- Thêm các giá trị tham số để các foo.xml và lưu các tập tin; ứng dụng sẽ tự động triển khai lại.
Để undeploy ứng dụng:
- Tháo foo.xml từ $ CATALINA_BASE/conf/[enginename]/[hostname]/thư mục
Lưu ý rằng loại bỏ các foo. chiến tranh cũng sẽ hoạt động, nhưng cũng sẽ xóa foo.xml.
Bởi bây giờ, tôi có các câu hỏi sau:
- Có một thực hành tốt nhất tại tất cả để triển khai một ứng dụng web mà không dừng lại tomcat? Tôi nghe một ý kiến rằng triển khai một tomcat đang chạy là không bao giờ cần thiết kể từ khi mọi người chạy mỗi ứng dụng trong một tomcat riêng biệt.
- Bạn nên sao chép tệp WAR vào $ CATALINA_HOME/webapps hoặc tốt hơn nên được lưu giữ ở một vị trí riêng biệt?
- Tôi làm cách nào để định cấu hình ứng dụng được triển khai thành $ CATALINA_HOME/webapps
- Tại sao không có dòng INFO trong catalina.out để triển khai ứng dụng và có một ứng dụng cho việc không triển khai? Nó có thể cấu hình được không?