158.10. スキーマ検証
Camel 2.11 から利用可能
JAXB データフォーマットは、XML からのマーシャリングおよびアンマーシャリングによる検証をサポートします。接頭辞 classpath:、file: または http: を使用して、リソースの解決方法を指定できます。',' 文字を使用して、複数のスキーマファイルを分離できます。
既知の問題
Camel 2.11.0 および 2.11.1 は、複数の 'Exchange' を並行して検証することで既知の問題があります。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 は適切に スキーマFactory
インスタンスを作成し、プールします。
ただし、スレッドセーフである SchemaFactory
実装がある場合は、JAXB データフォーマットをこれを使用するように設定できます。
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(); jaxbDataFormat.setSchemaFactory(thradSafeSchemaFactory);