我使用Apache的駱駝V2.12與藍圖。在我的一個路由中,我暴露了一個通過POST請求消耗xml的碼頭端點。我想驗證入站xml是否位於另一個包的根目錄中的xsd文件。我已將該依賴項包含在我的pom文件中,並在features.xml中指定了包。Apache的駱駝XML驗證
這裏是我的路由定義:
<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>
我得到的日誌文件
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]
以下異常,如果我把下工作的模塊 '的src/main /資源' sample.xsd然後駱駝驗證器組件能夠查找。我從前面刪除斜槓'/'
<to uri="validator:sample.xsd"/>
我想避免重複架構,只是從另一個包中引用它。
我寫了一個測試Java類,以檢查資源是否加載與否和它能夠找到下jar文件的XSD
System.out.println(Test.class.getResource("/sample.xsd"));
請幫助如何從不同的捆綁是指XSD文件。
OSGi是很難在這一點,你需要導出|導入這兩個包間的java包,並把XSD文件在該包,不使用根包 –
感謝您的答覆。我編寫了一個定製處理器,可以從classpath資源中提取xsd,並使用此bean端點驗證xml。 – user2191296