2011-01-19 33 views
17

Tôi đang thử trên Tomcat 7.0 và Servlet API 3.0.Tắt tính năng xử lý chú thích, nhưng bật tính năng phân đoạn web trong servlet api 3.0 (Tomcat7)

Tôi đã có một ứng dụng cho API Servlet 2.5. Vì vậy, tôi đã chỉnh sửa web.xml để cấu hình nó cho Servlet API 3.0. Sau khi thay đổi thời gian bắt đầu của Tomcat tăng 14 giây.

Vì vậy, tôi đặt <web-app metadata-complete="true" ... và thời gian bắt đầu của Tomcat đã trở lại bình thường, vì tomcat không quét mọi lớp học để có chú thích. Điều này là tốt, nhưng tính năng web-fragment.xml cũng bị vô hiệu hóa bởi điều này.

Tôi tự hỏi liệu có thể vô hiệu hóa tính năng quét chú thích của Tomcat, nhưng để cho phép xử lý web-fragment.xml.

+1

tăng 14 giây lên bao nhiêu? Nếu nó bắt đầu 3 phút, 14 giây là tốt. – Bozho

Trả lời

3

Cả hai đoạn và chú thích đều là siêu dữ liệu của ứng dụng. Do đó siêu dữ liệu hoàn thành áp dụng cho cả việc xử lý chú thích và xử lý các đoạn. Nếu siêu dữ liệu hoàn thành được đặt cho web.xml, cả xử lý chú thích và xử lý phân đoạn đều bị tắt.

Nhưng, siêu dữ liệu hoàn thành cũng có thể được đặt thành web-fragments.xml. Vì vậy, người ta có thể xử lý có chọn lọc các chú thích và các đoạn.

Cho phép siêu dữ liệu đầy đủ về web.xml và vô hiệu hóa trên web fragments.xml sẽ xử lý mảnh nhưng vô hiệu hóa chế biến chú thích của các tầng lớp dưới web fragments.xml

+0

Tôi đã thử nghiệm nó, nó dường như không hoạt động trong Tomcat 7.0.22. Nhân tiện, tôi không hiểu lắm, nếu tôi bật siêu dữ liệu hoàn thành trên web.xml, máy chủ ứng dụng sẽ bỏ qua quá trình xử lý chú thích và phân đoạn xử lý tất cả cùng nhau. Trong trường hợp này, cấu hình trong web-fragments.xml có thể hoạt động như thế nào? Nó thậm chí không thể được phân tích cú pháp, phải không? – cn1h

+1

Bạn không nên đặt siêu dữ liệu hoàn thành trên web.xml. Nó sẽ vô hiệu hóa các đoạn web cũng như xử lý chú thích. Bạn nên bật nó trên web-fragments.xml. Vui lòng đọc kỹ câu trả lời. –

+0

Xin chào Ramesh, cảm ơn bạn đã phát lại nhanh chóng. Tôi vừa testet, đặt siêu dữ liệu thành false (hoặc chỉ lấy giá trị mặc định) trên web.xml và đặt siêu dữ liệu thành true trên web-fragment.xml sẽ làm cho Tomcat bỏ qua xử lý chú thích, nhưng chỉ cho web đó -fragment jar, phải không? Tomcat có còn quét các lọ khác trong WEB-INF/lib không? – cn1h

3

Xem xét sử dụng 'tuyệt đối đặt hàng' yếu tố trong tệp web.xml của bạn. Đặc tả cuối cùng Servlet API 3.0 mô tả cách sử dụng của nó trong phần 8.2.2 "Thứ tự của tệp web.xml và web-fragment.xml".

Bạn có thể chỉ định chính xác các đoạn web cần xử lý, vô hiệu hóa chú thích xử lý các lớp trong jar của trang web ('siêu dữ liệu hoàn thành' trong phân đoạn web khỏi danh sách) và tất nhiên loại trừ các lọ khác khỏi xử lý theo loại bao gồm phân đoạn web này.

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