2008-11-26 32 views
17

Tomcat documentation nói:Tệp ngữ cảnh Tomcat 5 nào được ưu tiên?

Vị trí cho các bộ mô tả ngữ cảnh là;

$ CATALINA_HOME/conf/[enginename]/[hostname] /context.xml
$ CATALINA_HOME/webapps/[webappname] /META-INF/context.xml

Mở máy chủ của tôi, tôi có ít nhất 3 tệp nổi xung quanh:

1 ...tomcat/conf/context.xml 
2 ...tomcat/Catalina/localhost/myapp.xml 
3 ...tomcat/webapps/myapp/META-INF/context.xml 

Thứ tự ưu tiên là gì?

Trả lời

31

Đối với các tập tin bạn liệt kê, câu trả lời đơn giản giả sử bạn đang sử dụng tất cả các giá trị mặc định, các lệnh được (chú ý conf/Catalina/localhost):

...tomcat/conf/context.xml 
...tomcat/conf/Catalina/localhost/myapp.xml 
...tomcat/webapps/myapp/META-INF/context.xml 

tôi dựa này (và các thảo luận sau) trên Tomcat 5.5 official documentation for the Context Container.

Vì vậy, nếu đó là câu trả lời đơn giản, thì câu trả lời hoàn chỉnh là gì?

Tomcat 5.5. sẽ xem xét một vài địa điểm khác cho các phần tử <Context> ngoài những yếu tố bạn đã liệt kê (xem tài liệu chính thức).

META-INF/context.xml sẽ không bao giờ được mở nếu Tomcat tìm thấy Catalina/localhost/myapp.xml. Vì vậy, nếu bạn thực sự có tất cả các tệp ở trên, thì chính xác hơn để nói rằng số META-INF/context.xmlkhông liên quan, không phải đó là ưu tiên thấp nhất.

Nếu bạn nói <Context override="true" ...> trong số Catalina/localhost/myapp.xml của bạn sẽ làm cho ưu tiên là cao nhất, bất kể conf/context.xml.Điều tương tự trong số META-INF\context.xml của bạn, miễn là bạn không có Catalina/localhost/myapp.xml (xem đoạn trước).

Ngoài ra, phần /Catalina/localhost/ của đường dẫn trong các tệp ở trên thực tế xuất phát từ "mặc định" conf/server.xml và khớp với <Engine name="Catalina" defaultHost="localhost">. Nếu số server.xml của bạn sử dụng các giá trị khác nhau cho namedefaultHost trong <Engine>, đó là cấu trúc thư mục mà Tomcat sẽ xem xét.

Cuối cùng, đối với phần ...tomcat\ của các tệp bạn đã liệt kê, Tomcat sử dụng thư mục từ biến môi trường $CATALINA_BASE. Nếu không được thiết lập, thì nó sẽ sử dụng thư mục từ biến môi trường $CATALINA_HOME, đó là thư mục cài đặt Tomcat. Tôi thích thiết lập và sử dụng $CATALINA_BASE để tôi không "gây ô nhiễm" cài đặt Tomcat của mình.

+0

Wow, một câu trả lời rất chi tiết và ấn tượng. Cảm ơn bạn. – Ittai

0

tôi đã không tìm thấy bất kỳ tài liệu chính thức, nhưng tôi đã quan sát thứ tự nạp là:

1 tomcat_home/conf/context.xml 
2 tomcat_home/webapps/myapp/META-INF/context.xml 

đâu # 2 là người cuối cùng áp dụng (do thiết lập của nó ghi đè lên tất cả những người trước đây, nếu có) .

Tôi chưa bao giờ sử dụng tệp webapp có tên là tệp ngữ cảnh (tùy chọn của bạn # 2).

1

sự hiểu biết của tôi là:

  • tomcat/conf/context.xml là "mặc định" context.xml có nội dung được overlayed với các định nghĩa bối cảnh webapp. Tệp context.xml mặc định của TC 5 của tôi hầu như không có gì trong đó, ngoài việc liệt kê tệp web.xml là tài nguyên đã xem, hỗ trợ khái niệm này.
  • tomcat/Catalina //. Xml được sử dụng cho webapp. Hoặc là nó được đặt ở đây theo cách thủ công hoặc được lấy từ webapp của bạn tại thời điểm triển khai ... vì vậy đây là tổng thể thực sự mà TC sử dụng. Nếu bạn chỉnh sửa thay đổi này sẽ được đọc bắt đầu tiếp theo.
  • tomcat/webapps/myapp/META-INF/context.xml - điều này được sao chép vào tomcat/Catalina/khi triển khai ban đầu nếu bạn thay đổi này sau khi triển khai ban đầu, tôi không nghĩ rằng có bất kỳ tác dụng
Các vấn đề liên quan