2015-09-18 5 views
0

В моем web.xml у меня есть следующее отображение:ресурс не найден в случае 2 диспетчерских сервлетов

<servlet> 
    <servlet-name>admin</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

, который предназначен для администратора части моего приложения.

Однако, когда я добавляю другое отображение для метрик:

<servlet> 
    <servlet-name>metrics</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>3</load-on-startup> 
</servlet> 

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

и попытаться достичь ресурса, используя, например/метрики/ошибки URL, я получаю сообщение об ошибке, что ресурсы не найдены. Для ресурса у меня есть следующий контроллер:

@RestController 
@RequestMapping("/metrics") 
public class MetricsController { 

@Autowired 
private MetricsService metricsService; 

@RequestMapping(value = "/errors", method = RequestMethod.GET) 

public List<TransactionsPerDay> fetchResult(@RequestParam("startDate") @DateTimeFormat(pattern="yyyy-MM-dd") Date startDate, @RequestParam("endDate") @DateTimeFormat(pattern="yyyy-MM-dd") Date endDate) { 

    //Specific logic here 


} 

Может быть проблемой, потому что я пытаюсь использовать 2 Диспетчера сервлеты в моем приложении? Когда я перемещаю свой контроллер внутри пакета администратора, который покрывается сервлетом администратора, ресурс внезапно становится найденным.

+1

Доступно ли оно по URL-адресу '/ metrics/metrics/errors'? Если да, то удалите '@RequestMapping ("/metrics ")' из 'MetricsController'. –

+0

Достигнуто значение '/ metrics/metrics/errors', когда я удалил отображение из« MetricsController », теперь он достигнут метриками/ошибками. Хотя мне интересно, на каком основании добавляются первые «/ метрики» к URL-адресу ресурса? – ferbolg

+0

Первые '/ metrics', которые добавлены' 'из' метрики' сервлета. –

ответ

0

URL-адрес собран из следующих частей: - url-pattern из DispatcherServlet - на уровне класса @RequestMapping аннотаций - метод уровня @RequestMapping аннотаций

В нашем случае MetricsController.fetchResult можно добраться на URL /metrics/metrics/error. Чтобы сделать его доступным /metrics/error Я предлагаю удалить аннотацию класса @RequestMapping.

Смежные вопросы