Как определить исключение, которое будет выброшено через ref в Apache Camel

Приходится создавать исключение в моем верблюжьем маршруте, определенном в XML. Найден оператор throwException, доступный в Camel 2.3, который выглядит так:

 <throwException ref="forced"></throwException>

Однако я не знаю, как определить класс исключения forced, который будет выбран. Поскольку одно и то же исключение может быть вызвано несколько раз с разными сообщениями об исключениях, было бы неплохо узнать, имеет ли throwException какую-либо другую форму определения, поэтому класс исключения и сообщение об исключении определяются на месте.


person Archer    schedule 30.04.2011    source источник


Ответы (2)


Ссылка - это просто ссылка на a, поэтому вы можете сделать

<bean id="forced" class="java.lang.IllegalArgumentException">
   <constructor-arg index="0" value="This is forced"/>
</bean>

<camelContext ...>
  ...
</camelContext>
person Claus Ibsen    schedule 30.04.2011
comment
Вы также можете заглянуть в каталог src/test/java исходного кода camel-spring, чтобы найти примеры использования ‹throwException› в XML. - person Claus Ibsen; 30.04.2011

Начиная с версии 2.16.0 есть более элегантный способ сделать это с необязательным сообщением об исключении:

<route>
     <throwException exceptionType="java.lang.IllegalArgumentException" message="illegal argument found"/>
</route>
person Enigo    schedule 19.05.2016