Может я что-то не понимаю. Есть интерфейс | Код | @Remote public interface ControllerPhonePrefixIRemote { /** * метод добавляет новый телефонный префикс * @param name наименование * @param value значение * @throws TException */ void addPhonePrefix(String name, String value) throws TException; /** * метод возвращает список всех телефонных префиксов * @return список * @throws TException */ List<PhonePrefix> getSpisokAllPhonePrefix(); }
|
Это remote интерфейс Stateless Session Bean. Есть код, использующий этот интерфейс: | Код | ControllerPhonePrefixIRemote controller = dataAccess.getPhonePrefixIRemote(); PhonePrefixCommand params = (PhonePrefixCommand) command;
// создадим тел префикс try { logger.debug("before addPhonePrefix"); controller.addPhonePrefix(params.getName(), params.getValue()); logger.debug("after addPhonePrefix"); } catch (TException e) { logger.debug("catching error",e); // обрабатываем отловленную ошибку (случай, когда тел префикс с введенным значением существует в базе) HashMap<String, Object> model = new HashMap<String, Object>(); // первый вариант.Выдаем ошибку, которая в серверной части определена String msg = e.getMessage(); model.put("error", msg); return showForm(request, response, errors, model); } catch (Exception e){ logger.warn(e,e); HashMap<String, Object> model = new HashMap<String, Object>(); String msg = e.getMessage(); model.put("error", msg); return showForm(request, response, errors, model); } logger.debug("before return");
|
Код этот используется в spring'овском контроллере. Теперь самое главное. В процессе работы биновского метода addPhonePrefix возникает этот самый TException Но почему-то в клиента попадает | Код | java.lang.reflect.UndeclaredThrowableException at $Proxy283.addPhonePrefix(Unknown Source) at com.telecom_m.tariffmanager.web.CreatePhonePrefixFormController.onSubmit(Unknown Source) at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:258) at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:249) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
|
Приложение состоит из двух частей - ejb3 и web, оба они оборачиваются в ear и деплоятся в Jboss 4.0.4GA Самая фишка в том, что на одном (локальном) jboss'е все работает как должно - появляется TException, который благополучно перехватывается. А на рабочем - шиш, возникает непонятно откуда Undeclared... Рабочий от локального отличаются только тем, что на рабочем уже крутятся несколько приложений. сам виновник торжества | Код | package com.telecom_m.tariffmanager.ejb;
public class TException extends Exception { public TException() { super(); }
public TException(String message) { super(message); }
public TException(String message, Throwable cause) { super(message, cause); }
public TException(Throwable cause) { super(cause); } }
|
|