FAQ

Ошибки и решения при создании маршрутов в Apache Camel:

Ошибка: AmbiguousMethodCallException

Пример кода, вызывающего ошибку:

<setProperty name="t1"> <simple>${exchangeProperty[t0].replace("es","")}</simple> </setProperty>

Описание ошибки:

org.apache.camel.component.bean.AmbiguousMethodCallException: Ambiguous method invocations possible: [public java.lang.String java.lang.String.replace(java.lang.CharSequence,java.lang.CharSequence), public java.lang.String java.lang.String.replace(char,char)] on the exchange: Exchange[ID-valery-TravelMate-P215-53-1731680655831-7-1]

Ошибка возникает, когда Camel не может однозначно выбрать подходящий метод для выполнения и выполняет сверку типа параметра с body:

methodInfo.getBodyParameterType().isInstance(body)

где, methodInfo.getBodyParameterType() - java.lang.CharSequence

Поэтому в данном случае ошибка проявляется, если body != String.

Решение

Для того чтобы решить эту проблему, нужно выбрать более однозначный метод:

<setProperty name="t1"> <simple>${exchangeProperty[t0].replaceAll("es","")}</simple> </setProperty>

Использование метода replaceAll() вместо метода replace().