Я пытаюсь представить один метод как веб-сервис из бэкэнда, используя JAX-WS с Tomcat.
Бэкэнд-метод выглядит примерно так (в классе CompanyFacade):
public Company findCompanyById(Long id) throws Exception{
Company c = null;
try{
if(id == null){
throw new Exception("Failed to get company ID");
}
c = baseFacade.load(Company.class, id);
if(c == null || c.getId() == null){
throw new Exception("No company found");
}
}
catch(Exception e){
throw new Exception(e.getMessage());
}
finally{
return c;
}
}
Что касается класса веб-сервиса, то здесь есть WebMethod, который вызывает вышеуказанный метод:
@WebMethod(operationName = "findCompanyById", action = "urn:findCompanyById")
@WebResult(name = "Company")
public Company findCompanyById(@WebParam(name = "id") Long id) throws Exception{
return CompanyFacade.findCompanyById(id);
}
Ниже приведено ответное сообщение, которое должно содержать сообщение об исключении:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:findCompanyByIdResponse xmlns:ns2="http://site.com/api/ws"/>
</S:Body>
</S:Envelope>
Веб-сервис работает нормально, единственная проблема связана с исключением (например, компания не найдена), сообщения об исключениях могут отображаться в консоли Tomcat, но не в ответном сообщении SOAP, похоже, вызванный метод в WebMethod не возвращает никаких исключений . Поэтому возникает вопрос: как проанализировать сообщение об исключении из метода в серверной части к ответному сообщению SOAP ИЛИ есть ли другой шаблон проектирования? Заранее спасибо!