저는 스프링 프레임 워크없이 camel을 사용하고 있습니다 (대신 CDI 사용). 낙타 파일 구성 요소에 대한 필터를 설정하려면 어떻게해야합니까?cdi가있는 camel-file 구성 요소 필터
내 필터 클래스는 다음과 같습니다
@Named
@Stateless
public class MyFilter<T> implements GenericFileFilter<T> {
System.out.println("MyFilter was triggered");
.......
그래서 나는이 시도 :
<route>
<from uri="file://somewhere?filter=#myFilter"/>
<to uri="...."/>
</route>
그러나 내가 갖는 :
java.lang.IllegalArgumentException: Could not find a suitable setter for
property: filter as there isn't a setter method with same type:
java.lang.String nor type conversion possible: No type converter
available to convert from type: java.lang.String to the required type:
org.apache.camel.component.file.GenericFileFilter with value #myFilter
나는 무엇을 놓치고?
업데이트 :
콩이 등록되어 있습니다. 내가 사용하는 경우 :
<to uri="ejb:java:global/Abc/MyFilter?method=accept"/>
다음에 MyFilter was triggered
이 로그에 표시됩니다.
문제는 파일 구성 요소 필터를 구성하는 것입니다.
이것은 좋은 해결책이 아닙니다. 당신은'String'에서 당신이 사용하고있는 구현을 하드 코딩하는'GenericFileFilter'로 변환기를 설정하고 있습니다. 새로운'GenericFileFilter'를 추가한다면 이것은 작동하지 않을 것입니다. @Souciance가 말했듯이, 문제는'myFilter' 빈이 등록되어 있지 않다는 것입니다. 레지스트리를 생성하여 컨텍스트에 추가하는 것은 선호하는 방법이 아니지만 Spring을 사용하거나 Camel CDI 설정에서 손상된 부분을 해결해야합니다. 위의 예제에서 bean이 등록되었다고 말할 때 bean 이름을 사용하지 않지만 full path라는 것을 알 수 있습니다. – AndyN