Tomcat 7 dấu gạch chéo vấn đề với webapps


13

Gần đây tôi đã nâng cấp máy chủ tomcat của mình từ phiên bản 6.x lên phiên bản 7.x mới nhất.

Tôi nghĩ ra một chút rắc rối, mong được giúp đỡ.

Tôi có một ứng dụng gọi MyApp

Trên tomcat6, khi tôi truy cập http://www.example.com/MyApp/page/ tôi thường sẽ nhận được kết quả mong muốn.

Bây giờ, trên tomcat7, truy cập cùng một url chính xác (với dấu gạch chéo) Tôi gặp lỗi: "Tài nguyên không có sẵn", vì tomcat nghĩ rằng / MyApp / page / là toàn bộ tên webapp thay vì là tên yêu cầu trang dưới ứng dụng web MyApp.

Tôi cần dấu gạch chéo ở cuối url của mình vì nếu không tôi sẽ gặp lỗi: "Trạng thái HTTP 405 - Phương thức yêu cầu 'GET' không được hỗ trợ" cũng không sao vì tôi thực sự không cho phép phương thức GET cho yêu cầu "trang" .

Nếu ai đó biết cách nói với tomcat rằng dấu gạch chéo sau đường dẫn của ứng dụng web hiện tại không nên giả sử chuyển hướng nó sang ứng dụng web mới gọi toàn bộ "chuỗi" và chỉ cần xử lý yêu cầu như trên tomcat6, sẽ rất tuyệt!


Có một servlet mặc định trong web.xmlđó được ánh xạ tới /*? Nếu không, tomcat sử dụng một danh sách tập tin chào mừng. Thông thường chỉ có đoạn đường dẫn đầu tiên được hiểu là gốc ngữ cảnh. Vì vậy, không tìm thấy ứng dụng web của bạn dường như không phải là vấn đề.
mana

phân đoạn đường dẫn đầu tiên là một gốc ngữ cảnh và thực sự hoạt động, nó tìm thấy nó, nhưng các đường dẫn sau thay vì là một phần của đường dẫn đầu tiên, tìm kiếm ứng dụng web cho tất cả các đường dẫn .. Tôi không có bất cứ thứ gì được cấu hình là không mặc định ..

Tôi không thực sự hiểu những gì bạn đang nói. Lấy làm tiếc. Nếu bạn có một MyAppứng dụng web được cấu hình với tên thì tomcat sẽ sử dụng bối cảnh ứng dụng web này bằng cách sử dụng đường dẫn còn lại page/. Nếu không, nó sẽ tìm ROOTbối cảnh, sử dụng đường dẫn đầy đủ để tra cứu.
mana

Tôi có một ứng dụng web gọi MyApp và example.com/MyApp đang hoạt động, nhưng khi truy cập example.com/MyApp/foo thay vì tìm kiếm nội dung foo bên trong MyApp, nó tìm kiếm một ứng dụng web gọi là "MyApp / foo /" và không tìm kiếm nội dung trong MyApp gọi foo ..

2
Hãy thử điều này: stackoverflow.com/q/11055608/1031900

Câu trả lời:


1

Câu hỏi cổ xưa, nhưng vì gần đây tôi đã chiến đấu với dấu gạch chéo chấm dứt trong Tomcat 8, tôi biết rằng các vấn đề với dấu gạch chéo tiếp tục làm khổ thế giới người dùng Tomcat. :-)

Những gì bạn có thể đang chạy vào là những thay đổi trong cách Tomcat xử lý các chuyển hướng khi tải bối cảnh gốc. Kiểm tra lỗi 58660 và đọc một số thảo luận về nhà phát triển ở đó. Bạn có thể cần phải tắt trình ánh xạ mặc định bằng cách sửa đổi mapperContextRootRedirectEnabledthuộc tính của Contextphần tử trong conf/context.xml.


0

Kiểm tra danh sách tập tin chào mừng của bạn .. những gì sau đây là đầu cơ ...

Tôi tin rằng vấn đề cốt lõi là khi Tomcat được trình bày với / - Nó có một vài tùy chọn - Lặp lại danh sách tệp chào mừng - Không có gì ở đó - hiển thị danh sách thư mục (nếu được bật)

Đây là nơi niềm vui bắt đầu ... Rất nhiều người muốn sử dụng * .do cho những thứ như thanh chống. Vì vậy, họ muốn index.do là trang chủ. Hoặc cũng phổ biến là index.jsp trong đó * .jsp được ánh xạ tới JspServlet.

Đây là nơi mọi thứ trở nên vui vẻ. Vì vậy, giả sử các tệp chào mừng của bạn là index.jsp, index.do.

Những gì Tomcat (IIRC) đang làm là lần đầu tiên lặp lại trong danh sách tệp chào mừng tìm kiếm tài nguyên của tên đó.

Sau đó, nó sẽ thực hiện một lượt đi thứ hai để tìm bản đồ phù hợp. Vì vậy, nếu index.jsp được chỉ định trong danh sách chào mừng và * .jsp được ánh xạ. Sau đó, tomcat sẽ cố gắng chuyển tiếp tới index.jsp và bạn sẽ nhận được 404.

Vì vậy, tôi sẽ đoán bạn có một ánh xạ servlet và tập tin chào mừng chồng chéo. Và hành vi của servlet đó không hỗ trợ GET. (Do đó 405)


0

Nếu dự án của bạn đang sử dụng mô-đun web động của v2.2, bạn cần tạo rõ ràng ít nhất một tệp (có thể là tệp html trống) có trong tệp web.xml (ví dụ: index.html) trong WebContent của bạn.


1
đây là bình luận; không phải là một câu trả lời; vui lòng xem xét nhận xét trong tương lai khi bạn nhận được nhiều điểm hơn. cảm ơn
Hrvoje Špoljar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.