2015-07-02 16 views
6

Tôi không chắc chắn cách đường dẫn ngữ cảnh được đặt. Khi tôi đổi tên .war file trong tomcat của mình trên autodeploy, trang web sẽ chuyển sang localhost:8080/newDirectory như mong đợi, tuy nhiên vì một lý do nào đó, khi có cuộc gọi đến pageContext.request.contextPath trong trang dựa trên Spring, nó vẫn trả lại đường dẫn ngữ cảnh cũ.Đường dẫn ngữ cảnh Spring MVC được đặt ở đâu?

Tôi cố gắng để ghi đè lên các đường dẫn ngữ cảnh bằng cách thiết lập:

<context path="/newDirectory" docBase="appName" override="true"></context> 

trong server.xml nhưng nó không hoạt động.

Câu hỏi của tôi là, Spring đọc đường dẫn ngữ cảnh của nó từ đâu? Tôi sử dụng Maven và tôi đã thấy có một

<appContext>/${project.artifactId}</appContext> 

trong pom.xml, điều này không có nghĩa là tôi cần phải đổi tên artifactId để newDirectory?

Tôi cũng đã thử thêm rằng <context path="/newDirectory"...> in /META-INF/context.xml (hiện giờ tôi biết sẽ bị bỏ qua do thay đổi server.xml của tôi).

Cảm ơn trước vì câu trả lời của bạn.

+0

Đối với tôi, chỉ cần thay đổi oldWebApp.war thành newWebApp.war đã làm việc –

Trả lời

0

Mỗi PageRequest sẽ nhận đối tượng HttpServletRequest hiện tại và nhận đường dẫn ngữ cảnh của yêu cầu hiện tại và nối thêm .jsp của bạn (sẽ hoạt động ngay cả khi đường dẫn ngữ cảnh tài nguyên này được truy cập khi thay đổi).

Ví dụ,

nếu bạn có tập tin chiến tranh như MyCompany.war và có một trang với $ {} pageContext.request.contextPath /MyJspPage.jsp.

Then your context path is http://abc/MyCompany and it works as http://abc/MyCompany/MyJspPage.jsp. 

Giả sử nếu bạn thay đổi tập tin chiến tranh của bạn như OurCompany.war,

then your context path changes to http://abc/OurCompany and Jsp will work as http://abc/OurCompany/MyJspPage.jsp. 

Nó có nghĩa là đường dẫn ngữ cảnh sẽ thay đổi tự động để tên của ứng dụng (tên file War) với ra bất kỳ thay đổi.

Trong trường hợp của bạn, sau khi đổi tên tên tệp chiến dịch bằng newDirectory, máy chủ web của bạn sẽ triển khai ứng dụng newDirectory nhưng ứng dụng newDirectory mới tồn tại trong máy chủ web. Tôi nghĩ bạn nên xóa ứng dụng cũ khỏi webapp và sau đó kiểm tra bằng cách tải lại ứng dụng newDirectory của bạn.

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