Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Axis: обработка исключений в Handler.onFault(...) / 2 сообщений из 2, страница 1 из 1
11.04.2006, 18:18
    #33659366
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Axis: обработка исключений в Handler.onFault(...)
Всем привет!
Подскажите, плз, как получить (где взять) объект Exception в Handler.onFault(MessageContext ctx), кот. привел к вызову этого метода?

Заранее благодарен.
...
Рейтинг: 0 / 0
12.04.2006, 19:43
    #33662547
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Axis: обработка исключений в Handler.onFault(...)
Решил проблему! :)
Так как exception порождается в сервисе, и из MessageContext можно получить объект сервиса, то
1. Просто сохраняем объект exception в HashMap внутри сервиса (ключом может быть Thread.currentThread().hashCode()):
Код: plaintext
1.
2.
3.
 private   void  saveFaultCause(Throwable ex) {
  _faults.put(  new   Long (Thread.currentThread().hashCode()), ex );
}

2. Создаем метод в классе сервиса для получения объекта exception:
Код: plaintext
1.
2.
3.
 public  Throwable getFaultCause() {
   return  _faults.get(  new   Long (Thread.currentThread().hashCode()) );
}

3. В onFault handler'a:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public   void  onFault(MessageContext msgCtx) {
   try  {
    MyService srv = (MyService) msgCtx.getAxisEngine().getApplicationSession().get(msgCtx.getTargetService());
    Throwable myException = srv.getFaultCause();
    // Делаем всё, что надо с объектом myException 
    // ...
  }  catch  (SOAPException e) {
    e.printStackTrace();
  }  catch  (AxisFault e) {
    e.printStackTrace();
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Axis: обработка исключений в Handler.onFault(...) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]