私は青写真とapache camel v2.12を使用しています。私のルートの1つでは、POSTリクエストを介してxmlを消費する突堤のエンドポイントを公開しています。私は別のバンドルのルートにあるxsdファイルに対してインバウンドxmlを検証したいと思います。私はその依存関係をpomファイルとfeatures.xmlの指定したバンドルに含めました。私は「SRC /メイン/リソースの作業モジュールの下sample.xsd配置した場合、私は、ログファイルApache Camel XML Validator
org.apache.camel.FailedToCreateRouteException: Failed to create route someId at: >>> To[validator:/sample.xsd] <<< in route: Route(someId)[[From[{{jetty.uri... because of Failed to resolve endpoint: validator:///sample.xsd due to: Cannot find resource: /sample.xsd in classpath for URI: /sample.xsd
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:912)[143:org.apache.camel.camel-core:2.12.0.redhat-610379]
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:177)[143:org.apache.camel.camel-core:2.12.0.redhat-610379]
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:778)[143:org.apache.camel.camel-core:2.12.0.redhat-610379]
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1955)[143:org.apache.camel.camel-core:2.12.0.redhat-610379]
で、次の例外を取得
<camel:route id="someId">
<camel:from uri="{{jetty.uri}}"/>
<camel:to uri="validator:/sample.xsd"/>
<camel:convertBodyTo type="java.lang.String"/>
<camel:to uri="{{to.target.uri}}" pattern="InOnly"/>
</camel:route>
その後、ラクダ:ここ
は私のルートの定義ですバリデーターコンポーネントはルックアップできます。正面からスラッシュ「/」を削除します<to uri="validator:sample.xsd"/>
私はスキーマを複製しないようにし、別のバンドルから参照するだけです。
私は、リソースが別のバンドルからXSDファイルを参照する方法助けてくださいロード可能かどうかとjarファイルの下
System.out.println(Test.class.getResource("/sample.xsd"));
をXSDを見つけることがそのことであるかどうかを確認するためのテストJavaクラスを書きました。
OSGiはこれでは難しいです、あなたはエクスポートする必要があります|これらの2つのバンドルの間にJavaパッケージをインポートし、そのパッケージにXSDファイルを入れてください。ルートパッケージを使用しないでください。 –
あなたの返信をありがとう。私はクラスパスリソースからxsdを引き出し、このBeanエンドポイントを使ってxmlを検証できるカスタムプロセッサーを書きました。 – user2191296