У меня есть служба, генерирующая RuntimeException, которая работает нормально с ajax Call. Если я вызываю эту службу, используя HttpUrlConnection из строки исключений другой Java-программы, вместо этого вместо нее отображается «Внутренняя ошибка сервера» с кодом ответа 500.
@Path("poService")
public class PoService {
@Context
private UriInfo context;
@GET
@Path("getPo/{poNo}")
@Produces(MediaType.APPLICATION_JSON)
public Response getPo(@PathParam("poNo") int poNo ) throws Exception{
String urlStr = AppConstant.WEBOLIS_PATH + "po.htm?getPoForSrnConsReport=true&pono="+poNo ;
URL url = new URL(urlStr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
//con.setRequestProperty("User-Agent", AppConstant.USER_AGENT);
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
System.out.println("Response Code : " + con.getResponseMessage());
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
if( responseCode!=200 ){ // if any Error
//throw new WebolisApiException( responseCode, response.toString());
}else{
}
return Response.ok( response.toString(), MediaType.APPLICATION_JSON).build();
}
}
Это выше метод REST, из которого я вызываю другой Java-контроллер Spring.
@RequestMapping( value="/po", method=RequestMethod.GET,params= {"getPoForSrnConsReport"}) //,consumes="application/json"
@ResponseBody ModelMap getPoForSrnConsReport(HttpServletResponse response,
@RequestParam(value = "pono" ) Integer poNo) throws Exception {
ModelMap m = new ModelMap();
PoService poService = new PoService();
Po po = poService.getPo(poNo, poService.ALL_ITEMS , Boolean.FALSE);
m.addAttribute("po",po);
return m;
}
в PoService я выбрасываю пользовательское исключение 'PO not Found' Эта строка недоступна в методе REST