2016-12-19 5 views
0

特定のテクノロジのカスタムコンポーネントを作成していますが、@UriPathアノテーションを持つ変数が初期化されていません。 @UriParamは大丈夫です。Camel UriPathアノテーションの不一致

私はKafkaとサーブレットの両方のコンポーネントのエンドポイントソースコードをチェックしましたが、本当にそれらと私の違いが何かを理解できませんでした。

キャメルのバージョンがある:2.18.1 Endpontが似ている

@UriEndpoint(scheme = "elastic", title = "ElasticSearch", syntax = "elastic:url", label = "elastic") 
public class ElasticSearchEndpoint extends DefaultEndpoint { 

    @UriPath 
    private String url; 

    @UriParam 
    private String searchType; 

    public ElasticSearchEndpoint(String endpointUri, ElasticSearchComponent component) { 
     super(endpointUri, component); 
    } 

    public Producer createProducer() throws Exception { 
     return new ElasticSearchProducer(this); 
    } 

    public Consumer createConsumer(Processor processor) throws Exception { 
     return null; 
    } 

    public boolean isSingleton() { 
     return false; 
    } 

    public String getUrl() { 
     return url; 
    } 

    public String getSearchType() { 
     return searchType; 
    } 

    public void setUrl(String url) { 
     this.url = url; 
    } 

    public void setSearchType(String searchType) { 
     this.searchType = searchType; 
    } 

} 

そしてコンポーネントがスプリングによって作成されます。

<bean id="elastic" class="elasticsearch.ElasticSearchComponent" /> 

任意のアイデア?

答えて

1

コンポーネントクラスから設定し、コンポーネントから明示的にsetUriを呼び出す必要があります。

UriParamのみが自動的に設定されます。

既存のCamelコンポーネントがどのように機能するかを確認してください。

エンドポイントはsingleton = trueである必要があります。