2011-01-25 8 views
7

mam ten jeden mapowanieCzy można użyć wyrażenia regularnego do mapowania serwletu Jetty?

<servlet-mapping> 
<servlet-name>service</servlet-name> 
<url-pattern>/service/*</url-pattern> 
</servlet-mapping> 

ale także chcą /serwis/master do mapowania głównego serwletu.

<servlet-mapping> 
<servlet-name>master</servlet-name> 
<url-pattern>/service/master</url-pattern> 
</servlet-mapping> 

Wierzę, że jest tutaj konflikt, ponieważ wywołanie/service/* spowoduje natychmiastowe uruchomienie usługi serwletu. Czy istnieje sposób dla mnie, aby użyć jakiegoś wykluczenia w mapowaniu serwletów, lub może być wyrenderowany, aby zrobić to, co chcę zrobić?

Odpowiedz

6

Mapowania serwletów zawsze używają najbardziej dokładnego dopasowania, więc ścieżka będzie zawsze mapowana na master.

To jest 1 zasada odwzorowań z Servlet 3.0 spec:

  1. Pojemnik spróbuje znaleźć dokładne dopasowanie ścieżki wniosku do ścieżki serwletu. Pomyślne dopasowanie zostanie wybrane przez servlet.
  2. Kontener rekurencyjnie spróbuje dopasować najdłuższy przedrostek ścieżki. Ta jest wykonywana poprzez stopniowe zmniejszanie drzewa ścieżek o jeden katalog za pomocą znaku "/" jako separatora ścieżek. Najdłuższe dopasowanie dla określa wybrany servlet .
  3. Jeśli ostatni segment w ścieżce adresu URL zawiera rozszerzenie (na przykład .jsp), kontener serwletów spróbuje , aby dopasować serwlet, który obsługuje żądania dla rozszerzenia. Rozszerzenie jest zdefiniowane jako część ostatniego segmentu po ostatnim znaku "." .
  4. Jeśli żadna z trzech poprzednich reguł nie doprowadzi do zgodności serwletu, kontener spróbuje obsłużyć żądaną zawartość dla zasobu . Jeśli "domyślny" serwlet ma wartość zdefiniowany dla aplikacji, będzie użyty . Wiele kontenerów udostępnia domyślny domyślny serwlet o wartości obsługujący zawartość .
+0

więc mówisz, że odwzorowanie że mam jest poprawna? Cóż, próbowałem go i/service/master nie mapuje do master servlet – denniss

+0

Spróbuj innego pojemnika, np. Kocur. Widziałem więcej niż często osobliwości z Jetty. – BalusC

+0

Aby obejść ten problem, spróbuj najpierw wykonać mapowanie główne (nie testuj tego, ale zakładam, że istnieje taka możliwość). –

Powiązane problemy