私は、Springフレームワークなしでcamelを使用しています(代わりにCDIを使用しています)。 ラクダファイルコンポーネントのフィルタを設定するにはどうすればよいですか?camel-fileコンポーネントフィルタ(cdi)
マイフィルタクラスは次のようになります。
@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
私は何をしないのですか?
更新:
Beanが登録されていることに注意してください。私が使用する場合:
<to uri="ejb:java:global/Abc/MyFilter?method=accept"/>
次にMyFilter was triggered
がログに表示されます。
だから、問題は、ファイル成分フィルタの設定についてです。
これは良い解決策ではありません。コンバーターを 'String'から' GenericFileFilter'に設定しています。このGenericFileFilterは、使用している実装をハードコードしています。新しい 'GenericFileFilter'を追加すると、これはうまくいかないでしょう。 @Soucianceは言ったように、問題は 'myFilter' beanが登録されていないことです。レジストリを作成し、それをコンテキストに追加する方法はお勧めできませんが、Springを使用するか、Camel CDIセットアップで壊れているものを解決する必要があります。上記の例では、Beanが登録されていると言いますが、そのBean名は使用していませんが、フルパスです。 – AndyN