Глобальное onException для обработки нескольких классов RouteBuilder - PullRequest
0 голосов
/ 16 июля 2011

Мне нужно сделать onException, чтобы быть глобальным для всех создателей маршрутов, чтобы не переписывать одну и ту же строку для каждого создателя маршрутов, который я создаю.Текущая область для моего обработчика исключений - это верблюжий контекст для конкретного построителя маршрутов.Мне нужно сделать классы построителя маршрутов, r1 и r2, чтобы использовать один и тот же onException (). Process.

Текущая рабочая onException, которую я использую:

def configure {

     onException(classOf[CustomException]).process(exceptionProcessor).
       process(doExtraProcess)


    from(address).
            process(doSmth).
            process(doSmthElse)
  }

Когда я переместил onException() строка из метода configre находится на уровне класса, как показано ниже:

  onException(classOf[CustomException]).process(exceptionProcessor).
           process(doExtraProcess)

    def configure {

        from(address).
                process(doSmth).
                process(doSmthElse)
      }

Я получил эту ошибку:

Причина: org.apache.camel.FailedToCreateRouteException:Не удалось создать маршрут route52 в: >>> OnException [[class CustomException] -> [process [null], process [null]]] <<< в маршруте: Route [[From [direct: locus]] -> [OnException[[... потому что ref должен быть указан в: process [null]

Вызывается: java.lang.IllegalArgumentException: ref должен быть указан в: process [null]

1 Ответ

4 голосов
/ 17 июля 2011

Во-первых, onException () должен вызываться методом configure ().Далее вы можете просто использовать наследование для повторного использования обработки исключений.Просто создайте родительский класс RouteBuilder и поместите обычную обработку исключений в метод.Затем пусть каждый подкласс вызывает этот общий метод в своем методе configure () ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...