2012-07-30 35 views
12

Tôi đang sử dụng tomcat để triển khai các ứng dụng của mình, tôi muốn triển khai dưới dạng một cuộc chiến duy nhất để máy chủ có nhiều đường dẫn ngữ cảnh.Làm thế nào tôi có thể ánh xạ nhiều ngữ cảnh vào cùng một tệp chiến tranh trong Tomcat?

Hiện tại tôi có app1.war và app2.war, nhưng cả hai đều có cùng nội dung chỉ có tên khác nhau để truy cập qua http: /// app1 và http: ///app1.war. Nhưng tôi muốn làm điều này, Triển khai app.war và truy cập nó bằng cả đường dẫn ngữ cảnh app1 và app2. Có thể làm trong tomcat? Vui lòng giúp tôi trong số này

+1

Nếu nó vẫn là cùng một webapp (chia sẻ cùng một dữ liệu cục bộ) hoặc nên các ứng dụng web thực sự là trường hợp riêng biệt? – Daniel

Trả lời

20

Điều này có thể được thực hiện bằng nhiều cách. Tôi nghĩ rằng cách này là đơn giản nhất:

  1. Move tập tin WAR bên ngoài của thư mục webapps/ tự động triển khai
  2. Extract META-INF/context.xml từ tập tin WAR của bạn. Nếu WAR của bạn không có tệp META-INF/context.xml, chỉ cần sử dụng tệp không có gì nhưng <Context /> trong đó
  3. Sao chép tệp này vào thư mục conf/[service]/[host]/ của Tomcat là cả hai app1.xmlapp2.xml. ([Dịch vụ] thường là "Catalina" và [host] là tên của máy chủ ảo của bạn là: trên cấu hình Tomcat mặc định, tên máy chủ luôn là "localhost").
  4. Sửa cả app1.xmlapp2.xml và thiết lập các thuộc tính docBase cho các phần tử <Context> để trỏ đến file WAR bạn di chuyển trong bướC# 1
  5. Re-start Tomcat

này phải cung cấp cho bạn một vật lý duy nhất Tệp WAR và nhiều bối cảnh được triển khai từ nó. Mặc dù Tomcat hỗ trợ cấu hình này, tôi khuyên bạn nên chống lại nó: không gian đĩa rẻ, nó không thay đổi gì khi chạy (bạn vẫn nhận được hai bản sao của mọi thứ trong bộ nhớ), và bạn mất khả năng linh hoạt triển khai các tệp WAR khác nhau và/hoặc cập nhật riêng chúng mà không cần sửa đổi cấu hình của cả hai ngữ cảnh.

Nếu bạn muốn lời khuyên của tôi, hãy dính vào các tệp WAR trùng lặp.

+0

Tôi nghĩ rằng tôi đồng ý với việc gắn bó với WARs trùng lặp, nhưng tôi đang ở trong một tình huống tương tự và thấy rằng có một tạo phẩm duy nhất để đẩy thông qua một đường ống phân phối liên tục là rất gọn gàng. Nó cũng đáng nói rằng nếu bạn đặt WAR bên ngoài ứng dụng hostBase, chúng không thể được giải nén (như Tomcat v7), vì vậy nếu bạn có một ứng dụng (như tôi làm, thật đáng buồn) yêu cầu giải nén, phần trên không phải là một lựa chọn. – Conan

+1

Chiến tranh như vậy * có thể * được giải nén, nhưng bạn sẽ phải tự giải nén chúng. Có thể viết tất cả những điều này, tất nhiên. –

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