2010-11-17 30 views
13

Tôi đang sử dụng Jetty để triển khai một trang web sản xuất. Giả sử trang web của tôi là foo.com Khi tôi trỏ trình duyệt của mình đến một ngữ cảnh không tồn tại (giả sử foo.com/notavailable), Jetty hiển thị trang lỗi có thông tin về tất cả ngữ cảnh được triển khai trên đó.Làm thế nào để ngăn chặn Jetty hiển thị thông tin liên quan đến bối cảnh

Nó trông giống như sau:

Không bối cảnh trên máy chủ này phù hợp hoặc xử lý yêu cầu này. bối cảnh gọi đến máy chủ này là:

Tôi muốn ngăn Jetty hiển thị thông báo này vì nó chứa đường dẫn đầy đủ đến ngữ cảnh trên máy chủ.

Có cách nào để thực hiện việc này không?

Trả lời

7

Trang đó được cung cấp bởi Jetty "DefaultHandler"

Để ngăn chặn trang đó hiển thị, bạn nên loại bỏ handler mà từ máy chủ của bạn (nó được cấu hình trong jetty.xml của bạn file) Bạn không thực sự cần (hoặc muốn) trình xử lý mặc định trên máy chủ sản xuất (đối mặt với Internet), vì vậy bạn nên xóa nó đi.

Lưu ý rằng trang cũng cung cấp trang 404 thông thường và favicon.ico nên nếu bạn dựa vào những hành vi đó thì bạn sẽ cần phải thay thế.

+0

Nó là tốt hơn để giải thích hoặc đưa answe đây, một khi liên kết không hợp lệ không pint trong việc thực hiện các câu trả lời. Liên kết hiện tại đã trở thành không hợp lệ. – Sohan

+0

liên kết được cung cấp bị hỏng – SimplyInk

12

Khi định cấu hình XML Jetty, bạn có thể đặt showContexts thành false trên DefaultHandler.

Nếu bạn đang sử dụng phiên bản Jetty cũ thay thế org.eclipse.jetty trên ví dụ của tôi với cấu trúc gói org.mortbay.jetty cũ.

<Configure id="Server" class="org.eclipse.jetty.server.Server"> 

    <!-- =========================================================== --> 
    <!-- Set handler Collection Structure --> 
    <!-- =========================================================== --> 
    <Set name="handler"> 
    <!-- the collection of handlers that will handle the request --> 
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> 
     <Set name="handlers"> 
     <Array type="org.eclipse.jetty.server.Handler"> 
      <!-- primarily handles the request and maps the request to a ContextHandler --> 
      <Item> 
      <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/> 
      </Item> 

      <!-- The default handler ... handles the request if not yet handled --> 
      <Item> 
      <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/> 
      </Item> 

      <!-- The handler for your request logs --> 
      <Item> 
      <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/> 
      </Item> 
     </Array> 
     </Set> 
    </New> 
    </Set> 

    <!-- ===================== --> 
    <!-- DefaultHandler config --> 
    <!-- ===================== --> 

    <Ref id="DefaultHandler"> 
    <Set name="showContexts">false</Set> 
    </Ref> 

</Configure> 

Có lẽ bạn cũng sẽ muốn ngăn chặn việc duyệt thư mục cấu hình DefaultServlet của bạn web.xml,

<servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 
    <init-param> 
     <param-name>dirAllowed</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>0</load-on-startup> 
    </servlet> 
+0

Cảm ơn, câu trả lời của bạn rất hữu ích ... – Parag

5

phiên bản Jetty 9.X đã đưa ra tài sản showContexts trong org.eclipse.jetty. lớp servlet.DefaultServlet. Do đó chúng ta có thể thiết lập showContexts thành flase, nếu bạn không muốn hiển thị danh sách ngữ cảnh.

<Item> 
 
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"> 
 
    <Set name="showContexts">false</Set> 
 
</New> 
 
</Item>

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