Я написал небольшой API отдыха с помощью пружинной загрузки.
url - http://localhost:8080/REST/api/testservice
Тестовый класс контроллеров
@RestController
@Scope("request")
@RequestMapping("/api")
public class TestRestController {
private final Log logger = LogFactory.getLog(getClass());
@Autowired
Common common;
@Autowired
CommonVarList commonVarList;
@CrossOrigin
@RequestMapping(value = "/testservice", method = RequestMethod.GET)
public ResponseEntity<ResponseBean> getCheckUser() {
return new ResponseEntity<ResponseBean>(new ResponseBean(Boolean.parseBoolean(commonVarList.BOOLEAN_DEFAULT_TRUE),common.getLocaleMessage(MessageVarList.IB_SERVICE_RUNNING)), HttpStatus.OK);
}
}
Я тоже написал класс перехватчиков.
Класс перехватчика
public class TestRestInterceptor implements HandlerInterceptor {
final static Logger logger = Logger.getLogger(IbRestInterceptor.class);
@Autowired
Common common;
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
//check request time out here
boolean isRequestTimeOut = common.checkUserTimeOut();
if(isRequestTimeOut){
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/api/request/timeout");
}
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
//TODO
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {}
}
Класс контроллера времени TimeOut
@RestController
@Scope("request")
@RequestMapping(path = "/api/request")
public class ResponseRestController {
@Autowired
RequestHandlerService requestHandlerService;
@CrossOrigin
@RequestMapping(value = "/timeout", method = RequestMethod.GET)
public ResponseEntity<ResponseBean> postUserTimeOut(){
ResponseBean responseBean=requestHandlerService.handleRequestTimeOut();
return new ResponseEntity<ResponseBean>(responseBean,HttpStatus.REQUEST_TIMEOUT);
}
}
Я использую httpServletResponse.sendRedirect , чтобы пропустить вызов /api / testservice класс контроллера покоя, когда пользовательский запрос имеет тайм-аут.
Но он вызывает / api / testservice класс контроллера покоя и затем вызывает / api / request /timeout класс контроллера покоя.
Я хочу просто пропустить вызов / api / testservice класс контроллера покоя при тайм-ауте запроса пользователя.
Кто-нибудь может описать, какисправить эту проблему.это будет очень полезно.Заранее спасибо