2010-11-17 11 views
13

Używam Jetty do wdrożenia witryny produkcyjnej. Załóżmy, że moja witryna to foo.com Kiedy kieruję przeglądarkę do kontekstu, który nie istnieje (np. Foo.com/notavailable), Jetty pokazuje stronę błędu z informacjami o wszystkich wdrożonych kontekstach.Jak zapobiec wyświetlaniu informacji związanych z kontekstem przez Jetty?

Wygląda to mniej więcej tak:

brak kontekstu na tym serwerze dopasowane lub używany ten wniosek. konteksty znane serwera to:

Chcę zapobiec Jetty z pokazując tę ​​wiadomość, ponieważ zawiera pełną ścieżkę do kontekstu na serwerze.

Czy istnieje sposób, aby to zrobić?

Odpowiedz

7

Że strona jest przez Jetty „DefaultHandler”

aby zatrzymać tę stronę z wyświetlania, należy usunąć ten moduł obsługi z serwera (nie jest to skonfigurowane w jetty.xml file) Naprawdę nie potrzebujesz (lub chcesz) domyślnego programu obsługi na serwerze produkcyjnym (internetowym), więc warto go usunąć.

Pamiętaj, że zawiera również zwykłą stronę 404, a także favicon.ico, więc jeśli polegasz na tych zachowaniach, będziesz musiał umieścić zamiennik.

+0

Lepiej jest wyjaśnić lub umieścić answe tu, raz link jest nieważna bez kwarty w wykonaniu odpowiedź. Obecny link stał się nieprawidłowy. – Sohan

+0

pod warunkiem, że link jest uszkodzony – SimplyInk

12

Podczas konfigurowania Jetty XML można ustawić wartość showContexts na wartość false na DefaultHandler.

Jeśli używasz starszych wersji Jetty, zamień org.eclipse.jetty na moim przykładzie ze starą strukturą paczki org.mortbay.jetty.

<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> 

Może będziesz także chcąc zapobiec przeglądanie katalogów skonfigurowaniu DefaultServlet z Twojego 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

Dzięki, Twoja odpowiedź była bardzo przydatna ... – Parag

5

wersja Jetty 9.X ma pochodzić z showContexts nieruchomości w org.eclipse.jetty. klasa serwlet.DefaultServlet. Dlatego możemy ustawić showContexts na flase, jeśli nie chcemy wyświetlać listy kontekstów.

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

Powiązane problemy