Javache Custom Server - Проблем с WatchService, Handler reaload и Summer Framework

Здравейте,

 

Поста ми е насочен основно към Иво Желев и задочната дискусия, която се получи в Sli.do по време на последната лекция на 21.02.2018.

Тъй като броя на символите в Sli.do са ограничени беше трудно да опиша на кратко проблема и съответно да бъда разбран.

Проблема който описах се отнася за DispatcherSolet-a и inoveka на controllerActionPair.

Прилагам моята леко модифицирана верися на сървъра, в която използвам WatchService (спрямо допълнителното условие Dicrectory Monitoring от Hand-made Server Exercise 2). 

https://github.com/yvelikov/Java-Web-Fundamentals/tree/master/10.Introduction%20to%20MVC%20-%20Exercise

В този случай handler-те и съответно summer framework-а се презареждат само когато има промяна на файловете в съответната директория. В сървъра от LiveDemo-то това се случва на всеки 10 сек без значение дали има промяна или не.

Проблема, за който исках да обърна внимание, че когато в контролера имаме следния метод или друга вариация на заявка с параметри:

@GetMapping(route = "/delete/{id}")
public String delete(@PathVariable int id){
    System.out.println(id);
    return "template:delete";
}

сървъра генерира response само при първата подадена заявка ( примерно http://localhost:8000/delete/5). Ако заявката се промени на http://localhost:8000/delete/10, сървъра гърми с грешка java.lang.IllegalArgumentException: wrong number of arguments и съотвтно не изпраща response. Както се опитах да обясня в Sli.do този проблем на LiveDemo-то не се забелязва, защото handler-те се презареждат постоянно. 

По приницп не мислех да задълбавам, но след като стигнахме до сесиите и там се оказа, че ако презареждаме handler-те постоянно на практика нямаме сесия, то ще се сблъскаме с този проблем отново.