167.10. スキーマ検証
Camel 2.11 から利用可能
JAXB データ形式は、XML との間でマーシャリングおよびアンマーシャリングによる検証をサポートしています。接頭辞 classpath:、file:、または http: を使用して、リソースの解決方法を指定できます。',' 文字を使用して、複数のスキーマファイルを区切ることができます。
既知の問題
Camel 2.11.0 および 2.11.1 には、複数のエクスチェンジを並行して検証することによる既知の問題があります。CAMEL-6630 を参照してください。これは Camel 2.11.2/2.12.0 で修正されています。
Java DSL を使用すると、次のように設定できます。
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(); jaxbDataFormat.setContextPath(Person.class.getPackage().getName()); jaxbDataFormat.setSchema("classpath:person.xsd,classpath:address.xsd");
XML DSL を使用して同じことができます。
<marshal> <jaxb id="jaxb" schema="classpath:person.xsd,classpath:address.xsd"/> </marshal>
JDK に同梱されている SchemaFactory
はスレッドセーフではないため、Camel はその場で下層の SchemaFactory
インスタンスを作成してプールします。
ただし、スレッドセーフな SchemaFactory
実装がある場合は、JAXB データ形式を設定して、この実装を使用できます。
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(); jaxbDataFormat.setSchemaFactory(thradSafeSchemaFactory);