Tôi đọc về điều này trên hướng dẫn Tomcat here và một số câu hỏi SO. Và tôi nghĩ tôi cũng làm điều tương tự. Nhưng theo một cách nào đó không thể quản lý để thành công.Cách đặt đường dẫn ngữ cảnh trong Tomcat để người dùng có thể nhập trang web mà không cần thêm tên thư mục được triển khai?
Trước hết tôi phải nói rằng ứng dụng của tôi được triển khai trên máy chủ Tomcat được chia sẻ mà tôi không có quyền kiểm soát. Tôi chỉ cần thả tệp .war của mình và nó được triển khai.
Tôi đã cố gắng đóng gói đơn đăng ký của mình là ROOT.war nhưng không hoạt động. Các quản trị viên nói với tôi để gói nó như bất cứ điều gì tên tôi muốn và họ sẽ chăm sóc nó. tôi đóng gói nó như my-application.war và nó đã được triển khai nhưng tôi phải nhập http://my-host/my-application để có được đến trang web.
Sau khi liên hệ với quản trị họ nói với tôi rằng họ đã đặt một elemnt bối cảnh trong máy chủ của tôi trong tập tin cấu hình Tomcat như:
<Context path="" docBase="path of my-application deployed folder"/>
được cho là để thiết lập my-ứng dụng như ứng dụng mặc định cho tất cả các yêu cầu đến my-host
. Nhưng nó đã không và bất cứ khi nào tôi nhập http://my-host tôi nhận được:
HTTP Status 404 -/The requested resource (/) is not available
Nhưng một lần nữa khi tôi nhập http://my-host/my-application nó tất cả hoạt động tốt. Bất kỳ đề xuất về những gì có thể sai là chắc chắn đánh giá cao.
Cập nhật:
Tôi cố gắng để làm theo các bước được mô tả trong tài liệu hướng dẫn tomcat trên how to make the application default. 3 cách được mô tả và tôi đã thử cả ba cách và có thể triển khai thành công ứng dụng của tôi như ROOT trên localhost.
Tôi cũng đã cố gắng tạo lại sự cố mà tôi đang gặp phải trên máy chủ từ xa để tôi có thể tìm lý do và báo cáo vấn đề đó cho quản trị viên. Tôi thấy vài vấn đề.
- Trong server.xml đoạn mà quản trị viên đã gửi cho tôi autoDeploy và deployOnStartUp được thiết lập là true, trong khi họ phải là sai lầm nếu xác định một cách rõ ràng yếu tố bối cảnh trong server.xml. Điều này sẽ gây ra việc triển khai kép tạo thư mục ROOT và một thư mục có tên tệp .war. Xóa .war sẽ xóa thư mục tương ứng của nó và hủy hợp lệ ứng dụng nhưng ROOT vẫn còn và phải được xóa thủ công và yêu cầu khởi động lại Tomcat. Cho đến khi khởi động lại, mọi triển khai ROOT.war sẽ thất bại.
- Tôi đã tìm ra một số lý do ngăn ROOT.war triển khai. Có thể là ROOT.xml tồn tại trong conf/{cơ-name}/{host-name} hoặc một thư mục ROOT tồn tại trong appBase của chủ nhà hoặc như tôi mô tả ở trên một ứng dụng ROOT từ việc triển khai trước đó là không undeployed và đòi hỏi Tomcat khởi động lại .
Dù bằng cách nào tôi không thể xác định chính xác những gì chính xác ngăn ROOT.war triển khai vì yêu cầu quyền truy cập vào tệp nhật ký Tomcat và tệp conf để kiểm tra các trường hợp tôi đã mô tả ở trên.
Ngoài ra, tôi thấy quản trị viên của tôi dường như không có khả năng duy trì máy chủ Tomcat và tìm sự cố. Vì vậy, tôi quyết định đi với một máy chủ Tomcat chuyên dụng sau khi đấu tranh với một chia sẻ.
Tomcat có được sử dụng độc lập và phân phối HTTP hoặc có máy chủ khác xử lý và giao tiếp với Tomcat qua AJP không? Có vẻ như có một số máy chủ ảo đang diễn ra. Điều đó có được định nghĩa trong 'server.xml' chính của Tomcat hay được thực hiện dưới dạng tệp cấu hình cụ thể của máy chủ lưu trữ riêng biệt trong' conf/Catalina' không? – laz
Tôi vừa thử thêm đường dẫn ngữ cảnh vào tệp server.xml của tomcat và nó đã chuyển hướng giống như một nhà vô địch. Tất cả những gì tôi đã làm là đặt docBase = "my-application" chứ không phải là đường dẫn tuyệt đối hay bất cứ thứ gì như thế. Trong mã mẫu của bạn ở trên, đó là "đường dẫn của thư mục triển khai ứng dụng của tôi" có nghĩa là gì? –
Ngoài ra, bạn có quyền truy cập vào toàn bộ phần tử có chứa phần tử không? Tùy thuộc vào cài đặt của nó, nó có thể ngăn không cho cài đặt ngữ cảnh hoạt động như bạn mong đợi. –