168.11. 模式验证
可从 Camel 2.11 开始
JAXB 数据格式支持通过从/到 XML 的 marshalling 和 unmarshalling 进行验证。您可以使用前缀 classpath:、file: 或 http: 来指定资源应如何解析。您可以使用 ',' 字符分隔多个模式文件。
已知问题
Camel 2.11.0 和 2.11.1 通过验证并行多个 'Exchange's 来存在一个已知问题。请参阅 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>
Camel 将即时创建和池化 SchemaFactory
实例,因为 JDK 提供的 SchemaFactory
也不安全。
但是,如果您有可安全线程的 SchemaFactory
实现,您可以将 JAXB 数据格式配置为使用此数据格式:
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(); jaxbDataFormat.setSchemaFactory(thradSafeSchemaFactory);