2017-06-26 14 views
0

与えられた(JavaのEndpointインスタンスとして)FileEndpointからMasterEndpointを作成する必要があります。プログラムでMasterEndpointを作成する方法

通常は、目的のエンドポイントを拡張するクラスを作成し、コンストラクタまたはinitメソッドを使用して、必要なすべてのsetter(たとえば、コンテキストを設定する)を呼び出します。 場合によっては、ルートビルダー内でgetContext().getEndpoint("name", ClazzOfEndpoint.class)を使用するメソッドを作成します。

しかし、これをMasterEndpointで行うには(文字列リテラル/定数を使用しない方が良い)? MasterEndpointを拡張する際の問題は、それが使用する珍しいコンストラクタです。 getEndpointを使用する際の問題は、返されたマスターエンドポイントをFileEndpointに接続する方法です。

答えて

1

マスターコンポーネントはプログラムでビルドするように設計されていないため、実際には実行できません。文字列uriを使用してエンドポイントを設定します。これはCamelでエンドポイントを設定し定義するために推奨される方法です。それらを手動でプログラムしないでください。

+0

与えられたエンドポイントインスタンスを使用して文字列でマスターコンポーネントを設定する方法はありますか? – dermoritz

+0

"master:someName:xxx"という文字列から作成します.xxxxはエンドポイントのURLです。 –

+0

クイック返信ありがとうございます: "master:someName:" + fileEndpoint.getUrl名)?ファイルエンドポイントはシングルトンなので、他の場所で使用され、設定されているものと同じファイルエンドポイントにする必要があります。 – dermoritz

0

私は自分のニーズに合った方法が見つかりました:

まず、それは子供の一緒にマスターエンドポイントを作成します。

masterEndpoint = context.getEndpoint("master:fileLock:file:" + rootFolder, MasterEndpoint.class); 

プログラムで(私の場合FileEndpointで)子のエンドポイントを設定するには、マスターからそれを入手

fileEndpoint = (FileEndpoint) masterEndpoint.getEndpoint(); 
fileEndpoint.setAutoCreate(false); 
fileEndpoint.setAntInclude(ANT_INCLUDE); 
fileEndpoint.setMove(doneFolder); 
fileEndpoint.setMoveFailed(errorFolder); 

文字列で構成するのは非常に面倒(エラーが発生しやすい)です。

関連する問題