2017-10-24 9 views
0

CamelのXSLTコンポーネントには、いくつかの設定オプションがあります。リソースは、HTTP経由で来ている場合は文書によると、これらのオプションはApache Camel XSLTエンドポイントオプション(httpリソース

?option=value&option=value&... 

の形でURIに追加されているが、すべてのオプションは、HTTPリクエストのクエリ文字列として使用し、その後廃棄されます。 XsltComponent.javaから:

// if its a http uri, then append additional parameters as they are part of the uri 
if (ResourceHelper.isHttpUri(resourceUri)) { 
    resourceUri = ResourceHelper.appendParameters(resourceUri, parameters); 
} 

とResourceHelper.appendParameters():

if (!parameters.isEmpty()) { 
    String query = URISupport.createQueryString(parameters); 
    URI u = new URI(uri); 
    u = URISupport.createURIWithQuery(u, query); 
    parameters.clear(); 
    return u.toString(); 
} 
XsltComponent内のコメントは、私は、これが設計どおりに機能していると思わせるが、それはかなり一般的なシナリオでなければなりませんようにそれはそう

。誰かがこれを回避する方法を見つけましたか?リソースをローカルにコピーしたくないのは、変更の対象となるためです。

参考までに、私はSpring DSLアプリケーションの中でJava DSLを使用しています。

答えて

0

xsltコンポーネントのオプションではない追加のオプションだけがあります。例えば、がxsltコンポーネントのオプションではないため、xsltコンポーネントのオプションでない場合は、http urlで使用されます。リソースにアクセスできるように、いくつかのオプションを用意する必要があるかもしれません。

+0

応答のおかげで、クラウス。しかし、私は別の何かを見ている。 パラメータリストはResourceHelper.appendParameters()でクリアされ、XsltCopmonent.setProperties()が呼び出されるまでに空になります。 –

+0

JIRAをログに記録しますが、HTTPを介してxsltリソースをロードするには良いデザインではありません。これはちょっと薄れている可能性があります。しかし、これらのパラメータを踏むことは、http uriの前にエンドポイントで最初に設定する必要があります –