169.11. 模式验证


从 Camel 2.11 开始提供

JAXB 数据格式支持通过从/到 XML 进行 marshalling 和 unmarshalling 的验证。您可以使用前缀 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>

Camel 将实时创建并池ling SchemaFactory 实例,因为 JDK 附带的 SchemaFactory 不安全。
但是,如果您有一个 SchemaFactory 实现是安全的线程,您可以将 JAXB 数据格式配置为使用此格式:

JaxbDataFormat jaxbDataFormat = new JaxbDataFormat();
jaxbDataFormat.setSchemaFactory(thradSafeSchemaFactory);
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.