私のアプリケーションでは、myEndpoint を使用する前に、エンドポイント URL にapplication.properties のsomeDataを入力し、header.nameとheader.myIdを完全に入力したいと考えています。
my_bean.xml:
<camel:camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >
<propertyPlaceholder id="properties" location="ref:myProps"/>
<endpoint id="myEndpoint" uri="...myUrl.../${header.name}/{{someData}}/${header.myId}"/>
<route id="myRoute" trace="true">
...
</route>
</camel:camelContext>
それは非常にうまく機能し、テストを作成し、すべてが素晴らしいユニットでした。別のクラスでこのエンドポイントを使用するクラスを使用するために、my_bean.xml を web.xml に追加しました。それを web.xml に追加した後、エラーが発生しました:
情報: Spring ルート WebApplicationContext を初期化しています lis 07, 2013 3:57:44 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: クラス org.springframework.web.context.ContextLoaderListener org.springframework のリスナー インスタンスにコンテキスト初期化イベントを送信する例外.beans.factory.BeanDefinitionStoreException: null で定義された名前 'myEndpoint' を持つ無効な Bean 定義: 文字列値のプレースホルダー 'header.name' を解決できませんでした: "http4:...myUrl.../${header.name}/ {{someData}}/${header.myId}"
私の一時的な解決策: header.nameとheader.myIdを application.properties ( someDataがある場所) に追加すると、再び機能しますが、この方法で行うべきではないことはわかっています。これらの値をプロパティに書き込まずに修正するにはどうすればよいですか?