2009-03-19 11 views
8

Tất cả tôi có thể tìm thấy trong Tomcat 5.5 docs là:Thuộc tính crossContext làm gì trong Tomcat? Nó có cho phép chia sẻ phiên không?

Set true nếu bạn muốn cuộc gọi trong ứng dụng này để ServletContext.getContext() để trở thành một điều phối yêu cầu cho các ứng dụng web khác chạy trên máy chủ ảo này. Đặt thành false (mặc định) trong môi trường bảo mật, để getContext() luôn trả về giá trị rỗng.

Tôi đã tìm thấy một số bài viết diễn đàn mà nhận xét rằng thiết crossContext=true cũng cho phép chia sẻ đối tượng session giữa các ứng dụng web khác nhau, nhưng tôi không thể tìm thấy bất kỳ tài liệu chính thức tuyên bố này.

Có mối quan hệ nào giữa Servlet.getContext() và khả năng chia sẻ trạng thái phiên giữa các ứng dụng web khác nhau không?

Thuộc tính crossContextthực sự làm gì trong Tomcat?

Trả lời

8

Từ javadoc ServletContext.getContext():

Phương pháp này cho phép servlets để đạt được quyền truy cập vào bối cảnh cho các bộ phận khác nhau của máy chủ, và khi cần thiết có được đối tượng RequestDispatcher từ bối cảnh. Đường dẫn đã cho phải được bắt đầu bằng "/", được diễn giải tương đối so với gốc tài liệu của máy chủ và được so khớp với gốc của các ứng dụng web khác được lưu trữ trên vùng chứa này.

Ví dụ: nếu bạn muốn đưa trang từ một ứng dụng web khác, bạn cần đặt crossContext thành true.

+0

Có mối quan hệ nào giữa Servlet.getContext() và khả năng chia sẻ trạng thái phiên giữa các ứng dụng web khác nhau không? – Serxipc

+1

Không phải là tôi biết. –

17

Bạn có thể chia sẻ phiên giữa các ứng dụng web bằng cách sử dụng Single Sign-On Valve.

Bạn sẽ đặt crossContext=true nếu bạn muốn chia sẻ một số thông tin giữa các ứng dụng web khác nhau trong cùng một máy chủ ảo.

Ví dụ app1 sẽ gọi:

setAttribute("name", object); 

và ứng dụng khác có thể gọi

getContext("/app1").getAttribute("name"); 

để đọc thông tin. Nếu crossContext không được đặt thành true, getContext ("/ app1") sẽ trả về null.

Tuy nhiên, việc sử dụng crossContext vừa hiếm và có thể không an toàn.

+0

Cảm ơn, nhưng tôi không tìm kiếm một dấu hiệu đơn, tôi cần chia sẻ các thuộc tính HttpSession. Hãy xem câu hỏi mới của tôi http: // stackoverflow.com/questions/665941/any-way-to-share-session-state-giữa-khác-ứng dụng-trong-tomcat – Serxipc

+0

thaaank tất cả các bạn và đặc biệt bạn thưa bạn, thaaaaaaaaaaa bạn lưu cuộc sống của tôi – Dilllllo

+0

+1 để trỏ đến dấu hiệu đơn -trên tài liệu. –

0

Tôi đã tự mình thử và không thể tìm thấy hiệu ứng phụ chia sẻ phiên huyền diệu, vì vậy thuộc tính crossContext chỉ thực hiện những gì tài liệu nói.

Tôi đã đăng another question để xem có cách nào để chia sẻ trạng thái phiên hay không.